关闭

Axis技术文档

标签: stringservicewebserviceimporttomcatjava
2105人阅读 评论(1) 收藏 举报

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,你好 " + name + ",欢迎你来到精彩的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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:69753次
    • 积分:963
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:26篇
    • 译文:0篇
    • 评论:7条
    最新评论