我正在使用带有 jax-ws 的简单 java 程序调用 switchyard Web 服务。我们的生产服务器是带有switchyard 1.1的jboss eap 6.1,我正在使用wildfly 10.1.0和switchyard 2.1进行测试。在这两种环境中,情况都是一样的,当我调用 Web 服务时,尽管服务器响应(通过跟踪)看起来不错,但返回始终为 null。
请求/响应示例:
要求:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns3:identifyUser xmlns:ns3="urn:pt.ipc.pio:pio-organizationservices:1.0" xmlns:ns2="urn:pt.ipc.pio.model.organization:1.0">
<identifyUserInput>
<userName>****************</userName>
</identifyUserInput>
</ns3:identifyUser>
</S:Body>
</S:Envelope>
回复:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
<soap:Body>
<identifyUserResponse xmlns="urn:pt.ipc.pio:pio-organizationservices:1.0">
<ns2:userIdentity xmlns:ns2="urn:pt.ipc.pio.model.organization:1.0">
<uniqueId>**********</uniqueId>
<personalData>
<nif>**********</nif>
<name>**********************</name>
<gender>*</gender>
<identification>********</identification>
</personalData>
<ous>
<ou>****</ou>
<numSGA>********</numSGA>
<numInt>*****</numInt>
<role>***************************************************************</role>
<type>*****</type>
<emailAlt>*******************</emailAlt>
<active>****</active>
<admissionDate>**********************</admissionDate>
</ous>
<preferedOU>
<ou>****</ou>
<numSGA>********</numSGA>
<numInt>*****</numInt>
<role>***************************************************************</role>
<type>*****</type>
<emailAlt>*******************</emailAlt>
<active>****</active>
<admissionDate>**********************</admissionDate>
</preferedOU>
</ns2:userIdentity>
</identifyUserResponse>
</soap:Body>
</soap:Envelope>
我使用 http 服务器对响应进行硬编码进行了一些测试,并注意到如果我将 xml 从
<identifyUserResponse xmlns="urn:pt.ipc.pio:pio-organizationservices:1.0">
至
<ns:identifyUserResponse xmlns:ns="urn:pt.ipc.pio:pio-organizationservices:1.0">
(添加命名空间标识符)java 客户端开始工作。
用 jax-ws ri、metro 和 cxf 测试,结果总是一样的。