我有一个问题,我在wildfly8(jboss 8)服务器上使用Primefaces 4.0。
我在本地使用相同的服务器,其设置与在生产中部署应用程序的远程服务器相同。
当我将应用程序部署到远程服务器时,p:dataTable为空。只有使用primefaces LazyDataModel的表是空的。
日志中没有错误。
我还试图在本地服务器上部署我部署到远程服务器的maven构建耳朵,并且本地工作正常。显然远程服务器上有一些区别,但我看不出它是什么,standalone.xml在本地和远程是相同的
任何可能导致这种奇怪行为的暗示?
我已经放了一些打印来查看代码中发生了什么,并且在count方法中我得到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 :(得分:0)
我已经解决了这个问题
在wildfly 8.0 FINAL版本中看起来standalone.xml已经改变了,localy我从20.2.2014获得了8.0 FINAL,在服务器上我从2014年4月18日获得了8.0 FINAL
在比较两台服务器的standalone.xml后,它们不同
所以我开始合并它们,我认为这部分是从ejb3子系统中丢失的
<subsystem xmlns="urn:jboss:domain:ejb3:2.0>
<stateless>
<bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>
</stateless>
不是这个标志的作用,但是在插入这个文本之后,这个表面的表格已经充满了数据。