Java 正在删除Axis2数据的SOA套件

Java 正在删除Axis2数据的SOA套件,java,web-services,weblogic,axis2,weblogic12c,Java,Web Services,Weblogic,Axis2,Weblogic12c,我们正在将WebLogic 10.3.5 web应用程序迁移到WebLogic 12.1.3,我们遇到了一个我们认为可能与web服务安全相关的问题。该应用程序使用Axis1.5.6调用SOA套件SOAP服务(仍在WebLogic10.3.5上运行)。禁用web服务安全性后,我们将返回预期的响应: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns3:getNamesResponse xmlns:ns2

我们正在将WebLogic 10.3.5 web应用程序迁移到WebLogic 12.1.3,我们遇到了一个我们认为可能与web服务安全相关的问题。该应用程序使用Axis1.5.6调用SOA套件SOAP服务(仍在WebLogic10.3.5上运行)。禁用web服务安全性后,我们将返回预期的响应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns3:getNamesResponse 
    xmlns:ns2="http://www.example.com/ABC/Common" 
    xmlns:ns3="http://www.example.com/ABC/Profile">
    <ns3:OperatingName>
        <ns3:Number>123456789</ns3:Number>
        <ns3:Name>Company Name, Inc.</ns3:Name>
    </ns3:OperatingName>
</ns3:getNamesResponse>

123456789
公司名称公司。
但一旦启用web服务安全性(使用Apache Rampart 1.5.2、Apache Neethi 2.0.5),我们就开始接收空响应:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ns2:getNamesResponse 
    xmlns:ns2="http://www.example.com/ABC/Profile" 
    xmlns:ns4="http://www.example.com/ABC/Common" />

奇怪的是,当通过SOA套件控制台查看时,从SOA返回web应用程序(启用了安全性)的响应看起来是正确的:

<message>
    <properties>
        <property  name="tracking.compositeInstanceId"  value="2110209"/>
        <property  name="tracking.ecid"  value="0058XKIkdpHFw00Fzzw0w00004Et005Kmk"/>
        <property  name="ws.wsu.id"  value="Body-Body_tTzuB5XmRNQPR7Y7"/>
    </properties>
    <parts>
        <part  name="getNamesResponse">
            <bp:getNamesResponse>
                <bp:OperatingName>
                    <bp:Number>123456789</bp:Number>
                    <bp:Name>Company Name, Inc.</bp:Name>
                </bp:OperatingName>
            </bp:getNamesResponse>
        </part>
    </parts>
</message>

123456789
公司名称公司。

未记录任何异常。还有其他人经历过并解决过此类问题吗

最后,我通过强制应用程序使用与应用程序捆绑的JAR文件,而不是WebLogic提供的文件,解决了这个问题。通过使用和一些尝试和错误,我指定了与构建SOAP消息时使用的应用程序捆绑的所有JAR,并在weblogic-application.xml中以如下内容结束:

<wls:prefer-application-packages>
       <wls:package-name>com.ctc.wstx.*</wls:package-name>
       <wls:package-name>javax.mail.*</wls:package-name>
       <wls:package-name>javax.mail.event.*</wls:package-name>
       <wls:package-name>javax.mail.internet.*</wls:package-name>
       <wls:package-name>javax.mail.search.*</wls:package-name>
       <wls:package-name>javax.mail.util.*</wls:package-name>
       <wls:package-name>javax.wsdl.*</wls:package-name>
       <wls:package-name>javax.wsdl.extensions.*</wls:package-name>
       <wls:package-name>javax.wsdl.factory.*</wls:package-name>
       <wls:package-name>javax.wsdl.xml.*</wls:package-name>
       <wls:package-name>org.apache.oro.*</wls:package-name>
       <wls:package-name>org.apache.xerces.*</wls:package-name>
       <wls:package-name>org.apache.axiom.*</wls:package-name>
       <wls:package-name>org.bouncycastle.*</wls:package-name>
       <wls:package-name>org.bouncycastle.asn1.*</wls:package-name>
       <wls:package-name>org.bouncycastle.crypto.*</wls:package-name>
       <wls:package-name>org.bouncycastle.i18n.*</wls:package-name>
       <wls:package-name>org.bouncycastle.jce.*</wls:package-name>
       <wls:package-name>org.bouncycastle.math.*</wls:package-name>
       <wls:package-name>org.bouncycastle.mozilla.*</wls:package-name>
       <wls:package-name>org.bouncycastle.ocsp.*</wls:package-name>
       <wls:package-name>org.bouncycastle.openssl.*</wls:package-name>
       <wls:package-name>org.bouncycastle.util.*</wls:package-name>
       <wls:package-name>org.bouncycastle.voms.*</wls:package-name>
       <wls:package-name>org.bouncycastle.x509.*</wls:package-name>
       <wls:package-name>org.codehaus.stax2.*</wls:package-name>
       <wls:package-name>org.jaxen.*</wls:package-name>
       <wls:package-name>org.jaxen.dom.*</wls:package-name>
       <wls:package-name>org.jaxen.dom4j.*</wls:package-name>
       <wls:package-name>org.jaxen.expr.*</wls:package-name>
       <wls:package-name>org.jaxen.function.*</wls:package-name>
       <wls:package-name>org.jaxen.javabean.*</wls:package-name>
       <wls:package-name>org.jaxen.jdom.*</wls:package-name>
       <wls:package-name>org.jaxen.pattern.*</wls:package-name>
       <wls:package-name>org.jaxen.saxpath.*</wls:package-name>
       <wls:package-name>org.jaxen.util.*</wls:package-name>
       <wls:package-name>org.jaxen.xom.*</wls:package-name>
       <wls:package-name>org.slf4j.*</wls:package-name>
       <wls:package-name>org.slf4j.helpers.*</wls:package-name>
       <wls:package-name>org.slf4j.impl.*</wls:package-name>
       <wls:package-name>org.slf4j.spi.*</wls:package-name>
       <wls:package-name>org.apache.axis2.*</wls:package-name>
       <wls:package-name>org.opensaml.*</wls:package-name>
       <wls:package-name>org.apache.neethi.*</wls:package-name>
    </wls:prefer-application-packages>  

com.ctc.wstx*
javax.mail*
javax.mail.event*
javax.mail.internet*
javax.mail.search*
javax.mail.util*
javax.wsdl*
javax.wsdl.extensions*
javax.wsdl.factory*
javax.wsdl.xml*
org.apache.oro*
org.apache.xerces*
org.apache.axiom*
org.bouncycastle*
org.bouncycastle.asn1*
org.bouncycastle.crypto*
org.bouncycastle.i18n*
org.bounchycastle.jce*
org.bouncycastle.math*
org.bouncycastle.mozilla*
org.bouncycastle.ocsp*
org.bouncycastle.openssl*
org.bounchycastle.util*
org.bounchycastle.voms*
org.bouncycastle.x509*
org.codehaus.stax2*
org.jaxen*
org.jaxen.dom*
org.jaxen.dom4j*
org.jaxen.expr*
org.jaxen.function*
org.jaxen.javabean*
org.jaxen.jdom*
org.jaxen.pattern*
org.jaxen.saxpath*
org.jaxen.util*
org.jaxen.xom*
org.slf4j*
org.slf4j.helpers*
org.slf4j.impl*
org.slf4j.spi*
org.apache.axis2*
org.opensaml*
org.apache.neethi*

Classloader分析工具还帮助我们识别并消除重复和冗余的JAR文件,我们从EAR文件中删除了这些文件。

您是否检查了日志中的错误?Weblogic有自己的XML库,因此可能是库冲突。您使用的是相同的soap请求吗?我知道应该有新的安全标签(WS-security 1.1,等等),SOA内部客户端可能直接到达您的端点(绕过安全层)。日志并不表示任何类型的故障。SOAP客户机代码没有更改,上面概述的客户机组件的版本也没有更改(rampart等)。在我看来,SOA绕过了安全性,然后我们会得到一个安全性异常。从安全的角度来看,一切似乎都正常。删除的只是响应XML。如果从SoapUi或其他工具调用SOA端点,会得到什么?我想检查您在EnterpriseManager控制台中看到的响应是否真的是发送的响应。我将在您的SOA套件服务器中打开WSM上的日志记录。原因是,您的BPEL或中介可能会显示一切正常,但您的WSM策略可能不正常。