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等基本数据类型,避免
调用者序列化出错.
<?xml version="1.0" encoding="UTF-8"?>
<deployment name="defaultClientCon
fig" 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">
<p
arameter name="
disablePrettyXML" value="true" />
<p
arameter name="dotNetSoapEncFix" value="true" />
<p
arameter name="enableNamespacePrefixOptimization" value="false" />
<requestFlow>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<p
arameter name="s
cope" value="session" />
</handler>
<handler type="java:org.apache.axis.handlers.JWSHandler">
<p
arameter name="s
cope" value="request" />
<p
arameter name="extension" value=".jwr" />
</handler>
</requestFlow>
<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">
<p
arameter name="allowedMethods" value="*" />
<p
arameter name="className"
value="com.kipy.demo.axis.server.HelloWorld" />
</service>
<transport name="http">
<p
arameter name="qs:list"
value="org.apache.axis.transport.http.QSListHandler" />
<p
arameter name="qs:method"
value="org.apache.axis.transport.http.QSMethodHandler" />
<p
arameter 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">
<p
arameter name="allowedMethods" value="*" />
<p
arameter name="className"
value="com.kipy.demo.axis.server.HelloWorld" />
</service>
多个服务可以配置多个service
标签,<p
arameter name="allowedMethods" value="*" />表示发布所有
方法,<p
arameter name="className" value="com.kipy.demo.axis.server.HelloWorld" />是服务类配置.
四,配置AxisServlet
<servlet>
<servlet-name>AxisServlet</servlet-name>
<servlet-class>
org.apache.axis.transport.http.AxisServlet
</servlet-class>
</servlet>
<servlet-name>AxisServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
到此服务器端完成,部署到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.编写测试方法