cxf客户端依赖项

时间:2014-04-02 08:29:53

标签: java dependencies osgi cxf

我尝试通过CXF构建REST客户端。以下代码适用于junit环境。

JAXRSClientFactoryBean bean2 = new JAXRSClientFactoryBean();
bean2.setAddress("http://localhost:8181/cxf/treenodeService/");
bean2.setResourceClass(ITreeNodeService.class);
bean2.setProviders( Arrays.asList(new TreeNodeBeanProvider()) );
ITreeNodeService treeService = bean2.create(ITreeNodeService.class);

List<TreeNodeBean> treeNodeBeans = treeService.getNodes();
assertEquals("We expected only one node, the global", 1, treeNodeBeans.size());

但是如果我在osgi环境中尝试这个代码,它会因缺少依赖性而失败。那么这个代码在equinox / osgi环境中运行所需的最小依赖集是什么?

目前我已添加

javax.ws.rs.javax.ws.rs-api;bundle-version="2.0.0",
org.apache.cxf.cxf-rt-frontend-jaxrs;bundle-version="2.7.10",
org.apache.cxf.cxf-api;bundle-version="2.7.10",
org.apache.cxf.cxf-rt-core;bundle-version="2.7.10",
org.apache.cxf.cxf-rt-bindings-xml;bundle-version="2.7.10",
org.apache.cxf.cxf-rt-transports-http;bundle-version="2.7.10",
org.apache.cxf.cxf-rt-transports-http-jetty;bundle-version="2.7.10",
javax.wsdl;bundle-version="1.6.2",

更新-1-缺少相关性

这些是我从eclipse验证中得到的缺失依赖项。

  • com.wordnik.swagger.jaxrs.config
  • com.wordnik.swagger.jaxrs.listing
  • org.apache.ws.commons.schema
  • org.apache.ws.commons.schema.constants
  • org.apache.ws.commons.schema.extensions
  • org.apache.ws.commons.schema.resolver
  • org.apache.ws.commons.schema.utils

此致

1 个答案:

答案 0 :(得分:0)

好的,我没有把它弄好并且正在运行。所以我使用上面列出的依赖项切换到CXF - DOSGI。 (但不同的版本) 然后由于缺少http传输,我不得不解决另一个问题。最后,通过OSGI REST客户端访问REST服务的代码如下所示。

JAXRSClientFactoryBean sf = new JAXRSClientFactoryBean();
sf.setResourceClass(serviceClass);
sf.setAddress("http://" + getServerUrl() + "/cxf/" + serviceName);
sf.setProviders(providers);

ConduitInitiatorManager cim = sf.getBus().getExtension(ConduitInitiatorManager.class);
   cim.registerConduitInitiator("http://cxf.apache.org/transports/http", 
   new HTTPTransportFactory(sf.getBus()));

service = sf.create(serviceClass);

进一步阅读link