SpringBoot整合CXF发布WebService

1.pom.xml配置cxf依赖包

<!-- cxf框架依赖  -->
<dependency>
	<groupId>org.apache.cxf</groupId>
	<artifactId>cxf-rt-frontend-jaxws</artifactId>
        <version>3.1.12</version>
</dependency>
<dependency>
	<groupId>org.apache.cxf</groupId>
	<artifactId>cxf-rt-transports-http</artifactId>
	<version>3.1.12</version>
</dependency>

2.编写调用接口

package cn.com.app.cxf;

import javax.jws.WebService;

@WebService
public interface IDemoService {
    
    public String getUser(String param) throws Exception;
    
}

3.编写调用接口实现类

package cn.com.app.cxfImpl;

import javax.jws.WebService;

import cn.com.app.cxf.IDemoService;

@WebService(endpointInterface = "cn.com.app.cxf.IDemoService",//服务接口路径
			targetNamespace="http://cxf.app.com.cn/"//命名空间(接口包名的反缀)
		   )
public class DemoServiceImpl implements IDemoService {

	@Override
	public String getUser(String param) throws Exception {
		System.out.println("传入的参数为:"+param);
		String result = "<Flag>success</Flag>";
        return result;
	}
	
}

4.编写配置类发布接口

package cn.com.app.constant;

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 cn.com.app.cxfImpl.DemoServiceImpl;

import javax.xml.ws.Endpoint;
 
@Configuration
public class WebServiceConfig {
 
	//发布服务名称localhost:端口号/ws
	//注意:方法名不能为dispatcherServlet,否则会把默认映射覆盖掉,导致无法访问其他url
	@Bean
	public ServletRegistrationBean disServlet(){
		return new ServletRegistrationBean<CXFServlet>(new CXFServlet(), "/ws/*");																	
	}
 
	@Bean(name = Bus.DEFAULT_BUS_ID)
	public SpringBus springBus() {
		return new SpringBus();
	}
 
	@Bean
	public Endpoint endpoint() {
		EndpointImpl endpoint = new EndpointImpl(springBus(), new DemoServiceImpl());//绑定要发布的服务实现类
		endpoint.publish("/user"); //接口访问地址
		return endpoint;
	}
}

5.访问http://localhost:端口/ws,出现接口列表页面并能访问接口,则发布成功

6.客户端调用接口

JaxWsDynamicClientFactory dcflient=JaxWsDynamicClientFactory.newInstance();
Client client=dcflient.createClient("http://localhost:端口/ws/user?wsdl");
Object[] objects=client.invoke("getUser","123456");//getUser为调用的接口方法名
System.out.println("返回结果:"+objects[0].toString());

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值