我有在 jboss 上的本地机器上运行的应用程序。
我下载了wsdl文件,在eclipse中生成java代码。运行并出现异常:
处理请求时捕获异常:反序列化错误:java.lang.NumberFormatException:对于输入字符串:“”
(应用程序可以与另一个简单的 WS 一起正常工作)。
经过一番谷歌搜索后,我发现代码生成了错误的 xml:
预期:
<soapenv:Body>
<ns1:setLevel soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="###">
<id xsi:type="xsd:string">x2148</id>
<level xsi:type="xsd:long">5</level>
</ns1:setLevel>
</soapenv:Body>
但是通过 TCPMon/Fiddler 我发现我的请求看起来像这样:
<soapenv:Body>
<ns1:setLevel soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="###">
<id xsi:type="xsd:string">x2148</id>
<level href="#id0" />
</ns1:setLevel>
<multiRef id="id0" soapenc:root="0"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="xsd:long" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/">5</multiRef>
</soapenv:Body>
谷歌搜索后我发现解决方案是改变
<parameter name="sendMultiRefs" value="true"/>
在服务器端的 server-config.wsdd 文件中设置为 false。但是我没有这个文件。
有什么解决办法吗?我只看到一种解决方案——在运行时更改 xml 文件——但这听起来不太好。