Развертывание WAR с CXF в Glassfish V3 - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь развернуть WAR в GF V3 с CXF в качестве зависимости и получаю следующее исключение:

[#|2011-02-08T07:34:15.736-0800|WARNING|oracle-glassfish3.0.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=32;_ThreadName=http-thread-pool-8080-(2);|StandardWrapperValve[MyServlet]: PWC1406: Servlet.service() for servlet MyServlet threw exception
com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.pipe.TransportPipeFactory: Provider com.sun.enterprise.jbi.serviceengine.bridge.transport.JBITransportPipeFactory is specified in bundle://254.0:0/META-INF/services/com.sun.xml.ws.api.pipe.TransportPipeFactory but not found
        at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:241)
        at com.sun.xml.ws.util.ServiceFinder.access$100(ServiceFinder.java:141)
        at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:376)
        at com.sun.xml.ws.api.pipe.TransportTubeFactory.create(TransportTubeFactory.java:129)
        at com.sun.xml.ws.transport.DeferredTransportPipe.<init>(DeferredTransportPipe.java:82)
        at com.sun.xml.ws.api.pipe.ClientTubeAssemblerContext.createTransportTube(ClientTubeAssemblerContext.java:311)
        at com.sun.xml.ws.assembler.jaxws.TransportTubeFactory.createTube(TransportTubeFactory.java:62)
        at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:77)
        at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:121)
        at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:224)
        at com.sun.xml.ws.client.Stub.<init>(Stub.java:201)
        at com.sun.xml.ws.client.Stub.<init>(Stub.java:174)
        at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:81)
        at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:602)
        at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:344)
        at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:326)
        at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:308)
        at javax.xml.ws.Service.getPort(Service.java:99)
        at com.mycompany.myapp.webserviceclient.SomeWebserviceService.getSomeWebservicePort(SomeWebserviceService.java:58)

Эта сортировка указывает мне, что в моем каталоге WAR \ lib есть пакет, который вызывает проблемы, но когда я раскрываю WAR и выполняю поиск в META-INF \ services, я не нахожу ничего похожего на то, что изложены в исключении.

У меня изначально был CXF и его переходные зависимости в war \ lib dir, но с тех пор я удалил его и все еще сталкиваюсь с той же ошибкой.

Ничего полезного не получается при поиске в Google, и я здесь в растерянности.

Кто-нибудь знает, что здесь может происходить?

РЕДАКТИРОВАТЬ # 1

Еще одним признаком этого является то, что страницы тестера для развернутых веб-служб не будут работать должным образом.

1 Ответ

3 голосов
/ 11 мая 2011

У меня была похожая проблема с моим glassfish3.1. Ниже приведена трассировка стека

Caused by: com.sun.xml.ws.util.ServiceConfigurationError: com.sun.xml.ws.api.pipe.TransportPipeFactory: Provider com.sun.enterprise.jbi.serviceengine.bridge.transport.JBITransportPipeFactory is specified in bundle://96.0:0/META-INF/services/com.sun.xml.ws.api.pipe.TransportPipeFactory but not found
    at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:245)
    at com.sun.xml.ws.util.ServiceFinder.access$100(ServiceFinder.java:145)
    at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next(ServiceFinder.java:380)
    at com.sun.xml.ws.api.pipe.TransportTubeFactory.create(TransportTubeFactory.java:133)
    at com.sun.xml.ws.transport.DeferredTransportPipe.<init>(DeferredTransportPipe.java:86)
    at com.sun.xml.ws.api.pipe.ClientTubeAssemblerContext.createTransportTube(ClientTubeAssemblerContext.java:315)
    at com.sun.xml.ws.assembler.jaxws.TransportTubeFactory.createTube(TransportTubeFactory.java:67)
    at com.sun.xml.ws.assembler.TubeCreator.createTube(TubeCreator.java:84)
    at com.sun.xml.ws.assembler.TubelineAssemblerFactoryImpl$MetroTubelineAssembler.createClient(TubelineAssemblerFactoryImpl.java:130)
    at com.sun.xml.ws.client.Stub.createPipeline(Stub.java:228)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:205)
    at com.sun.xml.ws.client.Stub.<init>(Stub.java:178)
    at com.sun.xml.ws.client.sei.SEIStub.<init>(SEIStub.java:85)
    at com.sun.xml.ws.client.WSServiceDelegate.createEndpointIFBaseProxy(WSServiceDelegate.java:608)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:348)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:330)
    at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:312)
    at javax.xml.ws.Service.getPort(Service.java:134)
    at org.glassfish.webservices.monitoring.WebServiceTesterServlet.initializePort(WebServiceTesterServlet.java:563)
    at org.glassfish.webservices.monitoring.WebServiceTesterServlet.doGet(WebServiceTesterServlet.java:169)
    at org.glassfish.webservices.monitoring.WebServiceTesterServlet.invoke(WebServiceTesterServlet.java:104)
    at org.glassfish.webservices.EjbWebServiceServlet.service(EjbWebServiceServlet.java:114)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
    at com.sun.grizzly.http.servlet.ServletAdapter$FilterChainImpl.doFilter(ServletAdapter.java:1002)
    ... 20 more

Проблема связана с конфликтующими отображениями для com.sun.xml.ws.api.pipe.TransportPipeFactory внутри двух разных модулей.

prompt> grep -rl com.sun.xml.ws.api.pipe.TransportPipeFactory /usr/local/glassfish-3.1/glassfish/domains/modules*

modules/webservices-osgi.jar
modules/sun-javaee-engine.jar

prompt> grep -rl com.sun.enterprise.jbi.serviceengine.bridge.transport.JBITransportPipeFactory /usr/local/glassfish-3.1/glassfish/domains/modules/*
modules/sun-javaee-engine.jar

Очевидно, что нужный файл находился не в том банке "sun-javaee-engine.jar".

Выше «sun-javaee-engine.jar» загружается «модулем сервисного ядра Java EE». Как только я удалил модуль (с помощью инструмента обновления Glassfish), все стало работать нормально.

РЕДАКТИРОВАТЬ # 1: Вот как удалить модуль с помощью инструмента обновления в командной строке Unix:

sudo ./pkg uninstall sun-javaee-engine
...