AXIS 1.4 进行webservice开发

来源:互联网 发布:招牌免费设计软件 编辑:程序博客网 时间:2024/05/05 21:48

webservice

      Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务。

        用简单点的话说,就是系统对外的接口!

它是一种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统中实施运行;它是一种新的web应用程序分支,是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。WebService是一个应用组件,它逻辑性的为其他应用程序提供数据与服务.各应用程序通过网络协议和规定的一些标准数据格式(Http,XML,Soap)来访问WebService,通过WebService内部执行得到所需结果.Web Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他WebService应用程序可以发现并调用它部署的服务。

 

详情参考:http://baike.baidu.com/view/837392.htm

AXIS2 进行webservice开发

 一,jar包下载

1.点击下载axis2.1.4

2.解压jar包并且导入当前项目

二,创建server端服务类

HelloWorld .java

 

package com.kipy.demo.axis.server;

 

public class HelloWorld {

public static String hello(String name) {

return "Hello " + name;

}

}

注意方法是静态的,建议返回类型为String等基本数据类型,避免调用者序列化出错.
 
三,创建server-config.wsdd
1.在项目的web-inf目录下创建文件server-config.wsdd,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientConfig" xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"
xmlns:handler="http://xml.apache.org/axis/wsdd/providers/handler">
 
<globalConfiguration>
<parameter name="disablePrettyXML" value="true" />
<parameter name="dotNetSoapEncFix" value="true" />
<parameter name="enableNamespacePrefixOptimization" value="false" />
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="session" />
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<parameter name="scope" value="request" />
<parameter name="extension" value=".jwr" />
</handler>
</requestFlow>
 
</globalConfiguration>
 
<handler type="java:org.apache.axis.handlers.http.URLMapper"
name="URLMapper" />
<handler type="java:org.apache.axis.transport.local.LocalResponder"
name="LocalResponder" />
<handler type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"
name="Authenticate" />
<service name="serviceDemo" provider="java:RPC">
<parameter name="allowedMethods" value="*" />
<parameter name="className"
value="com.kipy.demo.axis.server.HelloWorld" />
</service>
 
<transport name="http">
<parameter name="qs:list"
value="org.apache.axis.transport.http.QSListHandler" />
<parameter name="qs:method"
value="org.apache.axis.transport.http.QSMethodHandler" />
<parameter name="qs:wsdl"
value="org.apache.axis.transport.http.QSWSDLHandler" />
<requestFlow>
<handler type="URLMapper" />
<handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler" />
</requestFlow>
</transport>
 
<transport name="local">
<responseFlow>
<handler type="LocalResponder" />
</responseFlow>
</transport>
 
</deployment>
2.根据实际配置service
<service name="serviceDemo" provider="java:RPC">
<parameter name="allowedMethods" value="*" />
<parameter name="className"
value="com.kipy.demo.axis.server.HelloWorld" />
</service>
多个服务可以配置多个service标签,<parameter name="allowedMethods" value="*" />表示发布所有方法,<parameter name="className" value="com.kipy.demo.axis.server.HelloWorld" />是服务类配置.
四,配置AxisServlet
在web.xml中添加如下配置:
 <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>/services/*</url-pattern>
  </servlet-mapping>
 
到此服务器端完成,部署到web容器可以通过http://server:port/app/services进行访问
 
 

 












点击wsdl可以查看当前服务的wsdl描述信息

 

 







五,webservice调用

1.编写调用工具类

Invoker.java

 

package com.kipy.demo.axis.client.util;

 

import java.net.URL;

 

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

 

public class Invoker {

public static Object invoke(String endpoint, String method, Object[] args) {

Object target = null;

Service service = new Service();

Call call;

try {

call = (Call) service.createCall();

call.setTargetEndpointAddress(new URL(endpoint));

call.setOperationName(method);

target = call.invoke(args);

} catch (Exception e) {

e.printStackTrace();

}

return target;

}

 

}

2.编写测试方法
public static void main(String[] args) {
System.out.println(Invoker.invoke("http://127.0.0.1/Axis2Demo/services/serviceDemo", "hello", new Object[]{"WGY"}));
}
Inoker.invoke方法有三个参数,第一个是endpoint(服务的wsdl地址去掉最后的?wsdl),第二个是调用的方法名,第三个是服务方法的参数,类型为Object数组.
运行得到如下结果:







具体开发在服务端段加入自己的逻辑,如果返回数据位对象,本人提供一个将任意对象转换成良构XML的工具类,详情参阅:http://kipy.web-183.com/post/5.html

原创粉丝点击