Axis提供两种发布方式:
1.即时发布(Instant deployment)
2.定制发布(cutstom deployment)
即时发布是一种非常简单的web service发布方式, 但是限制太多, 因此 在实际开发中 定制发布 才是首选..
3.即时发布JWS ( java web service):
即时发布,提供了一种非常简单的发布形式,发布者只要有java源代码.也就是.java文件,然后把其后缀名改成.jws(也就是Java Web Service的缩写)拷贝到%TOMCAT_HOME%\webapps\axis 目录中,即完成了所有的发布工作.axis的编译引擎会处理所有的事情.
下面是一段代码示例:
public class HelloWroldJWS {
public String test(String a ,String b){
System.out.println("my first web service jws 即使发布!");
System.out.println("a="+a+",b="+b);
return a+b;
}
}
把HelloWorldJWS.java文件改成 HelloWorldJWS.jws文件,然后拷贝到%TOMCAT_HOME%\webapps\axis\目录中,启动tomcat服务.
然后访问:http://localhost:9999/axis/HelloWorldJWS.jws
就能看到click to see the WSDL这个超链接,就说明发布成功.
接下来就是写Client代码了..
import java.rmi.RemoteException;
import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
/***
* Client Code;
* web service 实例;
* @author 周海涛;
*/
public class ClientDemo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Service service=new Service();
String url="http://localhost:9999/axis/HelloWroldJWS.jws";
try {
Call call=(Call) service.createCall();
call.setTargetEndpointAddress(url);
call.setOperationName(new QName(url,"test"));
try {
String result=(String)call.invoke(new Object[]{"ZhouHaiTao","I LOVE Peng Xiao Ting"});
System.out.println(result);
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
控制台输出结果:
ZhouHaiTaoI LOVE Peng Xiao Ting.
my first web service jws 即使发布!
a=ZhouHaiTao,b=I LOVE Peng Xiao Ting.
注意:假如你现在手里只有.class 或者一个 jar包,jws就不能在满足你的需求了,最要命的就是即时发布不支持带包的类,这点AXIS 的用户手册上面也写得很明白.