摘要:?jiǎn)?dòng)后我們直接輸入項(xiàng)目地址指定的服務(wù)名會(huì)看到生成的。測(cè)試在這就不寫了,大家可以使用生成客戶端,或者直接使用發(fā)送格式數(shù)據(jù)進(jìn)行請(qǐng)求??偨Y(jié)使用集成開發(fā)很簡(jiǎn)單,不用在多帶帶的部署到外部上,這為我們熟悉開發(fā)的同學(xué)帶了很好的體驗(yàn)。
1、寫在前面
WebService 對(duì)我來說既熟悉又陌生,已經(jīng)將近六七年沒有看到過他了, 具體的介紹我就不多少了, 想了解的百度百科下說的很詳細(xì)。
之所以突然研究WebService是接到一個(gè)需求要去給 XX 項(xiàng)目做一個(gè)適配層,他們?cè)邢到y(tǒng)是使用webservice做的,所以……
那我們就來看看,這一個(gè)古老的技術(shù)如何和如今最流行的框架SpringBoot進(jìn)行結(jié)合。
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 來構(gòu)建項(xiàng)目的,使用Maven一樣,添加以上jar依賴就可以了。
2.2 開發(fā)Webservice接口/** * serviceName 服務(wù)名稱 * 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 身份證號(hào) * @param sjh 手機(jī)號(hào) * @param macId 預(yù)定用戶 * @param password 密碼 * @return 查詢結(jié)果 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 實(shí)現(xiàn)類
/** * @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: 入?yún)? wxid:{}, xm:{}, sfzh:{}, sjh:{}, macId:{}, pawd:{}", wxid, xm, sfzh, macId, password); return wxid + “:” + sfzh; }
實(shí)現(xiàn)類就很簡(jiǎn)單了。和我們一般寫的沒啥區(qū)別,
2.4 發(fā)布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() { //創(chuàng)建服務(wù)并指定服務(wù)名稱 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(); } /** * 注冊(cè)WebServiceDemoService接口到webservice服務(wù) * * @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; } }
這個(gè)就簡(jiǎn)單了, 我們?cè)谑褂脮r(shí)可以直接copy過去就行。
最后就是啟動(dòng)項(xiàng)目了。
啟動(dòng)后我們直接輸入項(xiàng)目地址:http://localhost:8090/指定的服務(wù)名
會(huì)看到生成的ssdl。到這基本搭建就結(jié)束了。測(cè)試在這就不寫了, 大家可以使用wsdl生成客戶端,或者直接使用http發(fā)送xml格式數(shù)據(jù)進(jìn)行請(qǐng)求。
springboot使用CXF集成Webservice 開發(fā)很簡(jiǎn)單,不用在多帶帶的部署到外部tomcat上, 這為我們熟悉springboot開發(fā)的同學(xué)帶了很好的體驗(yàn)。
有想要完整實(shí)例的請(qǐng)看著 >> https://github.com/yuelicn/sp...
或者直接clone >> https://github.com/yuelicn/sp...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/76156.html
摘要:我們?cè)偈褂眠@樣的來查看這個(gè)服務(wù)具體的定義這個(gè)用以通過查看服務(wù)也就是我們開頭所說的用通用格式來描述的功能入?yún)⒑头祷刂担刮覀兊恼{(diào)用者明白服務(wù)的使用方法具體詳情可以查看我們的這個(gè)服務(wù)的頁(yè)面。 WebService是什么呢?顧名思義,是Web系統(tǒng)提供的服務(wù),其目的呢,往大了說:是系統(tǒng)實(shí)現(xiàn)多異構(gòu)模塊協(xié)同合作,服務(wù)實(shí)現(xiàn)SOA(Services oriented Architecture面向服務(wù)的...
摘要:它使用方式,接收和響應(yīng)外部系統(tǒng)的某種請(qǐng)求?;仡櫸覀?cè)趯W(xué)習(xí)基礎(chǔ)網(wǎng)絡(luò)編程章節(jié)已經(jīng)知道了這么一個(gè)連接了。使用指定名稱的命名空間。名詞簡(jiǎn)單對(duì)象訪問協(xié)議作為一個(gè)基于語言的協(xié)議用于有網(wǎng)上傳輸數(shù)據(jù)。以的根元素出現(xiàn)。代理這么一個(gè)概念就更加清晰了。 WebService介紹 首先我們來談一下為什么需要學(xué)習(xí)webService這樣的一個(gè)技術(shù)吧.... 問題一 如果我們的網(wǎng)站需要提供一個(gè)天氣預(yù)報(bào)這樣一個(gè)需求...
摘要:支持相關(guān)規(guī)范和標(biāo)準(zhǔn),包括同上。支持多種傳輸協(xié)議和協(xié)議綁定數(shù)據(jù)綁定。構(gòu)建端還有其服務(wù)實(shí)現(xiàn),接口使用注解,標(biāo)明是一個(gè)遠(yuǎn)程服務(wù)接口。然后編寫一個(gè)的啟動(dòng)程序,并運(yùn)行,我想你會(huì)成功的因?yàn)槲铱吹搅讼聢D是一種跨平臺(tái)的技術(shù)協(xié)議。 本博客 貓叔的博客,轉(zhuǎn)載請(qǐng)申明出處 學(xué)習(xí)系列 RPC框架是啥? RPC框架是啥之Java自帶RPC實(shí)現(xiàn),RMI框架入門 Apache CXF一款WebService RP...
摘要:本地服務(wù)地址具體端口跟配置有關(guān)配置添加依賴包在增加的配置和的配置編寫服務(wù)在增加的配置,記得要的配置就能看到接口說明可以直接運(yùn)行的 ws-server-demo 本地服務(wù)地址(具體端口跟tomcat配置有關(guān)) http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴包 org.apache.c...
摘要:證書有兩種形式指定路徑有三種形式的插件可以指定參數(shù)來解決一下常見的問題下的可以選擇所需的命令參數(shù)使用參考添加解決中命名沖突添加指定自動(dòng)生成的包名 ws-client-demo 客戶端調(diào)用遠(yuǎn)程服務(wù) http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴包 org.apache.cxf c...
閱讀 2280·2021-11-22 09:34
閱讀 1413·2021-10-11 10:59
閱讀 4531·2021-09-22 15:56
閱讀 3438·2021-09-22 15:08
閱讀 3472·2019-08-30 14:01
閱讀 854·2019-08-30 11:16
閱讀 1183·2019-08-26 13:51
閱讀 2971·2019-08-26 13:43