摘要:最近遇到了一個項目需求,技術(shù)選型選擇了,需要對外提供接口??紤]到我們的對外接口需要進(jìn)行分類,需要在原來的路徑映射加上前綴。這個開源組件原來的示例表示路徑,表示的具體實現(xiàn)。
Java的世界屬于開源的世界,所謂開源的世界,只要你能想到的點子就一定有人實現(xiàn)了,沒有你就自己造一個啊。
最近遇到了一個項目需求,技術(shù)選型選擇了webservice,需要對外提供webservice接口。實現(xiàn)webserice功能可以有多種做法的,比如servlet + tomcat的方式,Java Main方法+嵌入jetty server的方式,本質(zhì)上是XML/HTTP的原理(誤?)。
項目組對外提供接口的功能已經(jīng)選擇了HTTP/Netty的方式,既然已經(jīng)有HTTP的支持了,那么XML/HTTP On Netty或許是個不錯的點子,這樣我們不用再引入tomcat等服務(wù)應(yīng)用了。
經(jīng)過一番搜索,終于發(fā)現(xiàn)了netty-jax-ws這款組件,非常符合我們的需求,于是就采用了它完成了開發(fā)工作。
考慮到我們的對外接口需要進(jìn)行分類,需要在原來的URL路徑映射加上前綴。
這個開源組件原來的示例
mappings.put("/echoService", echoWebService);
key表示URL路徑,value表示webservice的具體實現(xiàn)。
此時我們給它加上前綴
mappings.put("/honey/echoService", echoWebService);
比如之前的訪問方式http://localhost:4040/echoService?wsdl,這回我們的訪問路徑應(yīng)該是http://localhost:4040/honey/echoService?wsdl,
只不過這回意外的是服務(wù)給我們返回的是404的結(jié)果,看來我們的路徑是不正確的,或者這個訪問路徑找不到實現(xiàn)的webservice(類似MVC框架中的Controller)。
這個問題的原因很快就排查出來的,我覺得可能自己就能解決,于是乎就fork了項目試著改動起來,參見這個提交commit1,至此暫告一段落了。
這部分功能代碼就加入到了原來的項目中,只不過已經(jīng)打包部署就發(fā)現(xiàn),只要訪問webservice功能http://localhost:4040/honey/echoService?wsdl,
就會報錯:NoSuchMethodError, 然后是xx.jboss.netty.xx.ChannelFactory諸如此類的錯誤,我第一個感覺就是netty-jax-ws和原來的項目使用的Netty版本沖突了。
此時我請教我們組經(jīng)驗豐富的同事,遇到這種情況要不要迎難而上呢,還是另辟蹊徑呢?(當(dāng)然,當(dāng)時肯定是口語化的表達(dá))。
既然我前面已經(jīng)改造過一回,不在乎再一次了,所以就有了這次commit2。
以上算是我真正意義地上參與了一次開源貢獻(xiàn),我只是做了一點工作而已了。
-- EDIT --
這次修改是為了支持通過代理的方式訪問webservice,支持了HTTP Host請求頭,修改參見commit3
文章屬個人觀點,與本人工作雇主無關(guān)!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110352.html
摘要:都是分開部署,單獨上線的。序列化畢竟是遠(yuǎn)程通信,需要將對象轉(zhuǎn)化成二進(jìn)制流進(jìn)行傳輸。服務(wù)化架構(gòu)的演進(jìn)架構(gòu)當(dāng)業(yè)務(wù)規(guī)模很小時,將所有功能都不熟在同一個進(jìn)程中,通過雙機(jī)或者負(fù)載均衡器實現(xiàn)負(fù)債分流此時,分離前后臺邏輯的架構(gòu)是關(guān)鍵。 showImg(https://segmentfault.com/img/bVbiI2F?w=2250&h=1500); 前言 為什么需要RPC,而不是簡單的HTTP...
摘要:,將類或枚舉類型映射到模式類型,控制字段或?qū)傩缘男蛄谢1硎緦⒆詣咏壎愔械拿總€非靜態(tài)的非瞬態(tài)的由標(biāo)注字段到。,對于數(shù)組或集合即包含多個元素的成員變量,生成一個包裝該數(shù)組或集合的元素稱為包裝器。 在經(jīng)過前面兩篇文章的學(xué)習(xí),我已經(jīng)能夠熟練創(chuàng)建一個正常運行的spring-ws的webservice服務(wù),大多數(shù)接口,都是要有返回數(shù)據(jù),所以這篇文章就是學(xué)習(xí)spring-ws怎么實現(xiàn)返回數(shù)據(jù) 實...
摘要:如需遠(yuǎn)程訪問,則需在配置文件中設(shè)置,然后重啟。詳見如果是同個容器,直接使用即可,這里是演示了不同容器或主機(jī)下的情況訪問即可 文章開始,先摘錄一下文中各軟件的官方定義Scrapy An open source and collaborative framework for extracting the data youneed from websites.In a fast, simpl...
摘要:如需遠(yuǎn)程訪問,則需在配置文件中設(shè)置,然后重啟。詳見如果是同個容器,直接使用即可,這里是演示了不同容器或主機(jī)下的情況訪問即可 文章開始,先摘錄一下文中各軟件的官方定義Scrapy An open source and collaborative framework for extracting the data youneed from websites.In a fast, simpl...
摘要:后端好書閱讀與推薦系列文章后端好書閱讀與推薦后端好書閱讀與推薦續(xù)后端好書閱讀與推薦續(xù)二后端好書閱讀與推薦續(xù)三這里依然記錄一下每本書的亮點與自己讀書心得和體會,分享并求拍磚。然后又請求封鎖,當(dāng)釋放了上的封鎖之后,系統(tǒng)又批準(zhǔn)了的請求一直等待。 后端好書閱讀與推薦系列文章:后端好書閱讀與推薦后端好書閱讀與推薦(續(xù))后端好書閱讀與推薦(續(xù)二)后端好書閱讀與推薦(續(xù)三) 這里依然記錄一下每本書的...
閱讀 1692·2021-11-19 09:40
閱讀 2943·2021-09-24 10:27
閱讀 3230·2021-09-02 15:15
閱讀 1892·2019-08-30 15:54
閱讀 1215·2019-08-30 15:54
閱讀 1381·2019-08-30 13:12
閱讀 644·2019-08-28 18:05
閱讀 2816·2019-08-27 10:53