0

按照一个简短的教程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 样式?(我想在 Adob​​e Flex 项目中使用这个网络服务)

4

0 回答 0