【发布时间】:2012-02-13 07:28:07
【问题描述】:
我正在尝试在 websphere 6.1 上部署基于 jax ws axis2 的 Web 服务。它在tomcat 5.5中正常工作
我一直按照此链接提供的 axis2 在线文档中描述的步骤进行操作
Avoiding conflicts with WebSphere's JAX-WS runtime
服务似乎部署正确(系统输出中没有消息错误)并在请求时返回 wsdl 文件。我还可以使用 Web 服务上的模块进行日志记录。
从客户端调用服务时出现问题:它返回一个WebFault
服务器上的Stacktrace如下
[10/02/12 16.58.59:861 CET] 0000001e FactoryRegist E org.apache.axis2.jaxws.registry.FactoryRegistry null com.sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl 处的 java.lang.VerifyError。(RuntimeBuiltinLeafInfoImpl.java:224) 在 java.lang.J9VMInternals.initializeImpl(Native Method) 在 java.lang.J9VMInternals.initialize(J9VMInternals.java:194) 在 com.sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.(RuntimeTypeInfoSetImpl.java:61) 在 com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:127) 在 com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.java:79) 在 com.sun.xml.bind.v2.model.impl.ModelBuilder.(ModelBuilder.java:152) 在 com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.(RuntimeModelBuilder.java:87) 在 com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:422) 在 com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:286) 在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:139) 在 com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:117) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:618) 在 javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:214) 在 javax.xml.bind.ContextFinder.find(ContextFinder.java:375) 在 javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:574) 在 javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:522) 在 org.apache.axis2.jaxws.addressing.factory.impl.JAXWSEndpointReferenceFactoryImpl$1.run(JAXWSEndpointReferenceFactoryImpl.java:61) 在 org.apache.axis2.java.security.AccessController.doPrivileged(AccessController.java:132) 在 org.apache.axis2.jaxws.addressing.factory.impl.JAXWSEndpointReferenceFactoryImpl.(JAXWSEndpointReferenceFactoryImpl.java:56) 在 org.apache.axis2.jaxws.registry.FactoryRegistry.init(FactoryRegistry.java:122) 在 org.apache.axis2.jaxws.registry.FactoryRegistry.(FactoryRegistry.java:97) 在 java.lang.J9VMInternals.initializeImpl(Native Method) 在 java.lang.J9VMInternals.initialize(J9VMInternals.java:194) 在 org.apache.axis2.jaxws.message.util.MessageUtils.getMessageFromMessageContext(MessageUtils.java:145) 在 org.apache.axis2.jaxws.core.MessageContext.(MessageContext.java:120) 在 org.apache.axis2.jaxws.server.JAXWSMessageReceiver.receive(JAXWSMessageReceiver.java:124) 在 org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) 在 org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172) 在 org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) 在 wgs.v3.servlet.JetAxisServlet.doPost(JetAxisServlet.java:30) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:763) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:856) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1096) 在 com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:570) 在 com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478) 在 com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444) 在 com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267) 在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815) 在 com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466) 在 com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387) 在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267) 在 com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214) 在 com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113) 在 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) 在 com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) 在 com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) 在 com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136) 在 com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195) 在 com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743) 在 com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873) 在 com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
解决这个问题并查看库的源代码,发现错误发生在 JAXBContext newIstance 方法中
在类加载器上启用跟踪日志显示为从 PARENT 加载 javax.xml.datatype.DatatypeConstants 类,因为在 WAR 模块中找不到它,这会产生 java.lang.VerifyError
我找不到解决办法
【问题讨论】:
-
在解决问题后,似乎 java.lang.VerifyError 来自此代码 JAXBContext.newInstance(W3CEndpointReference.class, SubmissionEndpointReference.class);
标签: jax-ws axis2 websphere-6.1