使用XFire开发WebService入门教程
首先,我们在eclipse中建立一个WebService工程作为服务端,并编写如下代码: IHelloService.java? 服务接口,有一个方法,参数和返回值均为复杂类型User ?
package
?test;
public ? interface ?IHelloService? ... { ???public?User?getUser(User?user); } ? User.java 注意,这个javabean里必须要有一个默认没有参数的构造方法,否则在进行aegis绑定会有不能实例化user对象的异常
package
?test;
import ?java.io.Serializable; public ? class ?User ... { ??private?String?username; ??private?String?password; ??public?User()...{ ?????? ??} public?User(String?username,?String?password)?...{ ????super(); ????this.username?=?username; ????this.password?=?password; } public?String?getPassword()?...{ ????return?password; } public?void?setPassword(String?password)?...{ ????this.password?=?password; } public?String?getUsername()?...{ ????return?username; } public?void?setUsername(String?username)?...{ ????this.username?=?username; } } HelloServiceImpl.java 方法实现是传进来一个user对象,把这个对象的username,password变成我们设置的数值,然后返回这个对象
package
?test;
public ? class ?HelloServiceImpl? implements ?IHelloService? ... { ????public?void?print()?...{ ????????System.out.println("action"); ????} ????public?User?getUser(User?user)?...{ ???? ????????user.setUsername("new?name"); ????????user.setPassword("new?password"); ????????return?user; ????} } IHelloService.aegis.xml 为复杂参数和返回类型绑定,和IHelloService在一个包下 ?
<?
xml?version="1.0"?encoding="UTF-8"
?>
< mappings > ???? < mapping > ???????? < method? name ="getUser" > ???????????? < parameter? index ="0" ?componentType ="test.User" /> ???????????? < return-type? componentType ="test.User" /> ???????? </ method > ?? ?????? ???? </ mapping > </ mappings > services.xml? xFire发布文件 ?
<?
xml?version
=
"
1.0
"
?encoding
=
"
UTF-8
"
?>
< beans > < service?xmlns = " http://xfire.codehaus.org/config/1.0 " > < name > HelloService </ name > < namespace > http: // test/HelloService</namespace> < serviceClass > test.IHelloService </ serviceClass > < implementationClass > test.HelloServiceImpl </ implementationClass > </ service > </ beans > ? 部署到tomcat中,在浏览器中运行http://localhost:8080/XFire/services/HelloService?wsdl 如果部署正确,讲出现XFire生成的wsdl文件 ? 把IHelloService.java,IHelloService.aegis.xm,User.java打包成jar 下面,我们编写消费WS的客户端 ? 新建一个java工程,把服务端的jar放到classpath中,当然,服务和客户端都要有XFire的类库 编写代码 ?
package
?test;
import ?java.net.MalformedURLException; import ?org.codehaus.xfire.client.XFireProxyFactory; import ?org.codehaus.xfire.service.Service; import ?org.codehaus.xfire.service.binding.ObjectServiceFactory; import ?test.IHelloService; import ?test.User; public ? class ?Client? ... { ????/**?*//** ?????*?@param?args ?????*/ ????public?static?void?main(String[]?args)?...{ ????????User?user=new?User("2","2"); ????????String?serviceURL="http://localhost:8080/XFire/services/HelloService"; ????????Service?serviceModel?=?new?ObjectServiceFactory().create(IHelloService.class,null,"http://test/HelloService",null); ????????XFireProxyFactory?serviceFactory?=?new?XFireProxyFactory(); ????????IHelloService?service?=?null;???? ?????????try?...{ ????????????service?=?(IHelloService)?serviceFactory.create(serviceModel,?serviceURL); ????????? ????????????user=service.getUser(user); ???????????? ????????????System.out.println(user.getUsername()+"?-?"+user.getPassword()); ?????????}?catch?(MalformedURLException?e)?...{ ????????????e.printStackTrace(); ????????} ????} } ? 在tomca安装目录下的bin中启动tomcat(注意不要使用eclipse环境中的启动插件,否则运行客户端时候会自动关掉服务) ? 运行结果: new name - new password 真是我们想要的结果 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |