http://blog.csdn.net/chnic/archive/2008/03/14/2179827.aspx(原文)
这几天貌似战斗力无穷,趁着有精力就多更新两篇。随着对Axis的研究加深,越感觉webservice是个很好玩的东西。这篇说一下如何传递一个JavaBean和你自己的一个special Object。
在 第一篇介绍Axis的文章里,我们做了一个简单的webservice,我们client side传递了String和int类型的数据给service object。Service处理之后返回处理结果给Client。对于大多数需求,那个demo显然已经足够应付了。但是如果client端需要传输一 个对象给server,那么那个demo就显得力不从心了。Axis中提供了远程传输对象的方法,通过那些方法我们同样可以随心的传递自己的对象。
我们先从传递一个JavaBean开始,首先编写一个JavaBean。

package
com.chnic.bean;



public
class
OrderBean
...
{

private String name;

int age;

String[] items;

[] price;

boolean checked;



public OrderBean() ...{

}


getAge() ...{

return age;

}


void setAge( age) ...this.age =


isChecked() ... checked;

}


setChecked( checked) ....checked


String[] getItems() ... items;

}


setItems(String[] items) ....items


String getName() ... name;

}


setName(String name) ....name


[] getPrice() ... price;

}


setPrice([] price) ....price

}
这个JavaBean的前4个
属性都很清楚,要解释一下最后
一个。因为这个JavaBean被传递到Service端处理之后要接着被传回,用来示例webservce传进和传出。这个变量用来区别传进和传出的差别。解释完我们来看下service
com.chnic.webservice;


import
com.chnic.bean.OrderBean;



AnalyzeOrder
...
{



AnalyzeOrder()...{

}



OrderBean process(OrderBean order)...{

order.setChecked(true);

System.out.println("name: + order.getName() age: order.getAge());

for( i0; i<order.getItems().length; i++)

System.out.println(Item (i1) order.getItems()[i]

and price is order.getPrice()[i]);

order;

}

}
Service Object的代码很简单,就不解释了。惯例,我们来编写发布文件。
<
deployment
xmlns
="http://xml.apache.org/axis/wsdd/"

xmlns:java
="http://xml.apache.org/axis/wsdd/providers/java"
>


service
name
="CheckOrder"
provider
="java:RPC"

parameter
="className"
value
="com.chnic.webservice.AnalyzeOrder"
/>
="allowedMethods"
="process"
beanMapping
qname
="myNS:Order"
xmlns:myNS
="urn:AnalyzeOrder"

languageSpecificType
="java:com.chnic.bean.OrderBean"

</
service

deployment
空间 URI、本地部分和前缀组成。除了本地部分其他都不是必须的另外QName是不可变的。xmlns后面的myNS是必须的。具体根据前面所指定的 qname来决定。之后可以随意命名