从您的JSF代码调用Web服务

时间:2010-05-17 18:09:48

标签: java ajax web-services jsf

假设您在JSF中有一个表示层,并且您的业务层是使用Web服务访问的。您如何从JSF调用您的Web服务?

我正在考虑让我的支持bean来调用Web服务,但我只是因为我可以使用Ajax和JSF连接到Web服务。你会选择什么?为什么?您可以推荐其他任何选择吗?

编辑:我在商务层使用Spring,也许这些信息可能有助于提出建议。

感谢。

3 个答案:

答案 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;
    }
}

取自Sample Application using JAX-WS, JSF, EJB 3.0, and Java

的样本

答案 2 :(得分:2)

我将实现EJB并将它们作为Web服务(用于语言独立远程访问)在应用程序中公开,我将通过查找访问EJB并直接调用它们(以获得更好的性能)。不幸的是,你没有说出你正在使用什么平台,所以我无法确定我的建议是否可行。