Axis2 - 返回Java类

时间:2012-12-23 16:46:30

标签: java wsdl axis2

遵循一个简短的教程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服务)

0 个答案:

没有答案