一,开发服务器端
准备工作
新建两个Dynamic web project :
其中webserviceService项目为服务器端项目,另一个为客户端项目。
(另外我修改了eclipse对tomcat的项目发布目录时的重定向,参见我的另一篇blog)
1, 服务器端 代码(处理服务器端项目)
借用网络上的Hello例子
HelloServer文件(右键Java Resources下的src,选择New->Class,填写包名:org.web.service 类名:HelloWordService):
package org.web.service; public class HelloWorldService { public String sayHello(String name){ return "Hello," + name; } }
(简单吧)
2, 然后 生成 WSDL文件
在本项目下面空白处右键-->New—>Other..-->Axis2 Wizards—>Axis2 Service Archiver
之后每一步看图:
(这里我们的程序没用其他类库,所以直接下一步)
之后会在本项目下看到my_service.aar(选择本项目F5刷新)
然后把my_service.aar 复制到tomcat目录下apache-tomcat-7.0.37\\webapps\axis2\WEB-INF\services\里
启动tomcat,浏览器访问:http://localhost:8080/axis2/services/HelloWorldService?wsdl
见到如上界面就成功了。
二,生成客户端(使用webServiceClient项目)
1, 右键项目空白处-New—>Other..—>Axis2 Wizards—>Axis2 Code Generator
之后每一步见下图:
(这里的地址是之前网络访问成功的地址)
(这里默认)
到这里结束,会多次很多类文件:
但是你会发现你的webServiceClient项目代码很多错误,这是因为没把关联包加进来
复制 axis2-1.6.2\lib\里所有文件到webServiceClient项目的WebContent\WEB-INF\lib\下。这样错误就没了。
三,调用webService代码
在webServiceClient项目里换个包新建类:
package org.web.client; import java.rmi.RemoteException; import org.web.service.*; public class HelloWorldClient { /** * @param args */ public static void main(String[] args) throws RemoteException{ // TODO Auto-generated method stub String target = "http://localhost:8080/axis2/services/HelloWorldService"; HelloWorldServiceStub stub = new HelloWorldServiceStub(target); // sayHello 为webService提供参数 SayHello sayHello = new SayHello(); sayHello.setName("icePine"); SayHelloResponse eur = stub.sayHello(sayHello); String returnVal = eur.get_return(); System.out.println(returnVal); } }
运行此代码文件:此文件上右键Run As->Java Application,输出:
至此,第一个webService完成!
注:版本不同会有些许差异,我在学习时参考的网上教程很多都走不下去,后来自己总结修改后才成功。
比如:网络上参考的一个版本SayHello是HelloWorldServiceStub的内部类,而我用的这个版本不是。
注大家成功。