怎么安装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 }
上面的文件在axis的D:/axis/axis-1_1/samples/userguide/example1目录下.
加入需要的包,连接上网络,运行程序,你将得到下面的结果:
Sent 'Hello!', got 'Hello!'
用tcpmon或SOAP 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服务的方法
2466

被折叠的 条评论
为什么被折叠?



