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 的用户手册上面也写得很明白.