Axis-1.1 webService实现跨project传递参数入
2012-04-17 23:26
323 查看
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
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,将其中的
拷贝粘贴到workflow工程中的web.xml文件中,如果以上粗体字部分有报错,删除即可。
6. 写服务端类 adam.bp.workflow.webservice.test.WebServicesTest
此类中,有两个方法:
sayHello()无参方法;
getUserInfo(String username,String deptName,String procinstId)传参方法;
7. 基于wsdd方法发布webSservice的灵活性,在web-inf下创建server-config.wsdd文件夹用来发布webService;
这样就完成了服务端的配置和代码编写。
8. 新建一个web工程test,将axis-lib下的jar包引入到test工程的lib文件夹下。
9. 新建一个webservice客户端测试类:
mypackage.server.WebServiceTestClient代码如下:
右键run as java Application测试该类,控制台输出如下:
hello,Axis!
李光耀 : 新加坡内阁 : Singapore-001
10. 最后,axis 1.1发布webService这样就成功了!
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这样就成功了!
相关文章推荐
- Jquery ajax传递复杂参数给WebService的实现代码
- Jquery ajax传递复杂参数给WebService的实现代码
- Jquery ajax传递复杂参数给WebService的实现代码
- Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- 实现参数传递的几种方式
- char *作为函数参数来实现传递
- 用javascript实现html页面之间的参数传递的四种方法
- 在VB中实现向函数传递不定个数参数
- 天气预报抓取、解析(传递抓取的info参数)功能模块实现(代码)
- ASP.NET中实现页面间的参数传递 QueryString/Application/Session/Cookie
- JavaScript Base64编码和解码,实现URL参数传递。
- 实现通过html传递参数
- jquery中通过ajax调用webservice传递数组参数的问题
- web工作流管理系统开发之十六 主子流程参数传递的实现
- axis实现webservice 返回对象和数组
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- struts2整合uploadify插件实现批量上传,上传成功后跳转并传递参数
- ajaxpro2.0 和服务端交互 传递参数 的实现
- 一个内核模块例子(实现调用其他模块中的方法,传递参数等)