AXIS入门

怎么安装Axis

 

1)安装JDK1.3版或以上

我的是D:/j2sdk1.4.2

2)安装TOMCAT5.0

不一定要求是TOMCAT,只要是支持servlet 2.2 API的就可以;我的是D:/Tomcat 5.0

TOMCAT启动应该不报错.

3)下载axis1.1

http://xml.apache.org下载,解压,我的是D:/axis/axis-1_1

4)拷贝axis

D:/axis/axis-1_1/webapps/axis copy to D:/Tomcat 5.0/webapps/axis

5)建立包文件

如果你的JDK版本大于1.4,则不需要XML PARSER的包了;否则,请找到xerces,放到D:/Tomcat 5.0/webapps/axis/WEB-INF/lib目录

6)启动TOMCAT,访问http://127.0.0.1:8080/axis/,应该出现Apache-Axis启动页面.

7)点选Validate,应该报错,如下:

Error: could not find class javax.activation.DataHandler from file activation.jar

Axis will not work

See http://java.sun.com/products/javabeans/glasgow/jaf.html

Optional Components

Warning: could not find class javax.mail.internet.MimeMessage from file mail.jar

Attachments will not work

See http://java.sun.com/products/javamail/

ERROR中提到的包是应该放到相应目录的,Optional Components是可选的包.

8)我们观察,D:/Tomcat 5.0/webapps/axis目录下有个EchoHeader.jws文件,我们可以用它来测试JWS服务,访问 http://localhost:8080/axis/EchoHeaders.jws?method=list我们可以看到效果.

 

WEB services客户端例子

 

说明:本文材料取自Axis user's guide

Apache的公共Axis服务器上有一个echoString的服务,你向该服务发一个串,该服务能够返回同一个串给你.下面我们写一个WEB services客户端例子来调用该服务:

1   import org.apache.axis.client.Call;

2   import org.apache.axis.client.Service;

3   import javax.xml.namespace.QName;

4  

5   public class TestClient {

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

7          try {

8              String endpoint =

9                       "http://nagoya.apache.org:5049/axis/services/echo";

10 

               //创建两个JAX-RPC对象

11             Service  service = new Service();

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

13 

               //SOAP消息的目的地

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

               //要调用的操作名称

15             call.setOperationName(new QName("http://soapinterop.org/", "echoString"));

16  

               //用数组形式传入参数

17             String ret = (String) call.invoke( new Object[] { "Hello!" } );

18 

19             System.out.println("Sent 'Hello!', got '" + ret + "'");

20         } catch (Exception e) {

21             System.err.println(e.toString());

22         }

23     }

24  }

上面的文件在axisD:/axis/axis-1_1/samples/userguide/example1目录下.

 

加入需要的包,连接上网络,运行程序,你将得到下面的结果:

Sent 'Hello!', got 'Hello!'

 

tcpmonSOAP monitor工具查看传递的SOAP消息,如下:

<?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"

                   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

 <SOAP-ENV:Body>

    <ns1:echoString xmlns:ns1="http://soapinterop.org/">

      <arg0 xsi:type="xsd:string">Hello!</arg0>

    </ns1:echoString>

  </SOAP-ENV:Body>

</SOAP-ENV:Envelope>

这个就是一个符合SOAP规范的文件了.

 

发布自己的WEB services服务

 

1)建立自己的JAVA文件如下:

public class HelloService

{

 public String echoString(String name)

 {

  return name;

 }

}

2)将该文件改名为HelloService.jws,copy D:/Tomcat 5.0/webapps/axis目录下

3)启动TOMCAT

4)编写客户端代码如下:

package com.hongsoft.test;

import org.apache.axis.client.Call;

import org.apache.axis.client.Service;

 

import javax.xml.namespace.QName;

 

public class TestClient

{

   public static void main(String [] args) {

       try {

           String endpoint="http://localhost:8080/axis/HelloService.jws";

    

           Service  service = new Service();

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

 

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

           call.setOperationName(new QName("echoString") );

          

           String ret = (String) call.invoke( new Object[] { "Hello!" } );

 

           System.out.println("Sent 'Hello!', got '" + ret + "'");

       } catch (Exception e) {

           System.err.println(e.toString());

       }

   }

}

5)运行客户端程序,效果如下:

 Sent 'Hello!', got 'Hello!'

Axis能够自动定位文件,编译,并把SOAP调用转化为对你的服务的JAVA调用.

6)是不是很简单?是的,但你别高兴太早了,我们要注意下面的问题:

  JWS web services只是用于简单的WEB服务的,我们在服务代码中不能用package,而且,代码是在运行期

 

编译的,不到发布阶段,你找不到任何的错误提示信息.我们将在后面讨论其它的发布自己的WEB services服务的方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值