(1)首先将下载的Axis开发包解压。这将得到axis/webapps/axis目录的整体复制到Tomcat下的Webapps目录下。
(2)拷贝activation.jar和mail.jar到axis/webappx/axis/WEB-INF/lib目录下。(xmlsec.jar不需要也可以运行)
(3)启动Tomcat。访问http://localhost:8080/axis/。单击Validate链接,以测试Axis系统是否遗漏jar文件包。如果一切正常,将显示正确的happyaxis页面。
(4)配置CLASSPATH:将axis/webappx/axis/WEB-INF/lib下的所有jar文件加入到你的CLASSPATH中。当然,Eclipse等IDE中只要配置好工程的类路径就好了。
(5)编写用作服务的类。
public class Hello{
public String sayHello(String name){
return “Axis say hello to ”+name;
}
}
然后复制Hello.java到tomcat/webapps/axis 目录下,更改Hello.java到Hello.jws
(6)编写客户端程序代码
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;
import javax.xml.namespace.QName;
public class HelloClient {
public static void main(String[] args) throws MalformedURLException,
ServiceException, RemoteException {
try {
String endpoint = "http://localhost:8080/axis/Hello.jws";
Service service = new Service();
Call call = null;
call = (Call) service.createCall();
call.setOperationName(new QName(endpoint, "sayHello"));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
String ret = (String) call.invoke(new Object[] { "jay" });
System.out.println("return value is: " + ret);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
PS:
相应文件的下载地址:
Activation.jar
http://java.sun.com/products/javabeans/glasgow/jaf.html
mail.jar
http://java.sun.com/products/javamail/javamail-1_1_3.html
xmlsec.jar
http://apache.linuxforum.net/dist/xml/security/java-library
Axis
http://www.apache.org/dist/ws/axis/1_1/
Tomcat
调试感觉:
(1)调试好服务器端程序,然后考虑把预将发布的服务变成public(当然,可以通过部署
文件选择性的部属所提供的服务),最后将服务器端程序拷贝到
tomcat/webapps/axis下,改名jws。
(2)调试客户端程序:最好的方法是做Stub,这样可以方便的调试客户端
(3)最好将客户端连接的部分单独提炼出来作为一个工具类Utility.java,然后由真正的
客户端代码负责调用。
(4)当出现服务器端程序调用另外的一个类的时候,将这个类的class文件直接拷贝到Tomcat/webapps/axis/WEB-INF/classes中。
(5)服务器端程序访问数据库时候,需将相应的数据库驱动jar文件拷贝到 Tomcat/webapps/axis/WEB-INF/lib中。(例如将oracle的classes12.jar文件拷贝到lib中,服务器程序才可以正常的访问数据库)。
(6)由于服务器到客户端中间传递的是xml,所以在提供服务的过程中,中间发送的的数据类型非常有限int, boolean, String, double, Date, Hashtable, Vector, byte[]。对于负责数据结构需要自定义<struct>来进行传递。当然解决问题的可以利用xml定义的方法。(篇幅有限。。。)