axis2 webservice.docx
《axis2 webservice.docx》由会员分享,可在线阅读,更多相关《axis2 webservice.docx(12页珍藏版)》请在冰豆网上搜索。
axis2webservice
myeclipse8.5安装axis2插件
直接解压到dropins中,但试了几次File/other中却不能看到安装的axis2插件,最终还是这样搞好了?
?
?
奇怪
注意:
(1)Axis2_Codegen_Wizard_1.4.0中增加2个jar
backport-util-concurrent-3.1.jar、geronimo-stax-api_1.0_spec-1.0.1.jar,且修改plugin.xml增加这2个jar
(2)Axis2_Codegen_Wizard_1.4.0其实是1.3.0版本文件夹改个名,且修改plugin.xml中标签中的version为”1.4.0”
如果不进行上面的修改,使用axis2插件生成代码时可能会报错,不能成功生成。
Axis2开发webservice服务并调用的步骤
通过开发服务端类来发布服务
新建webproject:
sayhello
编写服务端类:
com.Hello.java和com.Other.java
packagecom;
/**服务端
*@authortower
*
*/
publicclassHello{
publicStringhelloworld(Stringname){
return"helloworld,"+name;
}
}
packagecom;
/**服务端
*@authortower
*
*/
publicclassOther{
publicintgetCount(){
return9999;
}
}
通过服务端类生成wsdl
Hello.java和Other.java的操作步骤是相同的,下面不再重复叙述,均以Hello服务为例。
最终将要生成的hello.wsdl[自定义名称]放到src目录下
通过wsdl生成aar,发布服务
下图选择wsdl,选择已经生成的wsdl文件(图切错了)
最终将aar文件包输出到WEB-INF下,并命名
将aar文件复制到tomcat/webapps/axis2/WEB-INF/services目录下。
启动tomcat将会看到所发布的服务:
HelloService、OtherService
IE输入http:
//127.0.0.1:
8080/axis2/services/listServices
开发客户端stub类来调用服务
通过wsdl生成java客户端类:
最终生成客户端类:
HelloStub.java和OtherStub.java
客户端【Jsp页面或者测试类】调用服务
编写java测试类,通过客户端stub调用服务
packagetest;
importjava.rmi.RemoteException;
importcom.client.HelloStub;
importcom.client.OtherStub;
importcom.client.HelloStub.Helloworld;
importcom.client.HelloStub.HelloworldResponse;
/**测试类
*@authortower
*
*/
publicclassTest{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
try{
//调用HelloService服务
HelloStubhelloStub=newHelloStub("http:
//127.0.0.1:
8080/axis2/services/HelloService");
Helloworldhelloworld=newHelloworld();
helloworld.setName("zgx---");
HelloworldResponseresp=helloStub.helloworld(helloworld);
System.out.println(resp.get_return());
//调用OtherService服务
OtherStubotherStub=newOtherStub("http:
//127.0.0.1:
8080/axis2/services/OtherService");
OtherStub.GetCountResponseresponse2=otherStub.getCount();
System.out.println(response2.get_return());
}catch(RemoteExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
jsp页面通过客户端stub调用服务
代码如下:
<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<%@pageimport="com.client.HelloStub"%>
<%@pageimport="org.apache.axis2.client.ServiceClient"%>
<%@pageimport="com.client.HelloStub.Helloworld"%>
<%@pageimport="com.client.OtherStub"%>
<%@pageimport="com.client.*"%>
<%@pageimport="com.client.OtherStub.GetCountResponse"%>
<%@pageimport="com.client.HelloStub.HelloworldResponse"%>
<%
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+":
//"
+request.getServerName()+":
"+request.getServerPort()
+path+"/";
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
">
MyJSP'index.jsp'startingpage
--
-->
<%
//调用HelloService服务
HelloStubhelloStub=newHelloStub(
"http:
//127.0.0.1:
8080/axis2/services/HelloService");
Helloworldhelloworld=newHelloworld();
helloworld.setName("tower123");
HelloStub.HelloworldResponseresp1=helloStub
.helloworld(helloworld);
%>
调用HelloService服务的返回结果:
<%=resp1.get_return()%>
<%
//调用OtherService服务
OtherStubotherStub=newOtherStub(
"http:
//127.0.0.1:
8080/axis2/services/OtherService");
OtherStub.GetCountResponseresponse2=otherStub.getCount();
%>
调用OtherService服务的返回结果:
<%=response2.get_return()%>