首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

JSP学习札记(一百二十三):使用axis1.4开发webservice应用(二)

2012-08-22 
JSP学习笔记(一百二十三):使用axis1.4开发webservice应用(二)拷贝自博客园--魔豆的BLOG??通过上篇文章,已

JSP学习笔记(一百二十三):使用axis1.4开发webservice应用(二)

拷贝自博客园--

魔豆的BLOG

?

?

通过上篇文章,已经可以通过axis1.4发布服务以及调用服务了,不过上篇文章发布服务使用的方法不够灵活,这里介绍一种灵活的方式

一、以Stubs的方式发布服务


1.以这种方式发布还需要两个J2EE包

?activation.jar ??mail.jar



2.修改web.xml,我使用了struts2,和axis的配置会有冲突,为了避免冲突,对struts2的相关配置也做了对应修改,这里贴出完整web.xml文件内容:

?<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_ID" version="2.4"????xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"????xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> ????<display-name>static</display-name> ????<filter> ????????<filter-name>struts2</filter-name> ????????<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> ????</filter> ????<filter-mapping> ????????<filter-name>struts2</filter-name> ????????<url-pattern>*.action</url-pattern> ????</filter-mapping> ????<filter-mapping> ????????<filter-name>struts2</filter-name> ????????<url-pattern>/struts/dojo/*</url-pattern> ????</filter-mapping>? ??????<servlet> ????????<servlet-name>AxisServlet</servlet-name> ????????<servlet-class>org.apache.axis.transport.http.AxisServlet</servlet-class> ????</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>/services/*</url-pattern> ????</servlet-mapping> ??????<welcome-file-list> ????????<welcome-file>index.htm</welcome-file> ????</welcome-file-list> </web-app>



3.编写服务类 com.site.webservice.MyService.java

?package com.site.webservice; ??public class MyService{ ????public String getName(String name) ????{ ????????return "hi," + name; ????} }



4.在项目WEB-INF目录下创建deploy.wsdd文件,内容为:

?<deployment xmlns="http://xml.apache.org/axis/wsdd/"????xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> ????<service name="MyService" provider="java:RPC"> ????????<parameter name="className" value="com.site.webservice.MyService" /> ????????<parameter name="allowedMethods" value="*" /> ????</service> </deployment>



5.在项目WEB-INF目录下创建deploy.bat文件,内容为:

?set Axis_Lib=D:\workspace\proj1\WebContent\WEB-INF\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Axis_Servlet=http://localhost:8080/proj1/servlet/AxisServlet %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd


dos下进入D:\workspace\proj1\WebContent\WEB-INF目录,执行deploy.bat,执行成功后会提示:

?Processing file deploy.wsdd <Admin>Done processing</Admin>


通过http://localhost:8080/proj1/services可以检查服务是否发布成功



6.编写客户端代码调用我们创建的服务:

?String endPoint = "http://localhost:8080/proj1/services/MyService"; Service service = new Service(); Call call = (Call)service.createCall(); call.setOperationName(new QName(endPoint,"getName")); call.setTargetEndpointAddress(new URL(endPoint)); String result = (String)call.invoke(new Object[]{"abcd"}); System.out.println(result);


执行该代码打印内容为:hi,abcd



7.如果需要卸载MyService服务,在WEB-INF目录下创建undeploy.wsdd文件:

?<undeployment xmlns="http://xml.apache.org/axis/wsdd/">?? ?<service name="MyService"/>?? </undeployment>


在WEB-INF目录下创建undeploy.bat文件:

?set Axis_Lib=D:\workspace\proj1\WebContent\WEB-INF\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Axis_Servlet=http://localhost:8080/proj1/servlet/AxisServlet %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% undeploy.wsdd


dos下进入D:\workspace\proj1\WebContent\WEB-INF目录,执行undeploy.bat,MyService服务就被卸载了


二、以Stubs的方式调用服务

?
1、在WEB-INF目录下创建client.bat文件:

?set Axis_Lib=D:\workspace\proj1\WebContent\WEB-INF\lib set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib% set Output_Path=D:\workspace\proj1\src set Package=com.site.client %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:8080/proj1/services/MyService?wsdl


dos下进入D:\workspace\proj1\WebContent\WEB-INF目录,执行client.bat,会在com.site.client下自动生成如下文件类:

MyServiceSoapBindingStub.java

SayHello.java

SayHelloService.java

SayHelloServiceLocator.java


2、客户端调用

?SayHelloService service = new SayHelloServiceLocator(); SayHello client = service.getMyService() ; String result = client.getName("abcdefg"); System.out.println(result);

热点排行