2013-02-20 2 views
0

мне нужно вызвать внешнюю WebService от моего пучка, который дислоцируется в Apache Felix контейнера (я не могу использовать ServiceMix, предохранитель ...) Я добавил расслоение cxf- dosgi (который можно загрузить с here) и добавьте следующие строки в моем pom.xml:OSGi расслоение как внешнее WebService клиент

    <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 предназначен для предоставления услуг как веб-сервисов, а не для вызова других веб-сервисов. Хотя, вероятно, он содержит некоторые api для вызова других веб-сервисов.

+0

Спасибо за ответ. В этом случае, что мне делать? Есть ли решение вызвать внешний веб-сервис? – BraveHeart

+0

Там определенно есть альтернативы. Как вы можете видеть из моего ответа «исправления», dosgi может содержать некоторый код, который можно использовать для вызова других веб-сервисов. –

0

Как-то используется реализация реализации jaxws оси. У вас, вероятно, есть ось2-jaxws-xxx.jar на вашем пути к классам. Попробуйте удалить его. Вместо этого будут использоваться jaxws JRA (что должно быть хорошо для оси и лучше для cxf).