使用axis编写WebService客户端(客户端自动更新)
http://blog.sina.com.cn/s/blog_49f485700100m0dr.html
![此博文包含图片](https://i-blog.csdnimg.cn/blog_migrate/a4c26d1e5885305701be709a3d33442f.gif)
标签: 杂谈 | 分类: webservice,vba,vb,wml |
编写Web Service服务器端以及客户端有许多种方法,前面的博文中也有提及到,但是,之前所有的方法,都是通过wsdl生成客户端,这样一来,当服务器端变化的时候,我们必须重新生成客户端。如何能够在程序运行的时候直接调用服务器端,而不需要客户端做任何修改呢?【sky在南京使用了这种方式,嘎嘎
,这方法太简单了】
![使用axis编写WebService客户端(客户端自动更新) 使用axis编写WebService客户端(客户端自动更新)](https://i-blog.csdnimg.cn/blog_migrate/8b945901cff7ad095b3d50e280606d45.gif)
我们可以通过axis插件(注意这里是版本1,由于1.2版本的目录结构发生了变化,发布的位置也不同了,目前还没有测试通过,待研究……)
【服务器端的编写】
新建一个Java Project,在src下新建一个类,叫做Server.java
内容如下:
public class Server
{
public String display(String str)
{
System.out.println(str);
return
"hello in display";
}
}/
/在服务器端打印客户端传递过来的字符串,并在客户端返回hello in display
【配置信息】
(
1)我们需要将Server.java拷贝到D:\tomcat\webapps\axis目录下,并修改.java为.jws
(2)拷贝Server.class到D:\tomcat\webapps\axis\WEB-INF\jwsClasses即可。
【客户端编写如下】
(一)客户端自动更新法
package hope;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class test {
public static void main(String[] args) throws Exception {
String endpointURL = "
http://localhost:8080/axis/Server.jws";
String str = "I am hope,this is my passed value";
//创建调用对象
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress
( new java.net.URL(endpointURL) );
call.setOperationName( new QName(endpointURL, "display") );
//指定调用函数display
String s=(String)call.invoke( new Object[] {str} );//
调用display,并传递参数str
System.out.println("s is :"+s);
}
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class test {
}
(二)传统生成客户端方法
通过
http://localhost:8080/axis/Server.jws?wsdl我们可以得到wsdl文件,通过eclipse自带的generate web service client工具,我们可以生成客户端,生成目录结构如下:
ServerProxy obj=new ServerProxy();
System.out.println(obj.display("hello"));的方式来调用。
【比较】
System.out.println(obj.display("hello"));的方式来调用。
【比较】
两种生成客户端的方法,
(1)第一种方法,当服务器端程序改变的时候,我们不需要修改客户端,客户端自动更新。每次连接的时候都调用最新的。而第二种方法,当服务器端程序改变的时候,我们需要重新生成客户端,否则无法正常运行。
(2)第一种方法使用比较麻烦,不直观。第二种方法使用简单,给用户呈现的仅仅是一个简单的类的实例化和函数的调用。
注:需要重启tomcat
注:需要重启tomcat