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开头,经测试,连接成功。
Hostadvice主机目录对我们的服务进行了测试,然后给PQ.hosting颁发了十大WordPress托管奖。为此,宣布PQ.Hosting将在一周内进行折扣优惠,购买和续订虚拟服务器使用优惠码:Hostadvice ,全部优惠10%。PQ.hosting,国外商家,成天于2019年,正规公司,是全球互联网注册商协会 RIPE 的成员。主要是因为提供1Gbps带宽、不限流量的基于KVM虚拟的V...
Dataideas是一家2019年成立的国外VPS主机商,提供基于KVM架构的VPS主机,数据中心在美国得克萨斯州休斯敦,主机分为三个系列:AMD Ryzen系列、Intel Xeon系列、大硬盘系列,同时每个系列又分为共享CPU和独立CPU系列,最低每月1.5美元起。不过需要注意,这家没有主页,你直接访问根域名是空白页的,还好他们的所有套餐支持月付,相对风险较低。下面以Intel Xeon系列共...
Sharktech(鲨鱼服务器商)我们还是比较懂的,有提供独立服务器和高防服务器,而且性价比都还算是不错,而且我们看到有一些主机商的服务器也是走这个商家渠道分销的。这不看到鲨鱼服务器商家洛杉矶独立服务器纷纷促销,不限制流量的独立服务器起步99美元,这个还未曾有过。第一、鲨鱼机房服务器方案洛杉矶机房,默认1Gbps带宽,不限流量,自带5个IPv4,免费60Gbps / 48Mpps DDoS防御。C...