按照一个简短的教程http://www.javaranch.com/journal/200603/WSComplexTypes.html(轴 1.4 然而 afaik)我想创建一个 Web 服务方法,它将返回一个特定的 Java 类。我正在使用 Eclipse Juno、Axis2 1.6.2 和 Tomcat 6 服务器。
该类看起来像:
public class Person implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
public int id;
public String name;
public String surname;
}
网络方法看起来像
public Person getPersonDetails(){
Person result = new Person();
result.id = 1;
result.name = "test";
result.surname = "test2";
return result;
}
然后在生成 WSDL 并部署 Web 服务之后,我的 WSDL 文件如下所示: ...
<xs:schema targetNamespace="http://mycrm/xsd" elementFormDefault="qualified" attributeFormDefault="qualified">
<xs:complexType name="Person">
<xs:sequence/>
</xs:complexType></xs:schema>
...
<xs:element name="getPersonDetails">
<xs:complexType> <xs:sequence/> </xs:complexType> </xs:element>
<xs:element name="getPersonDetailsResponse"> -<xs:complexType> -<xs:sequence>
<xs:element name="return" type="ax21:Person" nillable="true" minOccurs="0"/>
</xs:sequence> </xs:complexType> </xs:element>
据我了解,Person 类没有以任何方式映射到 Web 服务中。测试调用只返回如下所示的肥皂响应:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns:getPersonDetailsResponse xmlns:ns="http://mycrm">
<ns:return xmlns:ax21="http://mycrm/xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax21:Person"/>
</ns:getPersonDetailsResponse>
</soapenv:Body>
</soapenv:Envelope>
所以我的问题是: - 是否有一个我忘记的简单步骤将映射 WSDL 中的类,以便我可以正确返回数据 - 返回这样的数据是错误的 - 是 XML 还是 JSON 样式?(我想在 Adobe Flex 项目中使用这个网络服务)