假设您在JSF中有一个表示层,并且您的业务层是使用Web服务访问的。您如何从JSF调用您的Web服务?
我正在考虑让我的支持bean来调用Web服务,但我只是因为我可以使用Ajax和JSF连接到Web服务。你会选择什么?为什么?您可以推荐其他任何选择吗?
编辑:我在商务层使用Spring,也许这些信息可能有助于提出建议。
感谢。
答案 0 :(得分:10)
我将Web服务调用包装在服务类中,该服务类可通过托管bean访问。因此,前端不会知道数据是如何准确的 - 通过网络服务或通过任何其他方式。
答案 1 :(得分:3)
假设您在JSF中有一个表示层,并且您的业务层是使用Web服务访问的。您如何从JSF调用您的Web服务?
“经典”方法是在ManagedBean中注入JAX-WS代理工厂类(从WSDL生成):
public class ItemController {
@WebServiceRef(wsdlLocation = "http://localhost:8080/CatalogService/Catalog?wsdl")
private CatalogService service;
public DataModel getItems() {
if (model==null || index != firstItem){
model=getNextItems();
}
return this.model;
}
public DataModel getNextItems() {
Catalog port = service.getCatalogPort();
model = new ListDataModel(port.getItems( firstItem,batchSize));
return model;
}
}
的样本
答案 2 :(得分:2)
我将实现EJB并将它们作为Web服务(用于语言独立远程访问)在应用程序中公开,我将通过查找访问EJB并直接调用它们(以获得更好的性能)。不幸的是,你没有说出你正在使用什么平台,所以我无法确定我的建议是否可行。