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

Axis技术文档

发布时间:2020-12-17 02:48:09 所属栏目:安全 来源:网络整理
导读:Axis 技术文档 ? ? 简介 : Axis 本质上就是一个 SOAP 引擎,提供创建服务器端、客户端和网关 SOAP 操作的基本框架, Axis 目前版本是为 Java 编写的,不过为 C++ 的版本正在开发中。而在工作中我们可以方便的通过 Axis 进行 Webservice 的开发。 ? 下面我们

Axis技术文档

?

?

简介Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架,Axis目前版本是为Java编写的,不过为C++的版本正在开发中。而在工作中我们可以方便的通过Axis进行Webservice的开发。

?

下面我们就一步一步的来进行Axis的开发

1.????????Axis的官方网站上下载(http://ws.apache.org/axis/).解压缩axis-bin-1_3.zip。在lib中包含Axis必须使用的jar包。

2.???????? 下载完成之后,安装axis.( Axis 1.3,tomcat 5.028,jdk 1.42),复制你的Axis -bin-1_3安装包下webapps文件夹中的axis目录到tomcatwebapps下,发布你的Axis应用,启用你的TomcatIE地址栏中输入http://localhost:8080/axis, 这时就会出现axis的欢迎画面.进入Validation链接以检查axis所使用的jar包是否全都存在,如果不存在,就下载那部分不存在的,下载完后,把下载解压后文件夹中lib目录下的.jar文件复制到tomcat/webapps/ axis/WEB-INF/lib目标下,重启Tomcat,最终如果出现下面的界面,说明安装axis成功。

3.???????? 测试axis

a)???????? 新建一web项目,名称为testServiceAxis,把tomcat/webapps/ axis/WEB-INF/lib目录下的所有jar包全部复制到testServiceAxis项目的web-inf/lib目录中去。在src目录下新建一文件去名称为HelloWorld.jws,里面的代码很简单,就是一个方法打印一句话,”Hi,你好,XXX,欢迎你来到精彩的axis世界上。

public class HelloWorld{

??? public String hello(String name) {

?????? if (name == null) {

?????????? name = "";

?????? }

?????? return "Hi,你好 " + name + ",欢迎你来到精彩的axis世界上";

??? }

}

让上面的代码做为服务器端来运行。也就是说,供别个调用的一个服务。

b)??????? 另建一web项目,名称为testClieatAxis,把tomcat/webapps/ axis/WEB-INF/lib目录下的所有jar包全部复制到testServiceAxis项目的web-inf/lib目录中去。现在我们编写调用web service上的程序,也就是说,我们现在进行两个应用间的通信。在src目标下新建一测试类,名称为Test.java,代码如下:

import java.net.MalformedURLException;

import java.rmi.RemoteException;

?

import javax.xml.rpc.ServiceException;

?

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

?

public class Test {

?

??? /**

??? ?* @param args

??? ?*/

??? public static void main(String[] args) {

?????? String endpoint = "http://192.168.1.234:" + "8080"

????????????? + "/testServiceAxis/HelloWorld.jws"; // 以定制发布方式,如果是jws文件,则endpoint为相应的jws文件

?

?????? Service service = new Service();

?????? Call call;

?????? try {

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

?????????? String str="Fangtengfei";

?????????? call.setTargetEndpointAddress(new java.net.URL(endpoint));

?????????? call.setOperationName("hello");

?????????? //object数组为远程方法的参数

?????????? String res = (String) call.invoke(new Object[] { str });

?????????? System.out.println(res);

?????? } catch (ServiceException e) {

?????????? e.printStackTrace();

?????? } catch (MalformedURLException e) {

?????????? e.printStackTrace();

?????? } catch (RemoteException e) {

?????????? e.printStackTrace();

?????? }

??? }

}

最后如果能够进行正常的打印,就说明已经配置成功了,一个最简单的web服务,客户端和服务器端就完成了通信了。

c)??????? 以上的程序把它放到两个程序中的目的就是,为了让用户更容易明白,服务端和客户端之间的通信,让两者间不混淆。所以把它放在两个项目中来处理,其实放到一个项目中来测试也是可以的。

d)??????? 在实际web service开发中,是绝对没这么简单的,下面让我们来看一下,如何通过WSDL的方式进行通信,也即通过可配置的形式进行通信。

4.???????? 通过WSDL进行webservice的通信:

a)???????? 什么是WSDL(Web Services Description Language): 是一个用来描述Web服务和说明如何与Web服务通信的XML语言。具体详细内容请参考http://blog.csdn.net/ftf_tengfei/archive/2007/09/20/1793221.aspx

b)??????? 另介绍一个Eclispe的插件,Wsdljava的插件http://www.myspotter.com/wsdl2java.shtml,在此份文档中,我们转换还是通过java命令来完成。由于要用到相关的java命令,我们需要配置相关的系统环境变量:

1)??????? 先要保证java系统环境变量没问题,具体内容可参考网上教程。

2)??????? 另要配置axis的系统环境变量,主要有以下几个:

l???????? AXIS_LIB

l???????? AXIS_HOME

l???????? AXISCLASSPATH%AXIS_LIB%/axis.jar;%AXIS_LIB%/commons-discovery-0.2.jar;%AXIS_LIB%/commons-logging-1.0.4.jar;%AXIS_LIB%/jaxrpc.jar;%AXIS_LIB%/saaj.jar;%AXIS_LIB%/log4j-1.2.8.jar;

?

注意此目录一定要配置正确,不然等下出现类找不到错误,也就是说,如果出现classDefFine的时候,就可来这里找下原因。

c)??????? 新键一web工程,取名称为testAxisWSDL,同样需要在项目的classpath中加入axis文件夹下的jar

d)??????? src目录编写一个和上面一样.java文件,文件名称和内容如下:

HelloWorld.java

?

public class HelloWorld{

??? public String hello(String name) {

?????? if (name == null) {

?????????? name = "";

?????? }

?????? return "Hi,欢迎你来到精彩的axis世界上";

??? }

}

???? ???编译上述文件,并把他copytomcat/webapps/ axis/WEB-INF/classes

e)???????? 同在src目录下,新建一个WSDL文件,取名称deploy.wsdd

HelloWorld.java

?

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

??? <service name="HelloWorld" provider="java:RPC">

??????? <parameter name="className" value="HelloWorld"/>

??????? <parameter name="allowedMethods" value="sayHello"/>

??? </service>

</deployment>

?

f)???????? DOS下转换目录到%TOMCAT_HOME%/webapps/axis/WEB-INF/ classes,命令:

java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd

注意执行这个命令的时候,一定要保证Tomcat是启动的,否则执行不成功。

g)??????? 最后,回到testAxisWSDL项目中,新建一个测试类,名称和内容如下所示:

HelloClient.java

?

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

?

public class HelloClient {

?

???????? public static void main(String[] args) throws Exception {

?

?????????????????? String endpoint = "http://localhost:" + "8080"

???????????????????????????????????? + "/axis/services/MyService";// 注意!差别仅仅在这里!!

?

?????????????????? Service service = new Service();

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

?????????????????? call.setTargetEndpointAddress(new java.net.URL(endpoint));

?????????????????? call.setOperationName("hello");

?

?????????????????? String res = (String) call.invoke(new Object[] {"Fangtengfei"});

?

?????????????????? System.out.println(res);

???????? }

}

?

h)??????? 是不是这里的运行结果和刚才上面的运行结果是一样的呢,是的,是完全一样的,只是我们采用了不同的实现方式,到这里一个入门级别的axis就算实现了,是的,确实到这,就完全实现了。。

i)????????? 到这过程中,如果读者有什么不明白的地方,请发邮件至:ftf_tengfei#163.com

(编辑:李大同)

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

    推荐文章
      热点阅读