Axis-1.1 webService实现跨project传递参数入
来源:互联网 发布:新型网络搜索引擎 编辑:程序博客网 时间:2024/04/30 15:00
1. 开发环境:windows server 2003, j2sdk1.4.2_06, tomcat-5.0.28
2. 首先下载axis-1.1.jar包,下载地址:http://ws.apache.org/axis/java/releases.html
我下载的是:http://archive.apache.org/dist/ws/axis/1_1rc2/路径下的axis-1_1rc2-src.zip ,这个压缩文件包括axis-1_1rc2版本的源代码,api文档以及一些示例工程。
3. 接下来,解压axis-1_1rc2-src.zip压缩包,解压后的文件夹为axis-1_1RC2,将其下面的lib文件夹下的jar全部拷贝出来,归入axis lib文件夹;
4. 新建服务端web工程workflow,将axis lib中的jar包导入到workflow下的lib文件夹中,或者通过路径将其引入工程classpath即可。
5. 打开源文件axis-1_1RC2\webapps\axis\WEB-INF\ web.xml,将其中的
<!--axis 1.1 start --> <display-name>Apache-Axis</display-name> <servlet> <servlet-name>AxisServlet</servlet-name><display-name>Apache-Axis Servlet</display-name> <servlet-class> org.apache.axis.transport.http.AxisServlet </servlet-class> </servlet> <servlet><servlet-name>AdminServlet</servlet-name><display-name>Axis Admin Servlet</display-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> <servlet-class> org.apache.axis.monitor.SOAPMonitorService </servlet-class> <init-param> <param-name>SOAPMonitorPort</param-name> <param-value>5001</param-value> </init-param> <load-on-startup>100</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>SOAPMonitorService</servlet-name> <url-pattern>/SOAPMonitor</url-pattern> </servlet-mapping> <!--axis 1.1 end -->
拷贝粘贴到workflow工程中的web.xml文件中,如果以上粗体字部分有报错,删除即可。
6. 写服务端类 adam.bp.workflow.webservice.test.WebServicesTest
package adam.bp.workflow.webservice.test;public class WebServicesTest{ public WebServicesTest() { super(); } public String getUserInfo(String username,String deptName,String procinstId){ return username +" : "+deptName+" : "+procinstId; } public String sayHello(){ return "hello,Axis!"; }}
此类中,有两个方法:
sayHello()无参方法;
getUserInfo(String username,String deptName,String procinstId)传参方法;
7. 基于wsdd方法发布webSservice的灵活性,在web-inf下创建server-config.wsdd文件夹用来发布webService;
<?xml version="1.0" encoding="UTF-8"?><deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"><globalConfiguration><parameter name="adminPassword" value="admin" /><parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl" /><parameter name="sendXsiTypes" value="true" /><parameter name="sendMultiRefs" value="true" /><parameter name="sendXMLDeclaration" value="true" /><parameter name="axis.sendMinimizedElements" value="true" /><requestFlow><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="session" /></handler><handler type="java:org.apache.axis.handlers.JWSHandler"><parameter name="scope" value="request" /><parameter name="extension" value=".jwr" /></handler></requestFlow></globalConfiguration><handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder" /><handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper" /><handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler" /><service name="AdminService" provider="java:MSG"><parameter name="allowedMethods" value="AdminService" /><parameter name="enableRemoteAdmin" value="false" /><parameter name="className" value="org.apache.axis.utils.Admin" /><namespace>http://xml.apache.org/axis/wsdd/</namespace></service><!-- service test 2012.04.16 此次测试配置的service--><service name="TestService" provider="java:RPC"><parameter name="allowedMethed" value="*"></parameter><parameter name="scope" value="Request"></parameter><parameter name="className" value="adam.bp.workflow.webservice.test.WebServicesTest"></parameter><!-- <parameter name="wsdlTargetNamespace" value="http://www.adamsw.com/hsy-test/processService"></parameter><parameter name="schemaUnqualified" value="http://www.adamsw.com/hsy-test/processService"></parameter><parameter name="wsdlPortType" value="process"></parameter><parameter name="typeMappingVersion" value="1.2"></parameter> --></service><transport name="http"><requestFlow><handler type="URLMapper" /><handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" /></requestFlow></transport><transport name="local"><responseFlow><handler type="LocalResponder" /></responseFlow></transport></deployment>
这样就完成了服务端的配置和代码编写。
8. 新建一个web工程test,将axis-lib下的jar包引入到test工程的lib文件夹下。
9. 新建一个webservice客户端测试类:
mypackage.server.WebServiceTestClient代码如下:
package mypackage.server;import java.net.URL;import org.apache.axis.client.Call;import org.apache.axis.client.Service;public class WebServiceTestClient{ public WebServiceTestClient() { super(); } /** * 测试getUserInfo方法 * @throws Exception */ public void testSayHello()throws Exception{ String namespaceUri = "http://localhost:8080/workflow/services/TestService"; Service service = new Service(); Call call = (Call)service.createCall(); call.setTargetEndpointAddress(new URL(namespaceUri)); call.setOperationName("sayHello"); String res = (String) call.invoke(new Object[]{}); System.out.println(res); } /** * 测试sayHello方法 * @throws Exception */ public void testGetUserInfo()throws Exception{ String namespaceUri = "http://localhost:8080/workflow/services/TestService"; Service service = new Service(); Call call = (Call)service.createCall(); //call.setOperationName(new QName(namespaceUri,"getUserInfo")); call.setTargetEndpointAddress(new URL(namespaceUri)); String userName="李光耀"; String deptName="新加坡内阁"; String procDefId="Singapore-001"; Object[] obj = new Object[3]; obj[0] = userName; obj[1] = deptName; obj[2] = procDefId; call.setOperationName("getUserInfo"); String res = (String)call.invoke(obj); System.out.println(res); } public static void main(String[] args){ WebServiceTestClient webServiceTestClient = new WebServiceTestClient(); try { //sayHello webServiceTestClient.testSayHello(); //getUserInfo webServiceTestClient.testGetUserInfo(); } catch (Exception e) { e.printStackTrace(); } }}
右键run as java Application测试该类,控制台输出如下:
hello,Axis!
李光耀 : 新加坡内阁 : Singapore-001
10. 最后,axis 1.1发布webService这样就成功了!
- Axis-1.1 webService实现跨project传递参数入
- webservice+axis文件传递
- webservice+axis文件传递
- Tomcat+Axis实现webservice
- axis实现webservice
- axis实现webservice
- axis实现webservice
- axis实现webservice服务
- axis实现webservice
- webservice axis 执行参数配置
- axis 客户端调用CXF的webservice 解决参数传递不过去的问题
- axis调用webservice传递数组,接收数组
- WebService-AXIS高级特性 传递复杂对象
- axis webservice 的实现原理
- java实现webservice axis实例
- spring 整合 axis 实现webservice
- axis实现webservice 返回对象
- webservice 参数传递
- windows编程中画笔与画刷
- Nginx 访问控制
- 自卑一阵子
- 嵌入式Linux下基于FFmpeg的视频硬件编解码
- GeoServer+OpenLayers发布下载的Google卫星影像
- Axis-1.1 webService实现跨project传递参数入
- 一个游戏程序员的学习资料
- 在vs2010+MFC中动态添加菜单选项
- 计算出二进制数中有多少个1
- 第九周实验报告2
- VPN
- 宏定义之“#”
- 4秒100万条数据导入SQL数据库
- [php笔记]session