2011-02-08 83 views
1

我试图部署在具有CXF作为依赖GF V3战争,我得到以下异常:部署WAR与CXF GlassFish v3中

[#|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目录中的传递依赖项,但是我自从删除了它并仍然遇到相同的错误。

没有用的时候出现在搜索谷歌,我在这里输了。

有人知道这里可能会发生什么吗?

编辑#1

的这另一个症状是为部署Web服务的测试页面将无法正常工作。

+0

在这个具有讽刺意味的是,每个人(包括我)抱怨轴,但这个应用程序完美地与Axis :) – javamonkey79 2011-02-12 18:55:48

回答

3

我和我的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 

显然,所需的文件坐错罐子 “太阳的JavaEE-engine.jar”。

以上,“sun-javaee-engine.jar”由“Java EE服务引擎模块”加载。一旦我删除了模块(使用glassfish更新工具),一切都开始正常工作。

编辑#1: 这里是如何使用的Unix命令行上的更新工具删除模块:

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

甜,谢谢!我为此苦苦挣扎了太久。 – javamonkey79 2011-08-12 00:19:20