小编今天带大家了解J2EE web service开发中的映射数组复杂类型怎么理解,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“J2EE web service开发中的映射数组复杂类型怎么理解”的知识吧。
创新互联服务项目包括西城网站建设、西城网站制作、西城网页制作以及西城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,西城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到西城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
之所以把数组类型在调用web service中作为参数的实现郑重的记录下来,实在是因为数组在j2ee web service的实现不是一件容易的问题。至少用Jboss的j2ee web service实现时是这样。在 apache的axis实现中,数组作为参数传递根本不值一提,借助工具很方面的就可以实现。
具体实现:
作为J2EE web service服务实现的类必须实现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; }
具体实现远程接口的类:
package array; public class CountUserImpl implements CountUser { public int countUser(User[] user){ for(int i=0;i System.out.println("name "+user[i].getName()+" phone "+ user[i].getPhone()+ " birthday "+user[i].getBirthDay()); } return user.length; } }
作为数组参数传递的类:
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 必须的三个文件,jax-rpc映射文件,web服务描述器文件,以及wsdl文档用于wstools工具的配置文件jboss-config.xml类容如下:
< ?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服务所需的三个文件。另外还得在web.xml文件中把CountUser接口作为servlet发布
< 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 < url-pattern>/services/* < /servlet-mapping>
仅仅是这样倒也算很容易了,但是wstools工具并不能在映射文件中正确实现User[]的映射。因此还需要手工添加如下代码以实现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文件,并且布署。J2EE web service服务端的实现就完成了。使用的Jboss版本4.04 。
感谢大家的阅读,以上就是“J2EE web service开发中的映射数组复杂类型怎么理解”的全部内容了,学会的朋友赶紧操作起来吧。相信创新互联小编一定会给大家带来更优质的文章。谢谢大家对创新互联网站的支持!