- 浏览: 1098426 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
skyesx:
这是2PC实现,更常用的是一个柔性事务的实现,可以参考http ...
Spring分布式事务实现 -
ddbird:
这第一句就不严谨“分布式事务是指操作多个数据库之间的事务”,显 ...
Spring分布式事务实现 -
呵呵6666:
基于互联网支付系统的微服务架构分布式事务解决方案http:// ...
Spring分布式事务实现 -
小黄牛:
写得不错,交流群:472213887
Spring分布式事务实现 -
jiaoqf321456:
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗 ...
使用ant.jar进行文件zip压缩
一、在服务器端的WebSerivce服务发布
1、POM.xml文件引入相关的依赖包
2、定义服务
3、定义访问权限验证的拦截器
4、发布webserive服务
5、SpringBoot应用启动
二、客户端测试调用WebService
1、调用WebSerivce时,设置帐号密码的拦截器
2、客户端调用测试
1、POM.xml文件引入相关的依赖包
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>net.logcd</groupId> <artifactId>springboot_wscxf</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>springboot_wscxf</name> <description></description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.8.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.7</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web-services</artifactId> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.6</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、定义服务
@WebService(targetNamespace="http://cxf.logcd.net") @Service("helloService") public class HelloService{ public String sayHello(String user, String userData) { return "hello," + user+"! userData = "+userData; } }
3、定义访问权限验证的拦截器
/** * 校验(用户名、密码)拦截器 */ public class AuthInterceptor extends AbstractPhaseInterceptor<SoapMessage> { private Logger logger = Logger.getLogger(this.getClass()); private static final String USERNAME = "admin"; private static final String PASSWORD = "admin"; public AuthInterceptor() { // 定义在哪个阶段进行拦截 super(Phase.PRE_PROTOCOL); } @Override public void handleMessage(SoapMessage soapMessage) throws Fault { List<Header> headers = null; String username = null; String password = null; try { headers = soapMessage.getHeaders(); } catch (Exception e) { logger.error("getSOAPHeader error: {}", e); } if (headers == null) { throw new Fault(new IllegalArgumentException("找不到Header,无法验证用户信息")); } // 获取用户名,密码 for (Header header : headers) { SoapHeader soapHeader = (SoapHeader) header; Element e = (Element) soapHeader.getObject(); NodeList usernameNode = e.getElementsByTagName("username"); NodeList pwdNode = e.getElementsByTagName("password"); username = usernameNode.item(0).getTextContent(); password = pwdNode.item(0).getTextContent(); if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) { throw new Fault(new IllegalArgumentException("用户信息为空")); } } // 校验用户名密码 if (!(username.equals(USERNAME) && password.equals(PASSWORD))) { SOAPException soapExc = new SOAPException("认证失败"); logger.info("用户认证信息错误"); throw new Fault(soapExc); } } }
4、发布webserive服务
/** * 配置并发布WebService */ @Configuration public class WSCxfConfig { @Bean public ServletRegistrationBean dispatcherServlet() { //接口访问的过滤路径 return new ServletRegistrationBean(new CXFServlet(), "/cxf/*"); } @Bean(name = Bus.DEFAULT_BUS_ID) public SpringBus springBus() { return new SpringBus(); } @Bean public HelloService helloService() { return new HelloService(); } @Bean public Endpoint endpoint() { EndpointImpl endpoint = new EndpointImpl(springBus(), helloService()); endpoint.getInInterceptors().add(new AuthInterceptor());//添加校验拦截器 endpoint.publish("/helloService"); return endpoint; } }
5、SpringBoot应用启动
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
二、客户端测试调用WebService
1、调用WebSerivce时,设置帐号密码的拦截器
/** * 调用时添加用户名密码信息 */ public class LoginInterceptor extends AbstractPhaseInterceptor<SoapMessage> { private String namespace = "http://cxf.cdmcs.com"; private String username = "admin"; private String password = "admin"; public LoginInterceptor(String username, String password) { // 设置在发送请求前阶段进行拦截 super(Phase.PREPARE_SEND); this.username = username; this.password = password; } @Override public void handleMessage(SoapMessage soapMessage) throws Fault { List<Header> headers = soapMessage.getHeaders(); Document doc = DOMUtils.createDocument(); Element auth = doc.createElementNS(namespace, "SecurityHeader"); Element UserName = doc.createElement("username"); Element UserPass = doc.createElement("password"); UserName.setTextContent(username); UserPass.setTextContent(password); auth.appendChild(UserName); auth.appendChild(UserPass); headers.add(0, new Header(new QName("SecurityHeader"), auth)); } }
2、客户端调用测试
public class TestClientCXFWS { /** * 动态调用方式 * @throws Exception */ @Test public void invokeHelloService_WS() throws Exception { //WSDL路径 String wsUrl = "http://127.0.0.1:8080/cxf/helloService?wsdl"; String nameSpace = "http://cxf.logcd.net"; //方法名 String method = "sayHello"; JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance(); Client client = dcf.createClient(wsUrl); //需要密码的情况需要加上用户名和密码 client.getOutInterceptors().add(new LoginInterceptor("admin","admin")); Endpoint endpoint = client.getEndpoint(); //endpoint.getService().getName().getNamespaceURI() QName opName = new QName(nameSpace, method); BindingInfo bindingInfo = endpoint.getEndpointInfo().getBinding(); //如果命名空间不对,需要重新寻找operationName if (bindingInfo.getOperation(opName) == null) { for (BindingOperationInfo operationInfo : bindingInfo.getOperations()) { if (method.equals(operationInfo.getName().getLocalPart())) { opName = operationInfo.getName(); break; } } } Object[] params = new Object[] {"Lucy","{time:"+new Date().toString()+"}"}; Object[] retArr = client.invoke(opName, params); System.out.println(retArr[0]); } }
发表评论
-
SpringBoot开发WebService之Axis
2019-07-14 23:56 4893一、服务器端发布WebService服务 1、POM.xml文 ... -
SpringBoot项目非web方式启动
2019-07-03 17:02 48161、springboot 1.x中以非web方式启动 @S ... -
SpringBoot使用Druid数据库密码加密
2019-03-06 23:28 15271、生成公钥、私钥和密码加密串 java -cp drui ... -
JDK6开发WebService及用户认证
2015-08-21 13:50 1432一、编写服务端并发布 1、定义接口 public inte ... -
WebService之CXF使用Session
2015-08-20 13:53 2007一、接口与实现 @WebService public i ... -
WebService之CXF处理类型转换
2015-08-20 13:53 2793一、接口与实现 @WebService @SOAPBin ... -
以多种方式访问WebService
2015-08-20 13:58 6455一、Java访问WebService (1)使用Axis ... -
Spring Annotation
2010-12-02 17:14 0Spring2.x引入了组件自动扫描机制,可以在类路径底 ... -
Exporting beans as web services using XFire
2015-08-20 14:07 1161Once XFire is in your buil ... -
Spring分布式事务实现
2010-11-10 14:28 83205分布式事务是指操作多个数据库之间的事务,spring的 ... -
Spring3 Annotation + Hibernate3-jpa2.0 + CGLIB + 多数据源
2010-08-19 09:30 10525一、定义一个测试用Entity。 @Entity pub ... -
使用iBatis2.0
2010-05-26 10:20 0一、NULL问题 ibatis操作oracle数据库时, ... -
Spring中的远程访问和web服务
2010-05-23 23:17 4533一、介绍 目前,Sp ... -
使用AspectJ LTW(Load Time Weaving)
2010-01-04 14:25 10790在Java 语言中,从 ... -
Spring2.0 AOP AspectJ 注释实现
2010-01-04 14:24 5593一、AOP基本概念 切面(Aspect): 一个关注点的模块 ... -
Spring + JPA + Hibernate配置
2010-01-04 14:24 34746<1>persistence.xml放到类路径下的 ... -
配置spring数据源
2009-11-06 16:47 1247配置一个数据源 Spring在第三方依赖包中包含了两 ... -
集成axis开发webservice
2009-09-16 09:09 3055一、基础知识 Web S ... -
hibernate的dialect
2009-07-23 10:04 5461一、hibernate的dialect RDBM ... -
spring ibatis入门
2009-04-20 14:16 3893一、applicationContext.xml <?x ...
相关推荐
在本文中,我们将深入探讨如何使用SpringBoot集成Apache CXF来开发Web服务。SpringBoot以其简洁的配置和快速的应用启动而受到广大开发者的欢迎,而CXF是一个强大的开源框架,用于构建和消费Web服务。结合这两者,...
SpringBoot+Mybatis+CXF框架,实现Restful api与 WebService api接口的大实验 本实验的主要目标是使用SpringBoot、Mybatis和CXF框架来实现Restful API和WebService API接口的大实验。下面是实验的详细介绍: 标题...
在IT行业中,Spring Boot是一个备受推崇的框架,它简化了Spring应用的开发过程,而Web服务(WebService)则是一种常见的应用程序接口(API)交互方式。本文将深入探讨如何使用Apache CXF库在Spring Boot项目中集成和...
SpringBoot整合CXF是将流行的Java Web服务框架CXF与SpringBoot轻量级框架结合,以便更方便地创建和消费Web服务。这个项目提供了一个很好的示例,通过详细注释帮助开发者理解如何在SpringBoot应用中发布和调用Web服务...
SpringBoot与CXF整合创建Web服务 在现代的软件开发中,Web服务是实现系统间交互的重要手段。SpringBoot以其轻量级、快速启动和易于配置的特点,成为了开发微服务的首选框架。而Apache CXF则是一个强大的开源框架,...
在IT行业中,SpringBoot、WebService和cxf是三个非常重要的技术组件,它们分别代表了现代Java应用程序开发的基础、服务间通信的重要方式以及一种强大的服务框架。在这个主题中,我们将深入探讨如何在SpringBoot项目...
CXF是一个开源的Java框架,用于构建和开发服务导向架构(SOA)应用程序,它支持SOAP和RESTful服务。SpringBoot则简化了Spring应用的初始化和配置,使得创建独立的、生产级别的基于Spring的应用变得容易。 本示例...
在IT行业中,Web Service是一种基于XML的通信标准,允许不同系统之间进行互操作性交互。...在实际开发中,可以根据项目需求选择适合的客户端调用方式,同时注意处理异常和错误,确保服务的稳定性和可靠性。
在给定的压缩包文件中,"WebService_Server"可能包含了SpringBoot与CXF集成的服务器端代码示例,而"Webservice_Client"则可能包含CXF客户端调用服务的示例代码。这两个部分可以作为学习和实践SpringBoot发布和消费...
在实际开发中,选择哪种方式取决于项目需求和个人偏好。 总结,本教程详细介绍了如何利用Spring Boot和Apache CXF搭建Web Service服务端,以及使用JAX-WS的`javax.xml.ws.Service`和Apache CXF的`...
而CXF则是一个开源服务框架,它支持多种Web服务标准,如SOAP和RESTful API,使得开发和部署Web服务变得简单。本教程将详细介绍如何在Spring Boot项目中集成CXF来发布Web服务接口。 首先,我们需要确保项目中包含了...
SpringBoot与CXF WebService整合教程 在Java世界中,SpringBoot以其简洁的配置和快速的应用开发能力,已经成为主流的微服务框架。而CXF作为一款强大的SOAP和RESTful Web服务框架,使得开发者能够轻松地创建和消费...
Spring框架是Java企业级应用开发的首选,而CXF是一个强大的开源服务框架,支持创建和消费Web服务。本教程将深入探讨如何利用Spring和CXF来实现基于HTTP和HTTPS的Web服务,并且将涉及到HTTPS的证书配置。 1. **...
webserviceApache CXF java springboot利用Apache CXF创建webserice接口 Apache CXF 核心架构是以BUS为核心,整合其他组件。 * Bus是CXF的主干, 为共享资源提供一个可配置的场所,作用类似于Spring的...
在IT行业中,Spring Boot和Apache CXF是两个非常重要的组件,它们在开发高效、轻量级的Web服务中发挥着关键作用。本文将详细介绍如何在Spring Boot 2.1.5版本中集成CXF 3.2.5,以创建一个功能完备的Web Service...
在本项目中,我们主要探讨如何使用SpringBoot、MyBatis和CXF框架来开发Web Service接口,并且数据库选用MySQL。这是一个完整的后端服务开发流程,涵盖了从数据存储到服务暴露的所有关键步骤。 首先,SpringBoot是...
在IT行业中,SpringBoot是一个非常流行的Java开发框架,它简化了Spring应用的初始搭建以及开发过程,提供了大量的自动配置选项,使得开发者可以快速构建出健壮的Web应用。而Web服务,尤其是基于SOAP协议的Web ...
在Java领域中,Apache CXF因其强大的功能和广泛的兼容性成为了构建WebService的首选框架之一。本文将通过具体的源码示例,详细介绍如何在Spring Boot环境中使用CXF来搭建一个简单的WebService服务端。 #### 二、...
本文将详细介绍如何为CXF与Spring整合发布WebService添加拦截器进行权限控制。 首先,我们需要理解CXF拦截器的概念。拦截器是CXF提供的一种机制,它允许我们在Web服务调用的生命周期中的不同阶段插入自定义逻辑,如...
在IT行业中,Spring Boot和Apache CXF是两个非常重要的开源框架,它们分别用于简化Spring应用的开发和构建Web服务。本文将深入探讨如何整合Spring Boot与CXF,以便利用Spring Boot的便捷性和CXF的强大Web服务功能。...