之所以把數(shù)組類(lèi)型在調(diào)用web service中作為參數(shù)的實(shí)現(xiàn)鄭重的記錄下來(lái),實(shí)在是因?yàn)閿?shù)組在j2ee web service的實(shí)現(xiàn)不是一件容易的問(wèn)題。至少用Jboss的j2ee web service實(shí)現(xiàn)時(shí)是這樣.
但是在jboss中的ws實(shí)現(xiàn)中確不是一件便利的事情。因?yàn)橛魫灹撕芫茫l(fā)點(diǎn)牢騷:)具體實(shí)現(xiàn):
作為web service服務(wù)實(shí)現(xiàn)的類(lèi)必須實(shí)現(xiàn)java.rmi.Remote的接口:
package array;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface CountUser extends Remote {
public int countUser(User[] user) throws RemoteException;
}
具體實(shí)現(xiàn)遠(yuǎn)程接口的類(lèi):
package array;
public class CountUserImpl implements CountUser {
public int countUser(User[] user){
for(int i=0;i<user.length;i++){
System.out.println("name "+user[i].getName()+" phone "+
user[i].getPhone()+ " birthday "+user[i].getBirthDay());
}
return user.length;
}
}
作為數(shù)組參數(shù)傳遞的類(lèi):
package array;
import java.util.Date;
public class User {
private String name;
private String phone;
private Date birthDay;
public User() {
}
public User(String name,String phone,Date birthDay){
this.name=name;
this.phone=phone;
this.birthDay=birthDay;
}
public void setName(String name) {
this.name = name;
}
public void setPhone(String phone) {
this.phone = phone;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public String getName() {
return name;
}
public String getPhone() {
return phone;
}
public Date getBirthDay() {
return birthDay;
}
}
使用Jboss_Home/bin 下的wstools工具生成布署j2ee web service 必須的三個(gè)文件,jax-rpc映射文件,web服務(wù)描述器文件,以及wsdl文檔用于wstools工具的配置文件jboss-config.xml類(lèi)容如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns="http://www.jboss.org/jbossws-tools"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.jboss.org/jbossws-tools http://www.jboss.org/jbossws-tools/schema/jbossws-tool_1_0.xsd"
<java-wsdl>
<service name="ServiceBeanInterface1" style="rpc" endpoint="array.ServiceBeanInterface1"/>
<namespaces target-namespace="http://array" type-namespace="http://array"/>
<mapping file="ServiceBeanInterface1.xml"/>
<webservices servlet-link="ServiceBeanInterface1"/>
</java-wsdl>
</configuration>
使用 wstools -cp array.CountUser -config jboss-config.xml 命令可以生成布署web服務(wù)所需的三個(gè)文件。另外還得在web.xml文件中把CountUser接口作為servlet發(fā)布
<servlet>
<display-name>CountUser Servlet</display-name>
<servlet-name>CountUser</servlet-name>
<servlet-class>array.CountUserImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CountUser</servlet-name>
<url-pattern>/CountUser</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>CountUser</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
僅僅是這樣倒也算很容易了,但是wstools工具并不能在映射文件中正確實(shí)現(xiàn)User[]的映射。因此還需要手工添加如下代碼以實(shí)現(xiàn)User[] 到xml之間的映射。
<java-xml-type-mapping>
<java-type>array.User[]</java-type>
<root-type-qname xmlns:typeNS=‘http://array‘>typeNS:User.Array</root-type-ame>
<qname-scope>complexType</qname-scope>
</java-xml-type-mapping>
打包成war文件,并且布署。服務(wù)端的實(shí)現(xiàn)就完成了。打包的war文件下載
因?yàn)槠蛟S還有分類(lèi)的原因,客戶(hù)端的實(shí)現(xiàn)將記錄在下一篇隨筆里 如果你想賜教或者討論,歡迎加入QQ群:30406099
聯(lián)系客服