webservice-axis
webservice~axis
一.准备工作: 1. 安装axis。去官方网站http://ws.apache.org/axis/下载axis包,然后解压到任何一个目录。本例使用的是axis-bin-1_4.tar.gz ,解压到E:axis-bin-1_4axis-1_4。 2. 开发环境准备。本例使用MyEclipse6.0 ,java j2ee 1.4库,web server用tomcat6。 二.创建web工程: 1. MyEclipse中新建web工程,名称为testAxis。工程目录为:D:JavaProjecttestAxis。 2. 把testAxis部署到tomcat。 3. 引入axis包: 把axis目录下的E:axis-bin-1_4axis-1_4 lib下的所有jar包拷贝到工程下面的WebRootWEB-INFlib下,myelipse会自动添加到引用库: 4. 修改web.xml:如果没有特殊情况,最简单的方法就是用axis解压包中的web.xml直接替换testAxis工程的web.xml。例如本例,就用E: axis-bin-1_4axis-1_4webappsaxisWEB-INFweb.xml替换工程testAxis下的web.xml。 三.创建webservice: 1. 在工程testAxis里新建要实现方法的接口:本例新建sayHelloToCkp.java,放在com.ckp包中。
package com.ckp; public interface sayHelloToCkp { public String sayHello (); } 2. 把该类生成wsdl文件: Axis里有一个Java2WSDL方法,用于把java类生成wsdl。当然你可以写命令行手动执行这个方法。这里讲下使用MyEclipse来运行这个方法。 在sayHelloToCkp.java类文件上右键,Run As——》Open Run Dialog: 弹出窗口,新建一个configuration,下图1处,然后 Main选项卡中的main class 输入: org.apache.axis.wsdl.Java2WSDL; Arguments选项卡中的program arguments输入,如下图 -o ckp.wsdl -l "http://localhost:8080/testAxis/services/ckp" -n "urn:ckp" -p"com.ckp" "urn:ckp" com.ckp.sayHelloToCkp 然后点击Run。会在工程目录D:JavaProjecttestAxis下生成ckp.wsdl文件。 3. 用wsdl生成服务类 axis里面有WSDL2Java的方法(与Java2WSDL相反),用于把wsdl文件生成java service类。当然你还可以写命令行手动执行这个方法。这里讲下使用MyEclipse来运行这个方法。 同上,还是右键Run As——》Open Run Dialog,弹出窗口,新建configuration。这次使用 org.apache.axis.wsdl.WSDL2Java , 参数是 -t -B -v -D -s -p com.ckp.server D:JavaProjecttestAixsckp.wsdl 如下图:
Run后,将在项目的根目录下生成相关的服务类、build.xml和deploy.wsdd,undesploy.wsdd等。我们把他们拷贝到工程里的src下即可(注意包的位置): 4. 服务的部署和生成server_config.wsdd: 先启动tomcat,然后运行命令行cmd,到达web服务器里类和deploy.wsdd所在的目录,如本例的是c:apache-tomcat-6.0.14webappstestAxisWEB-INFclassescomckpserver 执行如下命令: java -Djava.ext.dirs=E:axis-bin-1_4axis-1_4lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/testAxis/services/ckp?wsdl deploy.wsdd 前面的路径是axis解压路径里的lib路径,后面是未来的service的wsdl地址。 生成成功后,c:apache-tomcat-6.0.14webappstestAxisWEB-INF下便可看到server-config.wsdd文件。 5. 测试: 在WebService的实现类CkpSoapBindingImpl.java里添加如下代码: package com.ckp.server; public class CkpSoapBindingImpl implements com.ckp.server.SayHellowToCkp{ public java.lang.String sayHello() throws java.rmi.RemoteException { return "hello you"; } } 重启tomcat,输入http://localhost:8080/testAxis/services 访问。 四.生成客户端: 有了WSDL文件,与生成服务器代码相同,只是参数不同,也是生成在项目根目录下:如下图:
注:本例中,如果不想保留原来的接口类sayHelloToCkp.java,完全可以在最开始时就把接口类放在com.ckp.server下,然后在第三步第3小步中,再把它覆盖。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |