请浏览的大侠给点指点 盒 评论
server端复杂数据类型的返回问题
- web service的数据类型返回情况,如果是简单数据类型,则比较简单,不用作什么转换之类的
- 但是如果是复杂数据类型,就比较麻烦
复杂类型1 : JAVABEANS类型,此类型,一般都可以自动的
复杂类型2 : 特定schema类型,此类型,不太好办。
本文章要讨论的就是复杂类型2
下面有一个复杂类型的例子,参:
Web Service Case Study:软件反馈跟踪平台
例如,要返回的数据类型如下
<save_feedback>
<authInfo>……</authInfo>
<feedback feedbackKey="…" parentCategoryKey="…" type="…"> *
<name>……</name>
<description>……</description>
<dataBag templateKey="……">
<field name="[fieldname]">……</field> *
</dataBag>
</feedback>
</save_category>
对应SCHEMA如下:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="save_feedback" type="save_feedback">
<xs:annotation>
<xs:documentation>save_feedback API Schema Definition</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="save_feedback">
<xs:sequence>
<xs:element name="authInfo" type="xs:base64Binary"/>
<xs:element name="feedback" type="feedbackType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="feedbackType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="databag" type="dataBagType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="dataBagType">
<xs:sequence>
<xs:element name="field" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
这样的数据类型,怎样作为web service的参数返回呢?
或者怎样能作为web service请求的参数呢
使用WASP进行web service开发的话
- 使用jaxb,对schema获得java类。
- 建立一个类,使用它的方法来对外发布web 服务。
- 这个类的某一个方法,返回上面schema获得java类的类型
- 现在只要对这个类发布就行了,生成wsdl等,都完事了。比较方便哦
- 不幸的消息是,我是用上面1-4的方法进行试验,失败!!!!!!
使用wasp还可以通过wsdl方便的返回client代码。即使不使用wasp进行
web service server端的开发。也可以使用它进行client端开发。
有一个generate web service client from wsdl的new选项