使用axis2实例
来源:互联网 发布:网络被挟持怎么办 编辑:程序博客网 时间:2024/06/11 01:34
1,导入jar包
2,在web.xml注册service
<servlet> <servlet-name>AxisServlet</servlet-name> <display-name>Apache-Axis Servlet</display-name> <servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class> <!--<init-param>--> <!--<param-name>axis2.xml.path</param-name>--> <!--<param-value>/WEB-INF/conf/axis2.xml</param-value>--> <!--<param-name>axis2.xml.url</param-name>--> <!--<param-value>http://localhost/myrepo/axis2.xml</param-value>--> <!--<param-name>axis2.repository.path</param-name>--> <!--<param-value>/WEB-INF</param-value>--> <!--<param-name>axis2.repository.url</param-name>--> <!--<param-value>http://localhost/myrepo</param-value>--> <!--</init-param>--> <load-on-startup>1</load-on-startup> </servlet> <servlet> <servlet-name>AxisAdminServlet</servlet-name> <display-name>Apache-Axis AxisAdmin Servlet (Web Admin)</display-name> <servlet-class> org.apache.axis2.webapp.AxisAdminServlet</servlet-class> </servlet> <servlet> <display-name>Axis Admin Servlet</display-name> <servlet-name>AdminServlet</servlet-name> <servlet-class>org.apache.axis.transport.http.AdminServlet</servlet-class> <load-on-startup>100</load-on-startup> </servlet> <!-- servlet> <servlet-name>SOAPMonitorService</servlet-name> <display-name>SOAPMonitorService</display-name> <servlet-class>org.apache.axis2.soapmonitor.servlet.SOAPMonitorService</servlet-class> <init-param> <param-name>SOAPMonitorPort</param-name> <param-value>5001</param-value> </init-param> <init-param> <param-name>SOAPMonitorHostName</param-name> <param-value>localhost</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet --> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/servlet/AxisServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>*.jws</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisServlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AxisAdminServlet</servlet-name> <url-pattern>/axis2-admin/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>AdminServlet</servlet-name> <url-pattern>/servlet/AdminServlet</url-pattern> </servlet-mapping>
里面有些service不是必须的,但也有用,可以在调试的时候查看
webservie信息。
3,拷贝modules到WEB-INF下
4,在WEB-INF下建立services文件夹(或者直接拷贝axis2中jar包自带的)
5,拷贝axis2.xml到WEB-INF下
6,开始写类和方法,例如:
package org.hd.axis2.device;import org.hd.business.service.BusinessService;import org.hd.business.summary.model.CallSummaryVo;import org.rd.framework.common.container.ContainerManager;public class AddBillSuccessCallBack{private BusinessService businessService = (BusinessService)ContainerManager.getComponent(BusinessService.BEAN_ID);public String hadAddBillForTheCall(String callid,String billNumber){String resultMessage="";CallSummaryVo call=new CallSummaryVo();if(callid==null||callid.trim().equals("")){resultMessage="未获取到通话callid,操作失败!";}else if(billNumber==null||billNumber.trim().equals("")){resultMessage="未获取到工单号billNumber,操作失败!";}else{call.setVoiceid(callid);call.setBill_number(billNumber);businessService.updateSummaryByWebservice(call);resultMessage="收到信息:callid="+callid+",billNumber="+billNumber;}System.out.println("调用webservice的结果信息:"+resultMessage);return resultMessage;}}
7,按照package org.hd.axis2.device的结构压缩成arr格式的文件,
需要编译后的class文件。
结构如下:
afterAddBillMessage
|
----------------------------
META-INF | org
----------------------------
services.xml | hd
----------------------------
|axis2
----------------------------
|device
----------------------------
|AddBillSuccessCallBack.class
8,编写services.xml内容,在上面的META-INF下:
<!-- ~ Licensed to the Apache Software Foundation (ASF) under one ~ or more contributor license agreements. See the NOTICE file ~ distributed with this work for additional information ~ regarding copyright ownership. The ASF licenses this file ~ to you under the Apache License, Version 2.0 (the ~ "License"); you may not use this file except in compliance ~ with the License. You may obtain a copy of the License at ~ ~ http://www.apache.org/licenses/LICENSE-2.0 ~ ~ Unless required by applicable law or agreed to in writing, ~ software distributed under the License is distributed on an ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY ~ KIND, either express or implied. See the License for the ~ specific language governing permissions and limitations ~ under the License. --><service name="afterAddBillMessage"> <description> This service is to give message to the calling for add a bill </description> <parameter name="ServiceClass">org.hd.axis2.device.AddBillSuccessCallBack</parameter> <operation name="hadAddBillForTheCall"> <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" /> </operation></service>
9,最后获得afterAddBillMessage.aar(名字随便起)
10,afterAddBillMessage.aar放到WEB-INF/services下
ok,webservice写好了,可以访问了。
可以在浏览器地址栏输入请求url查看xml信息,不过那是为了查看或者调试用的。
webservice存在的意义是为了程序调用,所以要访问,必须洗客户端代码。
这里指给出一个测试类:
AddBillSuccessCallBackClient.java
package org.hd.axis2.client;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 AddBillSuccessCallBackClient {public static void main(String args[]) throws AxisFault {// 使用RPC方式调用WebServiceRPCServiceClient serviceClient = new RPCServiceClient();Options options = serviceClient.getOptions();// 指定调用WebService的URLEndpointReference targetEPR = new EndpointReference("http://10.23.130.118:8095/HelpDesk/services/afterAddBillMessage");options.setTo(targetEPR);// 指定hadAddBillForTheCall方法的参数值Object[] opAddEntryArgs = new Object[] { "FF5B82690A1808170148E7DF2E5890BC","billnumberIUERREO9834-SDF" };// 指定sayHelloToPerson方法返回值的数据类型的Class对象Class[] classes = new Class[] { String.class };// 指定要调用的sayHelloToPerson方法及WSDL文件的命名空间// QName opAddEntry = new QName("http://ws.apache.org/axis2",// "sayHelloMethod");// QName opAddEntry = new QName("http://service", "sayHelloMethod");QName opAddEntry = new QName("http://device.axis2.hd.org","hadAddBillForTheCall");// 调用sayHelloToPerson方法并输出该方法的返回值System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]);}}
有了测试类,更方便调试。
- 使用axis2实例
- 使用Axis2创建WebService实例
- Axis2使用WebService的客户端实例
- java使用axis2调用webservice接口实例
- java使用axis2调用webservice接口实例
- Axis2 实例
- axis2 实例
- Axis2使用WebService的客户端实例(转载)
- 使用Axis2开发Web Service简单演示实例
- (1)使用Axis2方式发布webService实例说明
- axis2使用
- Axis2创建WebService实例
- Axis2创建WebService实例
- Axis2创建WebService实例
- Axis2创建WebService实例
- Axis2创建WebService实例
- Axis2创建WebService实例
- axis2 客户端调用实例
- ibatis2与Spring2.5集成
- 使用Oracle trunc 来指定精确的年月日时分秒
- CSS语法基础笔记
- 10大科技公司创始人超级豪宅:由普通别墅到夏威夷小岛
- 最简单实现对注册表的更改操作
- 使用axis2实例
- hdu Choose the best route(最短路 --- Dijkstra)
- Nginx安全实践
- 饭工和碗工
- 为什么在vs 中用include<iostream.h>不行,而include<stdio.h>可用
- 购物车--数据库+ajax
- 多线程 笔记(二)
- 现在没有可用的软件包 sun-java6-jdk
- linux和windows平台下,如何下载android sdk的源代码