2014-04-18 20 views
0

我有一個問題,我在wildfly8(jboss 8)服務器上使用Primefaces 4.0。Primefaces LazyDataModel產生本地比遠程服務器不同的輸出

我有比在該應用程序將在生產中部署的遠程服務器相同的設置本地同一臺服務器。

當我部署應用遠程服務器號碼:dataTable的是空的。只有使用primefaces LazyDataModel的表是空的。

日誌中沒有錯誤。

我也曾嘗試部署Maven構建的耳朵,我部署到遠程服務器也會在本地服務器上,並在本地工作,因爲它應該。顯然,在遠程服務器上的一些差異,但我無法看到它可能是什麼,在standalone.xml是相同的本地和遠程

任何提示什麼可能導致這種奇怪的行爲?

我已經把一些打印,看看代碼中發生了什麼,並在計數方法我得到4520返回,所以SQL工作正常問題是,在xhtml,如果我把#{billsBean.billsData.rowCount}就在前面的表數據應該是我得到0在本地計算機上的相同的看法和相同的代碼,我得到4520

所以看起來得到的數據表中的渲染某處丟失。

@Named 
@Stateless 
public class LazyBillsDataModel extends LazyDataModel<Bill> implements Serializable { 

private static final long serialVersionUID = -6488655263171321725L; 

@Inject 
@DomainsDB 
private EntityManager em; 

@EJB 
BillHandler billHandler; 

@Inject private Logger log; 

public LazyBillsDataModel() { 
    super(); 
} 

@Override 
public List<Bill> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) { 
    System.out.println(">>>>>>>> enetering load data for BILLS"); 
    log.debug(">>>>>>>> enetering load data for BILLS"); 

    if (sortField == null || sortField.equals("")) { 
     sortField = "bill.dateCreate"; 
    } 

    List<Bill> data = selectData(first, pageSize, sortField, DataUtilsWeb.transformSortOrder(sortOrder), filters); 
    // row count 
    this.setRowCount(count(filters)); 

    return data; 
} 

private int count(Map<String, String> filters) { 
    String hql = "select count(bill.idBill) from Bill bill "; 
    if (filters != null && filters.size() > 0) { 
     hql += " where " + prepereWhereFilters(filters); 
    } 

    Query query = em.createQuery(hql); 
    fillQueryWitkFilterData(query, filters); 

    System.out.println(">>>>>>>> count " + ((Long) query.getSingleResult()).intValue()); 

    return ((Long) query.getSingleResult()).intValue(); 
} 

@SuppressWarnings("unchecked") 
private List<Bill> selectData(int first, int pageSize, String sortField, String sortOrder, Map<String, String> filters) { 

    List<Bill> data = new ArrayList<Bill>(); 

    String hql = "select bill from Bill bill left join fetch bill.organization left join fetch bill.billType left join fetch bill.billStatus "; 

    if (filters != null && filters.size() > 0) { 
     hql += " where " + prepereWhereFilters(filters); 
    } 

    // sorting 
    if (sortField != null && !sortField.equals("")) { 
     hql += " order by " + sortField; 
     if (sortOrder != null && !sortOrder.equals("")) { 
      hql += " " + sortOrder; 
     } 
    } 

    Query query = em.createQuery(hql); 
    fillQueryWitkFilterData(query, filters); 

    // define query boundaries 
    query.setFirstResult(first); 
    query.setMaxResults(pageSize); 
    data = (List<Bill>) query.getResultList(); 

    System.out.println(">>>>>>>> BILLS laoded num : " + data.size()); 
    log.debug(">>>>>>>> BILLS laoded num : " + data.size()); 

    return data; 
} 

...... 
} 
+0

確保兩者都指向相同的數據庫。 – Makky

+0

@Makky當然他們指向同一個數據庫。 :-) – simonC

回答

0

我已經解決了這個問題

它看起來像standalone.xml在wildfly 8.0最終版本已經改變,localy我從2014年2月20日有8.0終局的,對服務器我有8.0 FINAL從2014年4月18日

而且standalone.xml從這兩個服務器的比較後,他們不同

所以我就開始把它們合併,我FOUT這部分沃斯從EJB3子系統缺少

<subsystem xmlns="urn:jboss:domain:ejb3:2.0> 

    <stateless> 
     <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/> 
    </stateless> 

不舒爾這個標誌做什麼,但插入這段文字後primfaces表apeared全面的數據。

相關問題