2

我的问题涉及 CXF 和 wsdl4j_1.6.2.jar 与某些东西碰撞,大概是 axis-wsdl4j.jar。

我已阅读:我的 Apache CXF 客户端有什么问题?

我的项目不包括战争中的axis-wsdl4j.jar。我还要求我们的管理员将 Websphere 切换到 Parent Last。我仍然得到这个:

[12/13/12 16:01:28:378 CST] 0000001b ServletWrappe E SRVE0068E:在 servlet 的服务方法之一中抛出未捕获的异常:CXFServlet。抛出异常: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: javax/wsdl/xml/WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;) Ljavax/wsdl /定义; 在 org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116) 在 org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:322) 在 org.apache.cxf.transport.ChainInitiationObserver.onMessage (ChainInitiationObserver.java:122) 在 org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:211) 在 org.apache.cxf.transport.servlet。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 $1.run(AsyncChannelFuture.java:205) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473) 原因:org.apache.cxf.interceptor.Fault:javax/wsdl/xml/ WSDLReader.readWSDL(Ljavax/wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; 在 org.apache.cxf.service.invoker.AbstractInvoker。createFault(AbstractInvoker.java:162) at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:128) at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:167) at org .apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:94) at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage( ServiceInvokerInterceptor.java:94) at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262) ... 26 更多原因:java.lang.NoSuchMethodError: javax/wsdl/xml/WSDLReader.readWSDL(Ljavax /wsdl/xml/WSDLLocator;Lorg/w3c/dom/Element;)Ljavax/wsdl/Definition; 在 org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.

项目由 Maven 构建,仅通过 Continuum 部署到 Websphere;并且所有设置都通过请求更改。应用程序在本地 Tomcat 上完美运行。

编辑:这最终通过以下方式修复:

  1. 将 wsdl4j.jar 复制到 /usr/WebSphere/AppServer/appLibs/APPNAME 目录。
  2. 以前的 Chmod 775。
  3. 在 websphere 管理控制台中,环境(左侧)、共享库,并定义一个容器范围的共享库,上面的名称为 APPNAME。
  4. 将 jar 添加到共享库的类路径中。
  5. 服务器(左侧)、APPNAME java、进程管理、类加载器,并确保“首先使用应用程序类加载器加载类”
  6. 单击类加载器并将共享库分配给它。
  7. 重启服务器
4

2 回答 2

0

我认为您需要禁用 Jax ws 引擎

尝试如下设置 JVM 属性

com.ibm.websphere.webservices.DisableIBMJAXWSEngine=true
于 2012-12-13T22:42:10.343 回答
0

这就是我要做的。

在 WAS 运行时打开详细类加载并查看包含 WSDLReader 的 JAR。

根据详细的类加载,检查这是否是您希望在运行时(开始时)使用的 JAR。

高温高压

于 2012-12-14T00:59:41.627 回答