使用AXIS部署和使用web services

来源:互联网 发布:清理注册表 软件 编辑:程序博客网 时间:2024/05/19 19:57

 

该文档使用环境

IDE:eclipse

JDK:

ANT:1.7

AXIS:1.4

手工配置web services应用

1、 下载apache axis包,最新为axis1.4

2、 使用eclipse新建一个web project,这里叫servicesServer

3、 将axis-bin-1_4\axis-1_4\lib下jar包拷贝到项目/web-inf/lib下

4、 将在web.xml中增加如下内容:(可以使用axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF下的web.xml)

5、 在web-inf下创建文件server-config.wsdd,内容为axis-bin-1_4\axis-1_4\webapps\axis\WEB-INF下server-config.wsdd。

6、 在项目src下增加com.ruangq.services.TestServices.java类:代码如下:

package com.ruangq.services;

/**

*----------------------------------

* @author xiaoquan

* @publish 下午03:30:20

*----------------------------------

*/

public class TestServices {

       public static String getResponse(String param,String param2){

              return "in testService param is "+param+" and "+param2;

       }

}

7、 在server-config.wsdd中增加一个service:

<service name="TestServices" provider="java:RPC">

<parameter name="allowedMethods" value="*"/>

<parameter name="className" value="com.ruangq.services.TestServices"/>

</service>

8、 到此,服务器端的web services部署已经完成,下面开始客户端调用程序的编写。

9、 调用程序其实只需一个java方法。

10、              新建一个项目(什么都可以,实际上我们只是需要一个java文件而已,甚至可以再命令行中直接调用)servicesclient。

11、              在src下建立一个java文件:com.ruangq.wservices.TestServices.java,内容如下:

/**

*

*/

package com.ruangq.wservices;

import java.net.MalformedURLException;

import java.net.URL;

import java.rmi.RemoteException;

import javax.servlet.ServletConfig;

import javax.servlet.ServletContext;

import javax.xml.namespace.QName;

import javax.xml.rpc.ParameterMode;

import javax.xml.rpc.ServiceException;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

import org.apache.axis.encoding.XMLType;

/**

*----------------------------------

* @author xiaoquan

* @publish 上午10:45:48

*----------------------------------

*/

public class TestServices {

       public String callServices(){

              String endPointURL = "http://localhost:8080/servicesServer/services/TestServices";

              //1、新建Service

              Service service = new Service();

              try {

                     //2、产生调用对象

                     Call call = (Call) service.createCall();

                     //3、设置调用路径

                     call.setTargetEndpointAddress(new URL(endPointURL));

                     //4、设置调用的方法,这里的Qname没有实际意义,只是一个名字空间表示而已

                  call.setOperationName(new QName("http://example3.userguide.samples", "getResponse"));

                  //增加所需参数

                  call.addParameter("param1", XMLType.XSD_STRING, ParameterMode.IN);

                  call.addParameter("param2", XMLType.XSD_STRING, ParameterMode.IN);

                  //设置返回值类型

                  call.setReturnType(XMLType.XSD_STRING);

                  //调用返回

                  String ret = (String)call.invoke(new Object[] { "sssssssss","aaaaaaaaaaa" });

                  System.out.println("You typed : " + ret);

              } catch (ServiceException e) {

                     e.printStackTrace();

              } catch (MalformedURLException e) {

                     e.printStackTrace();

              } catch (RemoteException e) {

                     e.printStackTrace();

              }

             

              return "";

       }

      

       public static void main(String [] args){

              TestServices tester = new TestServices();

              tester.callServices();

       }

}

12、              到这里,在tomcat中部署servicesServer项目,启动tomcat,在servicesClent项目中运行TestServices.java就可以在控制台中看到结果。

Web services请求处理流程:

客户端发出web services调用-------AxisServlet过滤路径为/services/*的请求----截取*到server-config中找与该名称对应的<service></service>-----找到后,根据<service>中className中设置的服务类调用请求中请求的方法,执行方法获得返回值----响应客户端返回结果,-------客户端处理返回结果