axis的部署方式

以JWS的方式在TOMCAT上的部署WEBSERVICE
前言:
 相信有越来越多的程序员将接触WEBSERVICE这一新的领域。但是,总感觉很迷茫。买本书来看看,介绍的好象都是XML的知识,什么WSDL等等。搞的我们云里雾里的。那么,我们不仿自己来试试看,自己写一些WEBSERVICE程序,看看它的运行结果是怎么样子的。本文档就是介绍怎么样在TOMCAT上部署简单的WEBSERVICE服务,客户端又是怎么样去访问这个服务,并得到自己想要的信息的。
AXIS是Apache SOAP的第三代产品。
下面介绍一下以JWS的方式在TOMCAT上的部署WEBSERVICE。
本文档的适用对象:
 本文档适合于WEBSERVICE的初学者。但是,对TOMCAT有点了解,至少知道怎么启动TOMCAT。
关于该文档的约定:
 TOMCAT.DIR   表示TOMCAT的安装路径。
 webapps.dir  表示tomcat.dir/webapps路径。
 axis.dir     表示tomcat.dir/webapps/axis
步骤:
一、下载并安装axis。
 下载地址:http://xml.apache.org。下载并解压。把AXIS目录拷贝到webapps.dir目录下。一般,axis.dir的目录结构如下所示:
 axis
 --web-inf
 ----attachments
 ----classes
 ----jwsClasses
 ----lib
在axis.dir/web-inf目录下还有一个重要的文件server-config.wsdd。安装好AXIS之后,运行TOMCAT,即启动服务。启动完成之后,我门就可以使用我门的浏览器访问我门的服务。在地址栏里输入http://localhost:8080/axis,这时我们就可以看到Apache-AXIS的欢迎界面。假如,没有看到这个欢迎界面,那么,安装AXIS是失败的。

二、写服务端代码:
 MyService.java:

java 代码
  1. public class MyService {   
  2.     public String sayHello(String name,boolean isMan) {   
  3.         if(isMan) {   
  4.             return "Hello,Mr "+name+"! Welcome to Webservice";   
  5.         } else {   
  6.             return "Hello,Miss "+name+"! Welcome to Webservice";   
  7.         }   
  8.     }   
  9. }  


注意:不要将MyService.java放在一个PACKAGE里面。

三、写客户端程序

java 代码
  1. package com.unimas.datacollection.webservices.client;   
  2. import org.apache.axis.client.Call;   
  3. import org.apache.axis.client.Service;   
  4. import org.apache.axis.encoding.XMLType;   
  5.   
  6. import javax.xml.namespace.QName;   
  7. import javax.xml.rpc.ParameterMode;   
  8.   
  9. public class Client   
  10. {   
  11.     public static void main(String [] args)   
  12.     {   
  13.         try {   
  14.             String endpoint="http://localhost:8080/axis/MyService.jws";   
  15.   
  16.             Service  service = new Service();   
  17.             Call     call    = (Call) service.createCall();   
  18.   
  19.             call.setTargetEndpointAddress( new java.net.URL(endpoint) );   
  20.             call.setOperationName( new QName("MyService""sayHello") );   
  21.             call.addParameter( "arg1", XMLType.XSD_STRING, ParameterMode.IN);   
  22.             call.addParameter( "arg2", XMLType.XSD_BOOLEAN, ParameterMode.IN);   
  23.             call.setReturnClass(String.class);   
  24.   
  25.             String man = (String) call.invoke( new Object[] { "syc",new Boolean(true) } );   
  26.             String women = (String) call.invoke( new Object[] { "yll",new Boolean(false) } );   
  27.             System.out.println("if is a man you will see:"+man);   
  28.             System.out.println("if is a women you will see:"+women);   
  29.         } catch (Exception e) {   
  30.             e.printStackTrace();   
  31.             System.err.println(e.toString());   
  32.         }   
  33.     }   
  34. }  


假如用addParameter方法来设置参数的话,必须使用setReturnType来设置返回类型。与之相等效的方法为setReturnClass。
还有一种客户端程序的写法,如下所示:

java 代码
  1. package com.unimas.datacollection.webservices.client;   
  2.   
  3. import org.apache.axis.client.Service;   
  4. import org.apache.axis.client.Call;   
  5.   
  6. import javax.xml.namespace.QName;   
  7.   
  8. public class AnothClient {   
  9.    public static void main(String [] args) {   
  10.        try {   
  11.            String endpoint="http://localhost:8080/axis/MyService.jws";   
  12.   
  13.            Service  service = new Service();   
  14.            Call     call    = (Call) service.createCall();   
  15.   
  16.            call.setTargetEndpointAddress( new java.net.URL(endpoint) );   
  17.            QName qname = new QName("sayHello");   
  18.            call.setOperationName(qname);   
  19.   
  20.             String man = (String) call.invoke( new Object[] { "syc",new Boolean(true) } );   
  21.             String women = (String) call.invoke( new Object[] { "yll",new Boolean(false) } );   
  22.             System.out.println("if is a man you will see:"+man);   
  23.             System.out.println("if is a women you will see:"+women);   
  24.        } catch (Exception e) {   
  25.            System.err.println(e.toString());   
  26.            e.printStackTrace();   
  27.        }   
  28.    }   
  29. }  

这两中写法,所达到的效果是一样的。
四:部署
将MyService.java拷贝到axis.dir目录下面。并将起重命名为MyService.jws。这个时候,我门就把我们的服务器端部署好了,启动我们的服务器(执行startup.bat)。
五、运行客户端程序:
1、运行客户端程序Client。你将看到如下结果:
 if is a man you will see:Hello,Mr syc! Welcome to Webservice
 if is a women you will see:Hello,Miss yll! Welcome to Webservice
2、运行客户端程序AnothClient。你将看到如下结果:
 if is a man you will see:Hello,Mr syc! Welcome to Webservice
 if is a women you will see:Hello,Miss yll! Welcome to Webservice
终结:以上就是一个简单的WEBSERVICE部署的全过成。非常简单是不?但是,这里有个致命的确定,就是服务器程序不能放在一个包里面,也就是说不能使用PACKATE。优点就是简单实用。
参考资料:
Axis入门:www.csdn.net
Axis Documentation:  http://ws.apache.org/axis/java/index.html
The Java Web Services Tutorial http://java.sun.com/webservices/docs/1.1/tutorial/doc/index.html


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.TOMCAT+AXIS的安装配置 首先机子上应该安装JDK1.5版本以上(带有XML解析包)。我这里是1.5.0.6 从APACHE的官方网站(www.apache.org)下载TOMCAT安装软件。下载版本要在4.0以上。这里用的是5.0版本。安装完后,启动TOMCAT,访问http://localhost:8080/安装成功应该出现Apache启动页面。以下用TOMCAT_HOME表示TOMCAT的安装主目录。 解压缩AXIS软件包(这里为1.4版本axis.war包)。 将axis项目放在某个盘的根目录下,(因在tomcat的安装目录在版本号前有个空格,配置axis环境变量时系统认不到对应的变量路径) 如:D:\axis;然后在TOMCAT的server.xml的添加项目加载的<Context>: <Context path="/axis" docBase="D:/axis" debug="0" reloadable="true" crossContext="true"></Context> 重新启动TOMCAT,访问http://localhost:8080/axis/,出现Apache-Axis启动页面。点击链接Validation进入页面。上面会显示已经找到的jar包和未找到的jar包。对于未找到的jar包。可以从它提示的链接中下载。我缺少activation.jar,mail.jar,xerces.jar这里在可选组件(optional components)中提示缺少xml-security包。从它提示的地址下载软件包后,解压缩后在lib文件夹下,将xalan.jar和xmlsec-1.2.1.jar复制到TOMCAT_HOME\webapps\axis\WEB-INF\lib下。重新启动TOMCAT,再点击链接Validation进入页面后。将没有未找到包的提示了。 接下来配置类路径。右键点击我的电脑——属性——高级——环境变量。在系统变量中选择ClassPath进行编辑。增加下列类路径(以“;”间隔符)。 D:\axis\WEB-INF\lib\activation.jar; D:\axis\WEB-INF\lib\axis.jar; D:\axis\WEB-INF\lib\axis-ant.jar; D:\axis\WEB-INF\lib\axis-schema.jar; D:\axis\WEB-INF\lib\commons-discovery-0.2.jar; D:\axis\WEB-INF\lib\commons-logging-1.0.4.jar; D:\axis\WEB-INF\lib\jaxrpc.jar; D:\axis\WEB-INF\lib\log4j-1.2.8.jar; D:\axis\WEB-INF\lib\mail.jar; D:\axis\WEB-INF\lib\saaj.jar; D:\axis\WEB-INF\lib\wsdl4j-1.5.1.jar; D:\axis\WEB-INF\lib\xmlsec.jar 启动TOMCAT,浏览器输入http://localhost:8080/axis/HelloWorldService.jws?wsdl 会出现wsdl页面。说明可以提供正常服务了。 现在可以制作客户端了程序了, 命令参数的形式: java org.apache.axis.wsdl.WSDL2Java http://localhost:8080/axis/HelloWorldService.jws?wsdl -p test.webservice -o C:\prj 参数说明: -p 指定生成的java文件包名 (可省略默认为 HelloWorldService内的包名路径) -o 指定生成的java文件输出目录 如果你看到这样的画面就表示正常运作并自动产生四个.JAVA的档案了,如果出现 org/apache/...CLASS NOT FOUND之类的话可能你的ClASSPATH设置的有问题。 在C:\prj\localhost\axis\HelloWorldService_jws下面产生以下四个文件 HelloWorldService.java HelloWorldServiceService.java HelloWorldServiceServiceLocator.java HelloWorldServiceSoapBindingStub.java 现在可以将以上生成的四个类进行调用已发布的webservice 注:HelloWorldService 的webservice已经创建在axis1.4.rar包内,只要运行axis项目即可访问到该webservice
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值