1- 环境搭建和测试
将 TOMCAT 和JDK配置好,然后下载apache上的axis1.4 这里有两个版本axis1.4和axis2,我们使用axis1.4
http://www.ip97.com/apache.org/ws/axis/1_4/axis-bin-1_4.zip
解压后将 webapps/axis 这个目录复制到 %tomcathome%/webapps/ 下
然后启动tomcat, 打开URL: http://localhost:8080/axis/
配置成功后将有如下信息,打开 validataion 然后,页面上的信息会告诉你已经有的包和还要差的包,然后根据提示将必须的包 下载全.复制到 %tomcathome%/webapps/axis/WEB-INF/lib/目录下
重起tomat ,直到必须的包都装齐.
2- 以上步骤执行成功,可以开发webservice例子了
我使用的ECLIPSE,当然其实在eclipse下并没有用axis的开发插件,只是用来写代码而已
创建一个普通的web工程
将 %tomcathome%/webapps/axis/WEB-INF/web.xml 文件复制到工程中 WEB-INF/下,替换原来的
将 %tomcathome%/webapps/axis/WEB-INF/lib 下的jar包复制到工程下 WEB-INF/lib 下, 要包括 activation.jar 包
Axis支持三种web service的部署和开发,分别为:
1、Dynamic Invocation Interface ( DII)
2、Stubs方式
3、Dynamic Proxy方式
一、编写DII(Dynamic Invocation Interface )方式web服务
1、编写服务器端程序
public class TestHello { public String name(String name) { return "hello"+name; } }
2、将源代码保存到%TOMCAT_HOME%\webapps\axis下,重命名为TestHello.jws
3、访问连接http://localhost:8080/axis/TestHello.jws.jws?wsdl,页面显示Axis自动生成的wsdl
4、编写访问服务的客户端 TestClient.java
import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class TestClient { public static void main(String[] args) { try { // 提定service的url String endpoint = "http://localhost:7000/axis/TestHello.jws"; // 创建一个服务(service)调用call Service service = new Service(); // 通过service创建一个call Call call = (Call) service.createCall(); // 设置service所在URL call.setTargetEndpointAddress(new java.net.URL(endpoint)); // 方法名(processService)与MyService.java方法名保持一致 call.setOperationName("name"); // Object 数组封装了参数,参数为"This is Test!",调用processService(String arg) String result = (String) call.invoke(new Object[] { "许中友" }); System.out.println(result); } catch (Exception e) { e.printStackTrace(); } } }
二、编写Dynamic Proxy方式访问服务
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的TestHello.jws
2、编写代理接口
import java.rmi.Remote; import java.rmi.RemoteException; public interface HelloInterface extends Remote { public String getName(String name) throws RemoteException; }
3、编写访问客户端的程序
import javax.xml.rpc.Service; import javax.xml.rpc.ServiceFactory; import java.net.URL; import javax.xml.namespace.QName; public class TestHelloInterface { public static void main(String[] args) { try { String wsdlUrl = "http://localhost:7000/axis/TestHello.jws?wsdl"; String nameSpaceUri = "http://localhost:7000/axis/TestHello.jws"; //注意名字要和类名一样 String seviceName = "TestHelloService"; String portName = "TestHello"; ServiceFactory serviceFactory = ServiceFactory.newInstance(); Service service = serviceFactory.createService(new URL(wsdlUrl),new QName(nameSpaceUri, seviceName)); HelloInterface proxy = (HelloInterface) service.getPort(new QName(nameSpaceUri, portName),HelloInterface.class); System.out.println(proxy.name("许中友")); } catch (Exception e) { e.printStackTrace(); } } }
三、编写wsdd发布web服务,编写stub client访问web服务
这个太复杂,不懂,有懂的教我一下咯!