我正在使用axis2作为我的webservices。今天当我试图使用我自己的wsdl文件而不是axis2默认生成i观察者意外的行为时。详细说明。
这是原始的wsdl文件部分。
<xs:element name="multiply">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="a" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="b" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="c" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
I changed <xs:sequence> to <xs:all> so that i can send elements in any order in soap request.Below is the changed one.
<xs:element name="multiply">
<xs:complexType>
<xs:all>
<xs:element minOccurs="0" name="a" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="b" nillable="true" type="xs:string"/>
<xs:element minOccurs="0" name="c" nillable="true" type="xs:string"/>
</xs:all>
</xs:complexType>
</xs:element>
当我执行这个时,我得到的是a blanck和b和c null。
这是我向服务器发送<axis:multiply>
<axis:a>a</axis:a>
<axis:b>b</axis:b>
<axis:c>c</axis:c>
</axis:multiply>
的soap请求。
以下是我在服务器端使用的代码段
public String multiply(String a, String b, String c) throws Exception
{
LogHelper.info(logger, "Begin - Multiply");
if (a.trim().equals(""))
LogHelper.info(logger, "value fo a is a=\"\"");
if (b == null)
LogHelper.info(logger, "value fo b is null");
if (c == null)
LogHelper.info(logger, "value fo c is null");
return "Hellow World";
}
记录器的控制台上的我得到了以下内容:
19:47:20,227 INFO [STDOUT] INFO [SampleWebService] Begin - Multiply
19:47:20,227 INFO [STDOUT] INFO [SampleWebService] value fo a is a=""
19:47:20,227 INFO [STDOUT] INFO [SampleWebService] value fo b is null
19:47:20,228 INFO [STDOUT] INFO [SampleWebService] value fo c is null
任何人都可以告诉我为什么我接收的值为黑色或零,即使我提供的是值。
谢谢,
纳伦德拉
答案 0 :(得分:0)
这是亚行的一个错误。请参阅https://issues.apache.org/jira/browse/AXIS2-842
它已被修复,所以我猜你使用的是旧版本。
我用轴1.5.1 / jdk1.6.0 / openSuse 11.2测试了这个问题。它似乎与REST调用和客户端存根一起工作顺利。这是我的复杂类型:
<xsd:element name="concat">
<xsd:complexType>
<xsd:all>
<xsd:element name="s1" type="xsd:string"/>
<xsd:element name="s2" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
该操作应该连接到字符串。 REST URL如下所示:
http://.../axis2/services/TestService/concat?s2=test2&s1=test1
反应似乎也没问题:
<ns1:concatResponse xmlns:ns1="..."><r>test1test2</r></ns1:concatResponse>
服务实施是微不足道的。所以...它对我来说是固定的: - (
干杯!