Java Axis2发布及调用webservice接口
2014-05-23 11:09
363 查看
因为推荐系统改造的事情,需要研究下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包下下来就好
下完后解压,把axis2.war这个文件拷贝到tomcat/webapps目录下
重启tomcat,会在这个目录下生成一个axis2目录,如图所示
3、下面进入正式发布环节。Axis2发布webservice有两种方式,一种是pojo方式,也就是我这里要发布的,它功能相对较弱,不支持类加包名。我们先实验这种方式。
在Linux任意目录新建一个HelloWorld的java程序,这里我们就新建两个函数:getName和add函数,用于测试
编译,把class文件拷贝到tomcat/webapps/axis2/WEB-INF/pojo目录下,没有pojo目录就新建一个
重启tomcat,在浏览器中输入http://192.168.2.41:8080/axis2/services/listServices 就可以看到你发布的webservice服务了,很简单吧
4、开发接口
服务发布好了之后,我们需要开发接口。我这里用的是myeclipse8.5。刚才linux里面axis2/WEB-INF/lib里有N多jar,拷出来,导进myeclipse里,待会我们会用得到。也可以官网上去下个axis2-1.6.*-bin.zip,解压出里面的jar文件。
eclipse里新建一个普通的工程即可,把刚才提到的那些包导进去,
新建一个class文件,命名为test.java,里面代码如下
运行,就可以得到返回的结果了
还有种方式还在研究
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包下下来就好
下完后解压,把axis2.war这个文件拷贝到tomcat/webapps目录下
重启tomcat,会在这个目录下生成一个axis2目录,如图所示
3、下面进入正式发布环节。Axis2发布webservice有两种方式,一种是pojo方式,也就是我这里要发布的,它功能相对较弱,不支持类加包名。我们先实验这种方式。
在Linux任意目录新建一个HelloWorld的java程序,这里我们就新建两个函数:getName和add函数,用于测试
编译,把class文件拷贝到tomcat/webapps/axis2/WEB-INF/pojo目录下,没有pojo目录就新建一个
重启tomcat,在浏览器中输入http://192.168.2.41:8080/axis2/services/listServices 就可以看到你发布的webservice服务了,很简单吧
4、开发接口
服务发布好了之后,我们需要开发接口。我这里用的是myeclipse8.5。刚才linux里面axis2/WEB-INF/lib里有N多jar,拷出来,导进myeclipse里,待会我们会用得到。也可以官网上去下个axis2-1.6.*-bin.zip,解压出里面的jar文件。
eclipse里新建一个普通的工程即可,把刚才提到的那些包导进去,
新建一个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]); } }
运行,就可以得到返回的结果了
还有种方式还在研究
相关文章推荐
- [PHP]php发布和调用Webservice接口的案例
- cxf+spring发布webservice接口及接口的调用
- spring整合cxf方式发布的rest webservice,调用接口
- C/C++通过gSoap发布webservice接口,供ASP.Net网站工程调用
- java axis2 调用webservice接口客户端
- cxf+spring发布webservice接口及接口的调用
- 在myeclipse中建立webservice,发布webservice并且调用webservice接口
- axis2发布web项目开发webservice和接口调用
- Eclipse发布WebService和调用WebService接口
- 如何在其他项目调用webservice 发布的soap风格的接口
- Eclipse发布WebService和调用WebService接口
- PB-PowerBuilder125开发Webservice的DEMO_从配置IIS到发布接口到调用webservice
- Android开发中调用Spring CXF整合发布的WebService接口为什么抛出异常错误?
- cxf+spring发布webservice接口及接口的调用
- cxf+spring发布webservice接口及接口的调用
- C#中webService发布与调用
- WebService 接口调用指南
- 使用CXF发布和调用webservice之HelloWorld入门
- 在与sap系统集成时遇到的问题.sap系统发布一webservice,java(xfire)作为客户端调用,调用时抛出如下异常: Wrong Content-Type and empty HTTP-Body received: ("HTTP Code 20
- java调用DoNet发布的WebService