我正在开发一个web应用程序,它是一个servlet,它基本上充当了web服务的前端,im使用cxf作为web服务客户端,应用程序运行在SSL9.10服务器上,一切都很正常,直到项目所有者决定添加supprt,没有大问题,因为im使用CXF whitout spring,我设法在服务客户端的http管道中配置了WebLogic参数,还使用服务器密钥配置了密钥库,ca根证书和客户端证书,在开发tomcat实例下测试,工作正常。
当再次将应用程序重新部署到weblogic服务器时,问题开始出现,并开始出现奇怪的错误,第一个错误是:
java.lang.ClassCastException: com.sun.xml.ws.client.sei.SEIStub cannot be cast to org.apache.cxf.frontend.ClientProxy
at org.apache.cxf.frontend.ClientProxy.getClient然后我意识到weblogic正在加载它自己的JAX-WS实现,ok没有问题,只是添加了一个“weblogic.xml -web-inf-classes”设置为true的类,然后重新部署,现在我得到了这个异常:
java.lang.LinkageError: loader constraint violation: when resolving method "javax.xml.ws.Service.<init>(Ljava/net/URL;Ljavax/xml/namespace/QName;)V" the class loader (instance of weblogic/utils/classloaders/ChangeAwareClassLoader) of the current class, com/adinfi/imgsvc/cm/service/CMBGenericWebServiceService, and the class loader (instance of <bootloader>) for resolved class, javax/xml/ws/Service, have different Class objects for the type javax/xml/namespace/QName used in the signature那个错误让我感到困惑,我认为类路径有问题,所以我开始从应用程序中删除jars,但仍然得到了更多的链接错误,我得到的最后一个错误是:
java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "org/w3c/dom/UserDataHandler"下面是我的应用程序的"Web-Inf/lib/“目录现在的样子:
classes12.jar
classes12.zip
common.jar
common.resources.jar
commons-beanutils-1.8.0.jar
commons-discovery.jar
commons-logging-1.1.1.jar
commons-logging-api.jar
commons-logging-api-1.1.1.jar
cxf-2.2.5.jar
log4j-1.2.8.jar
ras.jar
runtimefw.jar
wsdl4j-1.6.2.jar
wss4j-1.5.8.jar
xalan-2.7.1.jar
xml-resolver-1.2.jar
XmlSchema-1.4.5.jar
xmlsec-1.4.3.jar你知道我做错了什么吗?提前感谢
发布于 2009-12-21 15:41:32
回滚prefer-web-inf-classes内容并按照CXF文档的中的WebLogic特定说明进行操作。更准确地说,按照第二个选项Pack war in an ear, deploy the ear with weblogic-application.xml中的说明,提供一个包含以下内容的weblogic-application.xml:
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
<application-param>
<param-name>webapp.encoding.default</param-name>
<param-value>UTF-8</param-value>
</application-param>
<prefer-application-packages>
<package-name>javax.jws.*</package-name>
</prefer-application-packages>
</weblogic-application>如果需要,请执行this post的其他步骤。
发布于 2013-08-29 18:58:43
我不太记得我是怎么解出来的。我想在我的pom.xml文件中删除stax-api的导入之后,这个问题就消失了。更准确地说,在我的例子中,我必须从poi-ooxml中排除它。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
<exclusions>
<exclusion>
<groupId>stax</groupId>
<artifactId>stax-api</artifactId>
</exclusion>
</exclusions>
</dependency>https://stackoverflow.com/questions/1938133
复制相似问题