几种调用web service的方式(含spring)

 

首先写一个服务端:

  1.  
  2. package com.pp.ws.server;
  3.  
  4. import javax.jws.WebMethod;
  5. import javax.jws.WebParam;
  6. import javax.jws.WebService;
  7.  
  8. @WebService(targetNamespace="http://wsapi.pp1618.com", serviceName="PPLoginService")
  9. public class LoginService {
  10.  
  11. @WebMethod
  12. public String login(@WebParam(name="username") String username, @WebParam(name="password") String password){
  13. if(username != null && username.equals(password)){
  14. return "OK";
  15. }
  16. return "Faliure";
  17. }
  18. }
  19. package com.pp.ws.server;
  20.  
  21. import javax.xml.ws.Endpoint;
  22.  
  23. public class AppServer {
  24. public static void main( String[] args ) {
  25. Endpoint.publish("http://127.0.0.1:6644/user/login", new LoginService());
  26. }
  27. }

启动。然后,用wsimport(JDK自带命令,本文章中使用的是JDK1.8)生成源代码,命令如下:

wsimport -s ./src -p com.pp.client.ws -encoding utf-8 http://127.0.0.1:6644/user/login?wsdl

另外新建一个maven项目,把上面生成的代码(src目录)拷贝到项目的src目录中去

代码结构如下:

 

并且加入spring依赖

  1.  
  2. <dependency>
  3. <groupId>org.springframework</groupId>
  4. <artifactId>spring-web</artifactId>
  5. <version>4.3.2.RELEASE</version>
  6. </dependency>
  7. 调用的示例代码如下:
  8. package com.pp.client;
  9.  
  10. import java.net.MalformedURLException;
  11. import java.net.URL;
  12.  
  13. import javax.xml.namespace.QName;
  14. import javax.xml.ws.Service;
  15.  
  16. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  17. import org.springframework.context.annotation.Bean;
  18. import org.springframework.context.annotation.Configuration;
  19. import org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean;
  20.  
  21. import com.pp.client.ws.LoginService;
  22. import com.pp.client.ws.PPLoginService;
  23.  
  24. public class AppClient {
  25.  
  26. //方式一
  27. public static void fun1() throws Exception {
  28. URL url = new URL("http://127.0.0.1:6644/user/login?wsdl");
  29. //QName的两个参数,参照LoginService上面的注解
  30. QName qname = new QName("http://wsapi.pp1618.com", "PPLoginService");
  31. Service service = Service.create(url, qname);
  32. LoginService ls = service.getPort(LoginService.class);
  33. System.out.println(ls.login("admin", "123"));
  34. System.out.println(ls.login("admin", "admin"));
  35. }
  36.  
  37. //方式二(PPLoginService内部其实使用的是方式一)
  38. public static void fun2() throws Exception {
  39. URL url = new URL("http://127.0.0.1:6644/user/login?wsdl");
  40. PPLoginService ppls = new PPLoginService(url);
  41. LoginService ls = ppls.getLoginServicePort();
  42. System.out.println(ls.login("admin", "123"));
  43. System.out.println(ls.login("admin", "admin"));
  44. }
  45.  
  46. //方式三,使用spring封装的方式
  47. public static void fun3() throws Exception {
  48. AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(WSConfig.class);
  49. LoginService ls = context.getBean(LoginService.class);
  50. System.out.println(ls.login("admin", "123"));
  51. System.out.println(ls.login("admin", "admin"));
  52. context.close();
  53. }
  54.  
  55. public static void main(String[] args) throws Exception {
  56. fun1();
  57. fun2();
  58. fun3();
  59. }
  60. }
  61.  
  62. @Configuration
  63. class WSConfig {
  64.  
  65. @Bean
  66. public JaxWsPortProxyFactoryBean createMainCouponService() throws MalformedURLException {
  67. //JaxWsPortProxyFactoryBean 类在spring-web.jar里面
  68. JaxWsPortProxyFactoryBean bean = new JaxWsPortProxyFactoryBean();
  69. bean.setServiceInterface(LoginService.class);
  70. bean.setServiceName("PPLoginService");
  71. bean.setWsdlDocumentUrl(new URL("http://127.0.0.1:6644/user/login?wsdl"));
  72. //设置超时
  73. bean.addCustomProperty("com.sun.xml.internal.ws.request.timeout", 20000);
  74. bean.addCustomProperty("com.sun.xml.internal.ws.connect.timeout", 20000);
  75. return bean;
  76. }
  77. }

 

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

历史上的今天:03月28日

热门专题

国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
昆明网站建设|昆明网站建设,昆明网站开发,昆明网站建设公司,昆明网站建设价格,昆明网站设计,昆明网站制作,网页设计,高端网站建设,高端网站设计
昆明网站建设
大理科技管理学校|大理科技管理中等职业技术学校,大理市科技管理中等职业技术学校
大理科技管理学校
云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
外贸网站建设|外贸网站建设,英文网站制作,英文网站设计,美国主机空间,外贸建站平台,多语言网站制作
外贸网站建设
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
中源管业|中源管业,中源管业公司,中源管业有限公司,中源管业电话,中源管业地址,中源管业电力管,中源管业mpp电力管,中源管业cpvc电力管,中源管业pe穿线管
中源管业

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部