遵循一个简短的教程http://www.javaranch.com/journal/200603/WSComplexTypes.html(轴1.4但是afaik)我想创建一个将返回特定Java类的Web服务方法。我正在使用Eclipse Juno,Axis2 1.6.2和Tomcat 6 Server。
该课程如下:
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服务中。测试调用只返回如下所示的soap响应:
<?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项目中使用此Web服务)