摘要:啟動后我們直接輸入項目地址指定的服務名會看到生成的。測試在這就不寫了,大家可以使用生成客戶端,或者直接使用發送格式數據進行請求。總結使用集成開發很簡單,不用在多帶帶的部署到外部上,這為我們熟悉開發的同學帶了很好的體驗。
1、寫在前面
WebService 對我來說既熟悉又陌生,已經將近六七年沒有看到過他了, 具體的介紹我就不多少了, 想了解的百度百科下說的很詳細。
之所以突然研究WebService是接到一個需求要去給 XX 項目做一個適配層,他們原有系統是使用webservice做的,所以……
那我們就來看看,這一個古老的技術如何和如今最流行的框架SpringBoot進行結合。
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 開發Webservice接口/** * 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; } }
這個就簡單了, 我們在使用時可以直接copy過去就行。
最后就是啟動項目了。
啟動后我們直接輸入項目地址:http://localhost:8090/指定的服務名
會看到生成的ssdl。到這基本搭建就結束了。測試在這就不寫了, 大家可以使用wsdl生成客戶端,或者直接使用http發送xml格式數據進行請求。
springboot使用CXF集成Webservice 開發很簡單,不用在多帶帶的部署到外部tomcat上, 這為我們熟悉springboot開發的同學帶了很好的體驗。
有想要完整實例的請看著 >> https://github.com/yuelicn/sp...
或者直接clone >> https://github.com/yuelicn/sp...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76156.html
摘要:我們再使用這樣的來查看這個服務具體的定義這個用以通過查看服務也就是我們開頭所說的用通用格式來描述的功能入參和返回值,使我們的調用者明白服務的使用方法具體詳情可以查看我們的這個服務的頁面。 WebService是什么呢?顧名思義,是Web系統提供的服務,其目的呢,往大了說:是系統實現多異構模塊協同合作,服務實現SOA(Services oriented Architecture面向服務的...
摘要:它使用方式,接收和響應外部系統的某種請求。回顧我們在學習基礎網絡編程章節已經知道了這么一個連接了。使用指定名稱的命名空間。名詞簡單對象訪問協議作為一個基于語言的協議用于有網上傳輸數據。以的根元素出現。代理這么一個概念就更加清晰了。 WebService介紹 首先我們來談一下為什么需要學習webService這樣的一個技術吧.... 問題一 如果我們的網站需要提供一個天氣預報這樣一個需求...
摘要:支持相關規范和標準,包括同上。支持多種傳輸協議和協議綁定數據綁定。構建端還有其服務實現,接口使用注解,標明是一個遠程服務接口。然后編寫一個的啟動程序,并運行,我想你會成功的因為我看到了下圖是一種跨平臺的技術協議。 本博客 貓叔的博客,轉載請申明出處 學習系列 RPC框架是啥? RPC框架是啥之Java自帶RPC實現,RMI框架入門 Apache CXF一款WebService RP...
摘要:本地服務地址具體端口跟配置有關配置添加依賴包在增加的配置和的配置編寫服務在增加的配置,記得要的配置就能看到接口說明可以直接運行的 ws-server-demo 本地服務地址(具體端口跟tomcat配置有關) http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴包 org.apache.c...
摘要:證書有兩種形式指定路徑有三種形式的插件可以指定參數來解決一下常見的問題下的可以選擇所需的命令參數使用參考添加解決中命名沖突添加指定自動生成的包名 ws-client-demo 客戶端調用遠程服務 http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴包 org.apache.cxf c...
閱讀 2228·2021-11-22 09:34
閱讀 1337·2021-10-11 10:59
閱讀 4435·2021-09-22 15:56
閱讀 3288·2021-09-22 15:08
閱讀 3408·2019-08-30 14:01
閱讀 779·2019-08-30 11:16
閱讀 1133·2019-08-26 13:51
閱讀 2910·2019-08-26 13:43