spring boot 2.0整合cxf框架

今天下午老大说新系统登录要改成LDAP单点登录,那就改呗

LDAP发布了个webService接口,需要我这边调用一下,发现老大搭建的spring boot框架没有整合cxf,捣鼓两个小时搞定

特意分享一下整合过程,方便自己方便别人

一共分为5步

一:pom添加cxf框架依赖(建议3.0以上,2.x不兼容对外发布webService报错)



	org.apache.cxf
	cxf-rt-frontend-jaxws
	3.1.12



	org.apache.cxf
	cxf-rt-transports-http
	3.1.12

二:写一个接口,最简单的hello接口,IHello里面就一个sayHello方法


package com.chawran.interaction.ws.hello;

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

//上面package名反过来写
@WebService(targetNamespace="http://hello.ws.interaction.chawran.com")

public interface IHello {

	@WebMethod
	public @WebResult String sayHello(@WebParam(name = "userName") String userName);
	
}

三:写一个实现类HellImpl,实现上面的IHello接口

package com.chawran.interaction.ws.hello;

import javax.jws.WebService;
import org.springframework.stereotype.Component;

@Component("HelloImpl")
@WebService(
	serviceName="helloService",//【对外发布的服务名 】:需要见名知意
	targetNamespace="http://hello.ws.interaction.chawran.com",//【名称空间】:【实现类包名的反缀】
	endpointInterface = "com.chawran.interaction.ws.hello.IHello")//【服务接口全路径】  【接口的包名】
public class HelloImpl implements IHello {

	@Override
	public String sayHello(String name) {
		System.out.println("=======================>"+name);
		return "hello : " + name;
	}

}

四:写一个配置类CxfConfig 对外发布接口

package com.chawran.admin.cxf;

import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.apache.cxf.transport.servlet.CXFServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.chawran.interaction.ws.hello.HelloImpl;
import com.chawran.interaction.ws.mdm.SyncEmpOrgImpl;
import javax.xml.ws.Endpoint;

@Configuration//注册到spring启动中
public class CxfConfig {

	@Bean
	public ServletRegistrationBean dispatcherServlet() {
		return new ServletRegistrationBean(new CXFServlet(), "/cxf/*");// 发布服务名称 localhost:8080/cxf
																		
	}

	@Bean(name = Bus.DEFAULT_BUS_ID)
	public SpringBus springBus() {
		return new SpringBus();
	}
	
	//mdm同步人员部门
	@Bean
	public Endpoint syncEmpOrgImpl() {
		EndpointImpl endpoint = new EndpointImpl(springBus(), new SyncEmpOrgImpl());// 绑定要发布的服务实现类
		endpoint.publish("/syncEmpOrgImpl"); // 接口访问地址
		return endpoint;
	}

	//hello
	@Bean
	public Endpoint hello() {
		EndpointImpl endpoint = new EndpointImpl(springBus(), new HelloImpl());// 绑定要发布的服务实现类
		endpoint.publish("/hello"); // 接口访问地址
		return endpoint;
	}
}

五:重启下服务就可以访问啦

 


 

访问http://localhost:8080/cxf就可以看到所有的接口

spring boot 2.0整合cxf框架_第1张图片

访问hello接口http://localhost:8080/cxf/hello?wsdl

spring boot 2.0整合cxf框架_第2张图片

用SoapUI调用一下试一下

spring boot 2.0整合cxf框架_第3张图片

你可能感兴趣的:(cxf,Spring,boot,webService,springboot整合cxf)