微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用axis编写WebService客户端(客户端自动更新)

使用axis编写WebService客户端(客户端自动更新)

http://blog.sina.com.cn/s/blog_49f485700100m0dr.html

(2010-06-30 08:31:36)
编写Web Service服务器端以及客户端有许多种方法,前面的博文中也有提及到,但是,之前所有的方法,都是通过wsdl生成客户端,这样一来,当服务器端变化的时候,我们必须重新生成客户端。如何能够在程序运行的时候直接调用服务器端,而不需要客户端做任何修改呢?【sky在南京使用了这种方式,嘎嘎

使用axis编写WebService客户端(客户端自动更新)

,这方法太简单了】
我们可以通过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); 
  }
}
(二)传统生成客户端方法
通过 http://localhost:8080/axis/Server.jws?wsdl我们可以得到wsdl文件,通过eclipse自带的generate web service client工具,我们可以生成客户端,生成目录结构如下:

使用axis编写WebService客户端(客户端自动更新)

,我们客户端可以通过:
ServerProxy obj=new ServerProxy();
System.out.println(obj.display("hello"));的方式来调用
【比较】
两种生成客户端的方法
(1)第一种方法,当服务器端程序改变的时候,我们不需要修改客户端,客户端自动更新。每次连接的时候都调用最新的。而第二种方法,当服务器端程序改变的时候,我们需要重新生成客户端,否则无法正常运行。
(2)第一种方法使用比较麻烦,不直观。第二种方法使用简单,给用户呈现的仅仅是一个简单的类的实例化和函数调用

注:需要重启tomcat

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐