pom .xml:

<!-- cxf支持 -->
<dependency>
   <groupId>org.apache.cxf</groupId>
   <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
   <version>3.1.11</version>
</dependency>

服务器端:

接口:

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

@WebService(name = "WebUserService",
        targetNamespace="http://webservice.terminaltest.gdcn.com/")
public interface WebUserService {
     @WebMethod
     String getName(@WebParam(name = "userId") String userId);
     @WebMethod
     User getUser(String userId);
}

实现:

import com.gdcn.terminaltest.webservice.User;
import com.gdcn.terminaltest.webservice.WebUserService;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import javax.jws.WebService;

@WebService(serviceName = "WebUserService",
        targetNamespace="http://webservice.terminaltest.gdcn.com/",
        endpointInterface = "com.gdcn.terminaltest.webservice.WebUserService")
@Component
public class WebUserServiceImpl implements WebUserService {

    private Map<String, User> userMap = new HashMap<String, User>();
     public WebUserServiceImpl() {
         super();
       System.out.println("向实体类插入数据");
       User user = new User();
        user.setUserId("411001");
        user.setUsername("zhansan");
        user.setAge("20");
        user.setUpdateTime(new Date());
        userMap.put(user.getUserId(), user);

        user = new User();
        user.setUserId("411002");
        user.setUsername("lisi");
        user.setAge("30");
        user.setUpdateTime(new Date());
        userMap.put(user.getUserId(), user);

        user = new User();
        user.setUserId("411003");
        user.setUsername("wangwu");
        user.setAge("40");
        user.setUpdateTime(new Date());
        userMap.put(user.getUserId(), user);
    }
     @Override
     public String getName(String userId) {
        return "liyd-" + userId;
     }
    @Override
    public User getUser(String userId) {
        System.out.println("userMap:"+userMap);
        return userMap.get(userId);
    }

 }

配置:

import javax.xml.ws.Endpoint;

import org.apache.cxf.Bus;
import org.apache.cxf.jaxws.EndpointImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CxfConfig {
    @Autowired
    private Bus bus;

    @Autowired
    private WebUserService webUserService;
    
        @Bean
        public Endpoint endpoint() {
            EndpointImpl endpoint = new EndpointImpl(bus, webUserService);
            endpoint.publish("/WebUserService");
            return endpoint;
        }

 }
这里相当于把Commonservice接口发布在了路径/services/WebService下,wsdl文档路径为

http://localhost:8080/services/WebService?wsdl,另外如果有登录拦截,还需要配置忽略拦截

springboot shrio 集成webService

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 dcf = JaxWsDynamicClientFactory.newInstance();
        Client client =dcf.createClient("http://127.0.0.1:9090/services/WebUserService?wsdl");
        //getUser 为接口中定义的方法名称  张三为传递的参数   返回一个Object数组
        Object[] objects=client.invoke("getUser","411001");
        //输出调用结果
        System.out.println(JSONUtils.javaListToJson(objects));
        System.out.println("*****"+objects[0]);
    }
}

相关文章: