Webservice客户端动态调用服务端功能方法

一、发布WebService服务
方式一:在服务端生成wsdl文件,下方客户端直接引用即可
 
  优点:针对要发布的方法生成一个wsdl文件即可,无需多余配置。
  缺点:每次服务端方法发生改变都需要重新生成相应的wsdl文件,不适合于功能需要经常变动的方法。
 
方式二:在服务端生成WebService的服务端代码,如需变动方法或功能直接进行相关的更改即可。
  
  优点:变更功能、方法等客户端可以动态的调用,服务端一旦变更客户端即可通过动态进行变更引用。
 
 
二、Client调用服务端接口 
 
1、 项目架构如下:
 
2、调用过程:
1)右键点击项目名称——>“NEW”——>“Other”——>输入WEB service client 如下
 
 
2)完成出现客户端配置窗口,如下
 
 
3)在“service definition”中输入webservice开放的服务地址, 注意地址末尾必须加上“?WSDL”
 
还需注意的是,创建的web service client 必须是3.0以下版本。
 
4)这个项目中除了 TestClient.java类是自己创建的,其他都是自动生成的。
 
5)TestClient.java类

public static void main(String[] args) {
try {
CalculateServiceServiceLocator service = new CalculateServiceServiceLocator();
java.net.URL url = new java.net.URL("http://localhost:8080/WebServiceTest/services/CalculateService?wsdl");
/* java.net.URL url = new java.net.URL("http://localhost:8080/WebServiceTest/services/CalculateService");*/
CalculateServiceSoapBindingStub cssbs = new CalculateServiceSoapBindingStub(url, service);
float f =cssbs.divide(5, 3);
System.out.println("相除:"+f);

f =cssbs.plus(3, 6);
System.out.println("相加:"+f);
} catch (RemoteException e) {
// TODO Auto-generated catch block20
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}




/* 静态引用Webservice
* CalculateServiceProxy csp = new CalculateServiceProxy();
CalculateService cs = csp.getCalculateService();
try {
float f=csp.multiply(3, 3);
System.out.println("乘积:"+f);
f=cs.divide(5, 2);
System.out.println("相除:"+f);
} catch (RemoteException e) {
e.printStackTrace();
}*/
}
}

这里主要用到的是***Locator 和***Stub这两个类。

 

posted @   long77  阅读(614)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示