Java Axis2发布及调用webservice接口

因为推荐系统改造的事情,需要研究下webservice。本来以为很简单的东西,结果折腾了两天,才勉勉强强搭了个示例。一方面是因为本身对这块不熟悉,另一方面是因为网上教程说的不明确,走了很多弯路。所以这里总结一个详细的教程。

Java发布webservice有多种方式,如Xfire、Axis、Axis2,每种方式都有所不同。我这里采用Axis2的方式。
1、发布webservice之前,我们要做些准备工作。首先要在linux上安装JDK,apache我不知道要不要安装,我测试机之前已经安装过了,没研究。这两个是基础,不懂的话自己先去学习学习吧。
然后安装tomcat,比较简单, 官网上下载 tar.gz 包,这个貌似 32 64 通用。 解压到安装目录,比如 /opt/tomcat,然后 配置文件 /etc/profile ,配置以下内容:
export CATALINA_HOME=/opt/tomcat
export CLASSPATH=.:$JAVA_HOME/lib:$CATALINA_HOME/lib
export PATH=$PATH:$CATALINA_HOME/bin
启动:进到 bin 目录下, ./catalina.sh start 关闭 ./shutdown.sh stop

测试: netstat -ntl |grep 8080 查看端口是不是起来了
或者 http://192.168.2.41:8080/ (输入你自己配置的那个IP) 看看是不是出现了tomcat的界面

2、然后安装Axis2,这个也非常简单。去官网上下一个 Axis2。下载地址: http://axis.apache.org/axis2/java/core/download.cgi把war的zip包下下来就好
Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客
 
下完后解压,把axis2.war这个文件拷贝到tomcat/webapps目录下
重启tomcat,会在这个目录下生成一个 axis2目录,如图所示
Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客
 

3、下面进入正式发布环节。Axis2发布webservice有两种方式,一种是pojo方式,也就是我这里要发布的,它功能相对较弱,不支持类加包名。我们先实验这种方式。
在Linux任意目录新建一个HelloWorld的java程序,这里我们就新建两个函数:getName和add函数,用于测试
Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客

编译,把class文件拷贝到tomcat/webapps/axis2/WEB-INF/pojo目录下,没有pojo目录就新建一个
Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客

重启tomcat,在浏览器中输入 http://192.168.2.41:8080/axis2/services/listServices 就可以看到你发布的webservice服务了,很简单吧

Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客
 
 4、开发接口
服务发布好了之后,我们需要开发接口。我这里用的是myeclipse8.5。刚才linux里面 axis2/WEB-INF/lib里有N多jar,拷出来,导进myeclipse里,待会我们会用得到。也可以官网上去下个 axis2-1.6.*-bin.zip,解压出里面的jar文件。
eclipse里新建一个普通的工程即可,把刚才提到的那些包导进去,
Java Axis2发布及调用webservice接口 - scjthree - 亚存的博客

新建一个class文件,命名为test.java,里面代码如下

package MZ.GetWebService; import javax.xml.namespace.QName; import org.apache.axis2.AxisFault; import org.apache.axis2.addressing.EndpointReference; import org.apache.axis2.client.Options; import org.apache.axis2.rpc.client.RPCServiceClient; public class test { private static String EndPointUrl; private static String QUrl="http://ws.apache.org/axis2"; private QName opAddEntry; private static String WSUrl; public RPCServiceClient setOption() throws AxisFault { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference(WSUrl); options.setTo(targetEPR); return serviceClient; } public QName getQname(String Option){ return new QName (QUrl,Option); } // 返回一维String数组 public String[] getArray(String Option) throws AxisFault { RPCServiceClient serviceClient =this.setOption(); opAddEntry =this.getQname(Option); String[] strArray = (String[]) serviceClient.invokeBlocking(opAddEntry,new Object[]{1,2}, new Class[]{String[].class })[0]; return strArray; } public static void main(String[] argv) throws Exception { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference(WSUrl); options.setTo(targetEPR); test ws=new test); ws.WSUrl="http://192.168.2.41:8080/axis2/services/HelloWorld"; String[] hello= ws.getArray("add"); System.out.println(hello[0]); } }


 运行,就可以得到返回的结果了

还有种方式还在研究
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值