几种调用web service的方式「含spring」



 





首先写一个服务端:



package com.pp.ws.server;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;

@WebService(targetNamespace="http://wsapi.pp1618.com", serviceName="PPLoginService")
public class LoginService {

@WebMethod
public String login(@WebParam(name="username") String username, @WebParam(name="password") String password){
if(username != null && username.equals(password)){
return "OK";
}
return "Faliure";
}
}
package com.pp.ws.server;

import javax.xml.ws.Endpoint;

public class AppServer {
public static void main( String[] args ) {
Endpoint.publish("http://127.0.0.1:6644/user/login", new LoginService());
}
}


启动。 然后,用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依赖



<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.2.RELEASE</version>
</dependency>
调用的示例代码如下:
package com.pp.client;

import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.namespace.QName;
import javax.xml.ws.Service;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean;

import com.pp.client.ws.LoginService;
import com.pp.client.ws.PPLoginService;

public class AppClient {

//方式一
public static void fun1() throws Exception {
URL url = new URL("http://127.0.0.1:6644/user/login?wsdl");
//QName的两个参数,参照LoginService上面的注解
QName qname = new QName("http://wsapi.pp1618.com", "PPLoginService");
Service service = Service.create(url, qname);
LoginService ls = service.getPort(LoginService.class);
System.out.println(ls.login("admin", "123"));
System.out.println(ls.login("admin", "admin"));
}

//方式二(PPLoginService内部其实使用的是方式一)
public static void fun2() throws Exception {
URL url = new URL("http://127.0.0.1:6644/user/login?wsdl");
PPLoginService ppls = new PPLoginService(url);
LoginService ls = ppls.getLoginServicePort();
System.out.println(ls.login("admin", "123"));
System.out.println(ls.login("admin", "admin"));
}

//方式三,使用spring封装的方式
public static void fun3() throws Exception {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(WSConfig.class);
LoginService ls = context.getBean(LoginService.class);
System.out.println(ls.login("admin", "123"));
System.out.println(ls.login("admin", "admin"));
context.close();
}

public static void main(String[] args) throws Exception {
fun1();
fun2();
fun3();
}
}

@Configuration
class WSConfig {

@Bean
public JaxWsPortProxyFactoryBean createMainCouponService() throws MalformedURLException {
//JaxWsPortProxyFactoryBean 类在spring-web.jar里面
JaxWsPortProxyFactoryBean bean = new JaxWsPortProxyFactoryBean();
bean.setServiceInterface(LoginService.class);
bean.setServiceName("PPLoginService");
bean.setWsdlDocumentUrl(new URL("http://127.0.0.1:6644/user/login?wsdl"));
//设置超时
bean.addCustomProperty("com.sun.xml.internal.ws.request.timeout", 20000);
bean.addCustomProperty("com.sun.xml.internal.ws.connect.timeout", 20000);
return bean;
}
}


需要注意的是:前两种方式是使用JDK自带的方式,第三种是spring封装的调用方式





 


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

历史上的今天:03月29日

热门专题

云南巨榕教育投资集团有限公司|云南巨榕教育投资集团有限公司,巨榕教育集团,巨榕教育
云南巨榕教育投资集团有限公司
国家开放大学|国家开放大学报名,国家开放大学报考,国家开放大学,什么是国家开放大学,国家开放大学学历,国家开放大学学费,国家开放大学报名条件,国家开放大学报名时间,国家开放大学学历,国家开放大学专业
国家开放大学
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
开放大学|开放大学报名,开放大学报考,开放大学,什么是开放大学,开放大学学历,开放大学学费,开放大学报名条件,开放大学报名时间,开放大学学历,开放大学专业
开放大学
云南综合高中|云南综合高中
云南综合高中
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
安徽中源管业|安徽中源管业,安徽中源管业mpp电力管,安徽中源管业cpvc电力管,安徽中源管业pe穿线管,安徽中源管业电力管,安徽中源管业排水管,安徽中源管业通信管,安徽中源管业管材
安徽中源管业
云南高职单招|云南单招,云南单招网,云南高职单招网,云南高职单招,云南单招学校,云南单招培训
云南高职单招

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部