1. 配置tomcat和SOAP引擎
下载axis2-1.4.1-bin.zip和axis2-1.4.1-war.zip,分别解压。
在axis2-1.4.1-war.zip解压出来的文件夹中有一个axis2.war,把它复制到“<tomcat安装目录>/webapps/”目录下,启动Tomcat,即可看到在“<tomcat安装目录>/webapps/”目录下有个axis2的文件夹
在浏览器的地址栏中,输入http://localhost:8080/axis2/,验证axis2安装成功。
2. 简单的Web service程序在Axis2中发布
简单的POJO,代码如下:
public class MyService {
public String getHello()
{
return "hello world";
}
public String getName(String name)
{
return "Hello "+name;
}
public int getPlus(int a, int b)
{
return a+b;
}
}
把编译之后的MyService.class放到
<Tomcat安装目录>/webapps/axis2/WEB-INF/pojo下,浏览器输入http://localhost:8080/axis2/services/listServices,显示已发布的服务。
浏览器地址栏输入:http://localhost:8080/axis2/services/MyService/getHello
可显示相关xml格式的返回内容。
浏览器地址栏输入:
http://localhost:8080/axis2/services/MyService/getName?name=bill
可显示相关xml格式的返回内容。
浏览器地址栏输入:
http://localhost:8080/axis2/services/MyService/getPlus?a=1&b=2
可显示相关xml格式的返回内容。
说明服务发布成功且可访问。
3. 编写程序利用SOAP调用web service
编写MyRPCClient类作为访问的客户端,使用RPC方式(RPCServiceClient)调用WebService,在RPC中指定WebService的URL,指定getHello方法返回值的数据类型的Class对象,并且指定要调用的getHello方法及WSDL文件的命名空间,最后调用RPC的invokeBlocking方法并输出该方法的返回值。
同理,调用getName和getPlus的方法与以上步骤类似。
4. 使用Axis2提供的工具,根据WSDL生成客户端代码,调用该代码访问web service
在系统环境变量中配置AXIS2_HOME的地址,在CMD控制台下输入%AXIS2_HOME%/bin/wsdl2java -uri http://localhost:8080/axis2/services/MyService?wsdl -p client -s -o stub即可在当前路径下生成stub文件夹,其中包括了一个MyServiceStub的类,把这个类复制到项目之中,用wsdl2java编写简化的客户端程序。
MyServiceStub stub = new MyServiceStub();//创造一个服务对象
stub.getHello().get_return();//得到getHello()的返回值
MyServiceStub.GetName gn = new MyServiceStub.GetName();//创造一个封装getName的对象
gn.setName(name);//设置参数
System.out.println( stub.getName(gn).get_return());//输出放回值
遇到的一些问题:
问题1: MyService类中包含一个getService方法,想利用对这个方法的不同重载,使其可以同时使用无输入、一个String输入和两个int输入不同方法,结果在浏览器中访问的时候无法访问。
解决方案:不能用重载来实现发布不同方法的功能,编写三个不同的方法来实现不同的功能,分别为:getHello()输出“hello world”,getName(String name)输出“hello $name”,getPlus(int a,int b)输出两数之和“$a+b”。
问题2:用wsdl2java编译生成stub类后,无法再程序中连接。
解决方案:发现我用的axis2为1.53版本,编译生成的stub类中自动生成的地址是https开头,不能正确连接,换为统一版本(1.41)后,自动生成的地址为http开头,经测试,连接成功。
极光KVM创立于2018年,主要经营美国洛杉矶CN2机房、CeRaNetworks机房、中国香港CeraNetworks机房、香港CMI机房等产品。其中,洛杉矶提供CN2 GIA、CN2 GT以及常规BGP直连线路接入。从名字也可以看到,VPS产品全部是基于KVM架构的。极光KVM也有明确的更换IP政策,下单时选择“IP保险计划”多支付10块钱,可以在服务周期内免费更换一次IP,当然也可以不选择,...
hostodo从2014年年底运作至今一直都是走低价促销侧率运作VPS,在市场上一直都是那种不温不火的品牌知名度,好在坚持了7年都还运作得好好的,站长觉得hostodo还是值得大家在买VPS的时候作为一个候选考虑项的。当前,hostodo有拉斯维加斯和迈阿密两个数据中心的VPS在促销,专门列出了2款VPS给8T流量/月,基于KVM虚拟+NVMe整列,年付送DirectAdmin授权(发ticket...
官方网站:点击访问创梦网络宿迁BGP高防活动方案:机房CPU内存硬盘带宽IP防护流量原价活动价开通方式宿迁BGP4vCPU4G40G+50G20Mbps1个100G不限流量299元/月 209.3元/月点击自助购买成都电信优化线路8vCPU8G40G+50G20Mbps1个100G不限流量399元/月 279.3元/月点击自助购买成都电信优化线路8vCPU16G40G+50G2...