【问题标题】:CXF + SSL + WebLogic 9.10CXF + SSL + WebLogic 9.10
【发布时间】:2009-12-21 04:09:20
【问题描述】:

我正在开发一个 Web 应用程序,它是一个基本上充当 Web 服务前端的 servlet,我使用 CXF 作为 Web 服务客户端,该应用程序在 WebLogic 9.10 服务器上运行,一切正常,直到项目所有者决定添加 ssl 支持,没有什么大问题,因为我使用 cxf whitout spring,我设法在服务客户端的 http 管道中配置了 TLS 参数,还配置了一个密钥库,包括服务器密钥、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 实现,好吧,没有问题,只是添加了一个 weblogic.xml,将“prefer-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

知道我做错了什么吗?提前谢谢

【问题讨论】:

    标签: java weblogic jax-ws cxf weblogic9.x


    【解决方案1】:

    回滚 prefer-web-inf-classes 内容并按照 CXF 文档的 Application Server Specific Configuration Guide 中的 WebLogic 特定说明进行操作。 更准确地说,提供weblogic-application.xml,如第二个选项Pack war in an ear, deploy the ear with 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 的其他步骤操作。

    【讨论】:

    • 哇,不知何故错过了那篇文档....现在我开始工作了,将立即尝试,感谢您的回复 =)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-14
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      相关资源
      最近更新 更多