web service 即时发布

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

你可能感兴趣的:(java,apache,tomcat,xml,Web)