加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

AXIS 1.4 进行webservice开发

发布时间:2020-12-17 00:22:58 所属栏目:安全 来源:网络整理
导读:webservice ? ? ?? Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用 软件 能够通过Internet来访问并使用这项在线服务。 ????????用简单点的话说,就是系统对外的接口! 它是一种构建 应用程序的普遍模型,可以在任何支持 网络通

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读