SpringBoot整合CXF开发基于soap协议的服务

来源:互联网 发布:手机电脑摄像头软件 编辑:程序博客网 时间:2024/06/05 13:21

SpringBoot整合CXF开发基于soap协议的服务,分为服务端和客户端开发

一、服务端开发

1、新建SpringBoot工程,略


2、实体类

package com.example.demo.pojo;import java.io.Serializable;public class User implements Serializable {private static final long serialVersionUID = 1L;private Long userId;private String username;private String email;public Long getUserId() {return userId;}public void setUserId(Long userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}}

3、服务接口

package com.example.demo.service;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebService;import com.example.demo.pojo.User;@WebServicepublic interface UserService {@WebMethodpublic String getName(@WebParam(name = "userId") Long userId);@WebMethodpublic User getUser(long userId);}

4、服务实现类

package com.example.demo.service.impl;import javax.jws.WebService;import com.example.demo.pojo.User;import com.example.demo.service.UserService;@WebService(targetNamespace = "http://service.demo.example.com/", endpointInterface = "com.example.demo.service.UserService")public class UserServiceImpl implements UserService {@Overridepublic String getName(Long userId) {return "xiaogao" + userId;}@Overridepublic User getUser(long userId) {User user = new User();user.setUserId(2l);user.setUsername("gaoyi");user.setEmail("315319976@qq.com");return user;}}

5.配置类

package com.example.demo.config;import javax.xml.ws.Endpoint;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.example.demo.service.UserService;import com.example.demo.service.impl.UserServiceImpl;@Configurationpublic class CxfConfig {@Beanpublic ServletRegistrationBean dispatcherServlet() {return new ServletRegistrationBean(new CXFServlet(), "/soap/*");}@Bean(name = Bus.DEFAULT_BUS_ID)public SpringBus springBus() {return new SpringBus();}@Beanpublic UserService userService() {return new UserServiceImpl();}//此处要注意导入正取的Endpoint、EndpointImpl包@Beanpublic Endpoint endpoint() {EndpointImpl endpoint = new EndpointImpl(springBus(), userService());endpoint.publish("/user");return endpoint;}}
6、运行springboot 工程,并访问   http://localhost:8080/soap/user?wsdl


二、客户端开发

package com.example.demo.client;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;public class ClientTest {public static void main(String[] args) throws Exception {JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance();Client client = clientFactory.createClient("http://localhost:8080/soap/user?wsdl");Object[] objects = client.invoke("getUser", 2l);System.out.println(objects[0].toString());}}



原创粉丝点击