2009-12-21 66 views
1

我正在开发一个Web应用程序,它是一个基本上充当Web服务前端的servlet,即时使用Web服务客户端的CXF,应用程序运行在WebLogic 9.10服务器上,每一件事情都工作正常,直到项目所有者决定添加ssl supprt,没有什么大问题,因为即时通讯使用cxf whitout spring,我设法在服务客户端的http管道中配置TLS参数,还配置了一个keystore whit服务器密钥,ca根证书和客户端证书,在开发的tomcat实例下测试并且工作正常。重新部署应用程序再次WebLogic Server并开始收到奇怪的错误时CXF + SSL + WebLogic 9.10

问题开始,第一个是:

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的,否万阿英,蒋达清,只是增加了一个weblogic.xml丝毫“喜欢-WEB-INF类”设置为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 

这一个有我,我还以为出事了丝毫的类路径,所以我开始从应用程序中删除jar和stil我了一些链接错误,最后一个我得到的是这样的:

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 

任何想知道我做错了什么?在此先感谢

回答

5

回滚prefer-web-inf-classes的东西,并遵循CXF文档的Application Server Specific Configuration Guide的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额外的步骤,如果需要的。

+0

哇不知何故设法错过了那一块文件....现在我马上工作,会立即尝试,谢谢你的答复=) – Harima555 2009-12-21 12:45:55

0

我不记得我是如何解决它的。 我认为这个问题在我的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>