Axis2发布调用webService笔记_2
?
图1
二、编写和发布WebService
??对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。其中POJO中所有的public方法将被发布成WebService方法。
??? 下面我们来实现一个简单的POJO,代码如下:
?
图2
??? 在浏览器地址栏中输入如下的两个URL来分别测试getGreeting和getPrice方法:
http://localhost:8080/axis2/services/SimpleService/getGreeting?name=bill
http://localhost:8080/axis2/services/SimpleService/getPrice
??? 图3和图4分别显示了getGreeting和getPrice方法的测试结果。
?
图3? getGreeting方法的测试结果
?
图4? getPrice方法的测试结果
??? 在编写、发布和测试0配置的WebService时应注意如下几点:
??? 1.?POJO类不能使用package关键字声明包。
??? 2.?Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。如果想取消Axis2的热发布功能,可以打开<Tomcat安装目录>\webapps\axis2\WEB-INF\conf\axis2.xml,找到如下的配置代码:
package?client;
import?javax.xml.namespace.QName;
import?org.apache.axis2.addressing.EndpointReference;
import?org.apache.axis2.client.Options;
import?org.apache.axis2.rpc.client.RPCServiceClient;
public?class?StubClient
{
????public?static?void?main(String[]?args)?throws?Exception??
????{
????????SimpleServiceStub?stub?=?new?SimpleServiceStub();
????????SimpleServiceStub.GetGreeting?gg?=?new?SimpleServiceStub.GetGreeting();
????????gg.setName("比尔");
????????System.out.println(?stub.getGreeting(gg).get_return());
????????System.out.println(stub.getPrice().get_return());
????}?
}
??? 上面的代码大大简化了调用WebService的步骤,并使代码更加简洁。但要注意的是,wsdl2java.bat命令生成的Stub类将WebService方法的参数都封装在了相应的类中,类名为方法名,例如,getGreeting方法的参数都封装在了GetGreeting类中,要想调用getGreeting方法,必须先创建GetGreeting类的对象实例。