2013-02-20 47 views
0

我需要從我的包被部署在阿帕奇菲利克斯容器調用外部Web服務(我不能使用的ServiceMix,保險絲...) 我加管束cxf- dosgi(可從here下載),並把下面的線在我的pom.xml:OSGi包作爲外部Web服務客戶端

    <Require-Bundle>cxf-dosgi-ri-singlebundle-distribution</Require-Bundle> 
        <Import-Package> 
         javax.jws, 
         javax.xml.bind, 
         javax.xml.bind.annotation, 
         javax.xml.namespace, 
         javax.xml.ws, 
         META-INF.cxf, 
         org.apache.cxf, 
         org.apache.cxf.binding, 
         org.apache.cxf.binding.soap, 
         org.apache.cxf.binding.soap.spring, 
         org.apache.cxf.bus, 
         org.apache.cxf.bus.resource, 
         org.apache.cxf.bus.spring, 
         org.apache.cxf.buslifecycle, 
         org.apache.cxf.catalog, 
         org.apache.cxf.configuration, 
         org.apache.cxf.configuration.spring, 
         org.apache.cxf.endpoint, 
         org.apache.cxf.headers, 
         org.apache.cxf.management, 
         org.apache.cxf.phase, 
         org.apache.cxf.resource, 
         org.apache.cxf.transport, 
         org.apache.cxf.transport.http, 
         org.apache.cxf.transport.http.policy, 
         org.apache.cxf.transport.http_jetty, 
         org.apache.cxf.transports.http, 
         org.apache.cxf.workqueue, 
         org.apache.cxf.ws.policy.builder.jaxb, 
         org.apache.cxf.wsdl, 
         org.apache.cxf.wsdl11, 
         org.apache.cxf.jaxws.*, 
         * 
        </Import-Package> 

我使用JAXWS的方式來建立通信:

QName SERVICE_NAME = new QName("http://test.com/", "MockImplService"); 
Service service = Service.create(new URL(endpointAddress + "?wsdl"), SERVICE_NAME);   
mockService= service.getPort(IMock.class);             

當我跑我有以下異常的例子:

Caused by: javax.xml.ws.spi.FactoryFinder$ConfigurationError: Provider org.apache.axis2.jaxws.spi.Provider not found 
     at javax.xml.ws.spi.FactoryFinder$2.run(FactoryFinder.java:138) 
     at javax.xml.ws.spi.FactoryFinder.doPrivileged(FactoryFinder.java:282) 
     at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:125) 
     at javax.xml.ws.spi.FactoryFinder.access$200(FactoryFinder.java:42) 
     at javax.xml.ws.spi.FactoryFinder$3.run(FactoryFinder.java:273) 
     at javax.xml.ws.spi.FactoryFinder.doPrivileged(FactoryFinder.java:282) 
     at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:168) 
     at javax.xml.ws.spi.Provider.provider(Provider.java:39) 
     at javax.xml.ws.Service.<init>(Service.java:36) 
     at javax.xml.ws.Service.create(Service.java:116) 

任何想法嗎?

回答

0

Apache DOSGi旨在將服務作爲web服務公開,而不是調用其他web服務。雖然,它可能包含一些API來調用其他Web服務。

+0

感謝您的回答。在這種情況下,我應該怎麼做?有沒有解決方案來調用外部webService? – BraveHeart 2013-02-20 18:48:16

+0

肯定有替代品。正如你從我的回答「糾正」中看到的,dosgi可能包含一些可用於調用其他web服務的代碼。 – 2013-02-20 18:52:42

0

以某種方式使用軸jaxws實現。你的類路徑中可能有一個axis2-jaxws-xxx.jar。嘗試刪除它。 JRA jaxws將被用來代替(這對軸應該是好的,對於cxf應該更好)。