SpringBoot 는 CXF 를 사용 하여 웹 서 비 스 를 통합 하 는 방법 입 니 다.

1.앞 에 쓰 기
웹 서 비 스 는 저 에 게 익숙 하고 낯 설 어서 거의 6,7 년 동안 그 를 보지 못 했 습 니 다.구체 적 인 소 개 는 얼마 되 지 않 았 습 니 다.알 고 싶 은 바 이 두 백과 에서 상세 하 게 말 했 습 니 다.
갑자기 웹 서 비 스 를 연구 하 는 이 유 는 XX 프로젝트 에 적합 한 층 을 만들어 야 한 다 는 수 요 를 받 았 기 때문에 그들 은 원래 시스템 이 웹 서 비 스 를 사용 하여 만 들 었 기 때문에...
이 오래된 기술 이 현재 가장 유행 하 는 프레임 워 크 인 SpringBoot 와 어떻게 결합 하 는 지 살 펴 보 자.
2.SpringBoot 통합 웹 서비스
2.1 도입 의존

compile('org.springframework.boot:spring-boot-starter-web-services',
      'org.apache.cxf:cxf-spring-boot-starter-jaxws:3.2.5',
      'org.apache.cxf:cxf-rt-frontend-jaxws:3.1.6',
      'org.apache.cxf:cxf-rt-transports-http:3.1.6')
저 는 Gradle 로 프로젝트 를 만 들 었 습 니 다.Maven 처럼 jar 의존 도 를 추가 하면 됩 니 다.
2.2 웹 서비스 인터페이스 개발

/**
 * serviceName     
 * targetNamesPace :          ,      
@javax.jws.WebService(serviceName = "gzcxfw_wx_webserviceService",
    targetNamespace = "http://36.101.208.59:8090/axis/services/bdcgzcxfw_wx")
public interface WebService {
  /**
   *
   * @param wxid     ID
   * @param xm      
   * @param sfzh       
   * @param sjh      
   * @param macId      
   * @param password   
   * @return      Base64   
   */
  @WebMethod(operationName = "gzcxfw_hlw_wxrz_Info_cs")
  @WebResult(name = "gzcxfw_hlw_wxrz_Info_csReturn")
  String gzcxfwHlwWxrzInfoCs(@WebParam(name = "WXID", targetNamespace = "http://36.101.208.59:8090/axis/services/bdcgzcxfw_wx") String wxid, @WebParam(name = "XM") String xm,
                @WebParam(name = "SFZH", targetNamespace = "http://36.101.208.59:8090/axis/services/bdcgzcxfw_wx") String sfzh, @WebParam(name = "SJH") String sjh,
                @WebParam(name = "mac_id", targetNamespace = "http://36.101.208.59:8090/axis/services/bdcgzcxfw_wx") String macId, @WebParam(name = "password") String password
  );
2.3 실현 류

/**
 * @author yueli
 * @date 2019-08-05 19:17
 */
@javax.jws.WebService(serviceName = "gzcxfw_wx_webserviceService",
    targetNamespace = "http://36.101.208.59:8090/axis/services/bdcgzcxfw_wx")
public class WebServiceImpl implements WebService {

  private static Logger logger = LoggerFactory.getLogger(CatalogInfoImpl.class);


  @Override
  public String gzcxfwHlwWxrzInfoCs(String wxid, String xm, String sfzh, String sjh, String macId, String password) {
    logger.info("gzcxfwHlwWxrzInfoCs:   - wxid:{}, xm:{}, sfzh:{}, sjh:{}, macId:{}, pawd:{}", wxid, xm, sfzh,
        macId, password);

    return wxid + “:” + sfzh;
  }
실현 류 는 간단 하 다.우리 가 일반적으로 쓰 는 것 과 다 를 것 이 없다.
2.4 발표

package com.tusdao.base.configuration;

import com.tusdao.TusdaoWebserviceApplication;
import com.tusdao.webservice.service.WebService;
import com.tusdao.webservice.service.impl.WebServiceImpl;
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.ComponentScan;
import org.springframework.context.annotation.Configuration;

import javax.xml.ws.Endpoint;


/**
 * @author yueli
 * @date 2019-08-05 19:24
 */
@Configuration
@ComponentScan(basePackageClasses = TusdaoWebserviceApplication.class)
public class CxfConfig {
  @SuppressWarnings("all")
  @Bean(name = "cxfServletRegistration")
  public ServletRegistrationBean dispatcherServlet() {
    //           
    return new ServletRegistrationBean(new CXFServlet(), "/axis/services/*");
  }

  @Bean(name = Bus.DEFAULT_BUS_ID)
  public SpringBus springBus() {
    return new SpringBus();
  }


  @Bean
  public WebService webService() {

    return new WebServiceImpl();
  }

  /**
   *   WebServiceDemoService   webservice  
   *
   * @return
   */
  @Bean
  public Endpoint endpoint() {
    EndpointImpl endpoint = new EndpointImpl(springBus(), webService());
    endpoint.publish("/bdcgzcxfw_wx");
    endpoint.getInInterceptors().add(new ServerNameSpaceInterceptor());
    //endpoint.getInInterceptors().add(new InInterceptor());
    return endpoint;
  }

}
이것 은 간단 합 니 다.우 리 는 사용 할 때 직접 복사 해서 가면 됩 니 다.
마지막 으로 프로젝트 를 시작 하 는 겁 니 다.
시작 후 항목 주 소 를 직접 입력 합 니 다:http://localhost:8090/지정 한 서비스 이름

생 성 된 ssdl 을 볼 수 있 습 니 다.이 쯤 되면 기본 건설 이 끝 납 니 다.테스트 는 여기 서 쓰 지 않 습 니 다.wdl 로 클 라 이언 트 를 만 들 거나 http 로 xml 형식 데 이 터 를 보 내 요청 할 수 있 습 니 다.
3.총화
springboot 은 CXF 통합 웹 서비스 개발 을 사용 하 는 것 이 간단 합 니 다.외부 tomcat 에 따로 배치 하지 않 아 도 됩 니 다.이것 은 우리 가 springboot 개발 을 잘 아 는 학생 들 에 게 좋 은 경험 을 가 져 다 주 었 습 니 다.
전체 인 스 턴 스 를 원 하 는 것 은 보 세 요>https://github.com/yuelicn/springboot-webservice-cxf
또는 직접 clone>>https://github.com/yuelicn/springboot-webservice-cxf
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기