摘要:筆者很菜,文章僅供自己復習使用,不專業之處請見諒?,F在公司讓用的框架,未來也許某天也會成為主流的吧,本文主要講解如何簡單使用進行開發。這里談的是不是,兩個技術名詞長得很像卻是兩碼事看錯文章的朋友請打住。在標簽下指定屬性所對應的類。
吐槽:不斷的JAVA新技術學習中,幸得筆者同事xunhua是大神,真的是大神級那種,一路抱大腿走過荊棘之路,真的可以用荊棘來形容Karaf(OSGi)+ CXF的學習難度,因為國內教程少之又少,國外官方文檔盡管齊備但通篇閱讀并實戰成形,對于我這種JAVA小白簡直就是在開荒一樣...滿路荊棘。筆者JAVA很菜,文章僅供自己復習使用,不專業之處請見諒。
前言:最近因公司軟件遭受Struts漏洞攻擊,多個系統均被影響,公司高層決定去Struts化,故而尋求JAVA里冷門技術來避規熱門框架容易被發現漏洞而遭受攻擊的風險,這個決策是很明智的,但冷門技術也意味著更少的文檔幫助,需要更深厚的開發功底才能駕馭。提到Struts就得說說早點筆者剛畢業那會(2012年)學的是J2EE,Servlet,JSP這些今天看來較原生的技術,SSH(Struts+Spring+Hibernate)那會才流行起來,短短4年發展,如今(2016年)聽說流行風向已經轉到SpringMVC+Mybatis去了,由此可見JAVA不斷學習成本還是蠻高的?,F在公司讓用Karaf(OSGi)+ CXF的框架,未來OSGi也許某天也會成為主流的吧,本文主要講解如何簡單使用Karaf+CXF進行開發。
Karaf及OSGi:
關于這兩個東西究竟是啥,理論的東西就不多談了,因為國內國外能看到教程通篇理論到底比比皆是,各種神吹上天愿景無限展望的文章多如牛毛,但能落到實處的卻少之又少,簡單點OSGi是種標準而Karaf是實現了這種標準的JAVA Container。
這里談的是Karaf不是Kafka,兩個技術名詞長得很像卻是兩碼事...看錯文章的朋友請打住。
Karaf:
簡單來說,以筆者的理解Karaf是類似于Tomcat的Java Container,但Karaf比Tomcat更 為強大,它能以模塊化加載管理,比如你需要Spring模塊來運行Spring的程序或是如我們需要CXF模塊來運行我們的CXF程序,你都是完全可定制化的,Karaf提供了強大的命令行操作功能,如果學習過Linux的朋友運用起來肯定不會覺得陌生。
OSGi:
這個東西比較扯淡,有興趣的朋友自行補腦吧,推薦一篇較好的博文:
http://www.cnblogs.com/jingmo...
筆者也沒有深度解讀,因為筆者一直都是重實用輕理論的程序員,因為技術更新換代太快了,不得不再次感嘆JAVA技術學習的成本問題。
OSGi目前理解看來是熱部署的一種實現,熱部署簡單來說就是從整站到部分的更新,早些年的網站升級更新需要停掉服務器才能進行,哪怕你只修復后端一個小小的登錄bug,隨著系統愈趨于龐大的時候,一個大的系統集群將由許多網站集成,關閉某個站點往往會影響到其他系統,比如筆者所呆的公司每次一個系統升級都能影響到十來個其他系統,開發完到正式上線總是需要不斷的和其他組進行維護時間確認再確認,因為這十來個系統里他們也在不斷的迭代更新中,很可能會因為你關閉1小時而沒有通知到位造成整個系統癱瘓(這種事還是經常發生的),OSGi則是以最小量進行開發和部署的,比如一個程序里有登錄和注冊兩個功能,那么開發時登錄和注冊這兩個功能將分別開發及打包,也就是打包出來login.jar及reg.jar兩個包,而這兩個包又組成web.jar這個程序,在使用OSGi的JAVA Container(筆者此處僅介紹Karaf,據說還有個Camel)進行更新時,如果本次更新只是涉及Login.jar的部分,那么我們只需要把Login.jar部分打包放到Karaf里,Karaf會自動幫你先暫停Login這塊的功能,但此時Reg的功能是不受影響的,快速更新完Login之后將繼續服務,整個過程不會需要整站暫停,因為你的開發針對局部,更新也是局部的,如果某次更新都涉及了Login和Reg,那么我們需要打包Web到Karaf,Karaf會自動處理,而與Web同級別的其他網站比如Web—2將不受Web-1的過度影響,一般遇到此類需要整站更新的部分多半都還是會通知其他別人,同步進行的好,使用OSGi的好處在筆者看來,修復Bug更快速,畢竟一個大的版本都需要更新的時候,說明這個版本還不能達到release的要求。
CXF:
一個SOA框架,至于要分出個什么不同來,真的不太清楚,在筆者認為類似于.NET里的WCF
百度百科貌似要寫得更容易讓人明白一點:http://baike.baidu.com/link?u...
Maven:
打包工具,如之前提到的我們只希望打包出login.jar、reg.jar這類最小的單元,而如何讓login.jar和reg.jar組成web.jar這些都是需要Maven去配置管理引用關系的。筆者又篇關于Maven的文章,記錄了筆者學習Maven遇到的坑。
基本技術介紹完畢,進入正題:
筆者使用版本:apache-karaf-4.0.7
1.Karaf路徑解讀
其實同linux的路徑很相似:
/bin 存放了一些服務器操作的腳本,要啟動karaf的話,雙擊karaf.bat即可(切忌不是start.bat)
/data 存放karaf運行中的日志、部署之后的bundle等,其中/cache即為真正運行的bundle緩存程序,每一個bundle下都會有bundle.info文件標注出部署前引用的源文件出處
/demos 官方給出的項目使用案例
/deploy 部署源文件,將打包后的jar文件拖進此文件夾,karaf即會開始自動部署到/data文件夾下
/etc karaf的環境變量文件夾,其中.properties為karaf的配置文件,.cfg為程序配置文件,比如你的數據庫連接bundle需要從配置文件中讀取數據庫地址信息,則需要在該文件夾下創建對應的cfg文件,并在Activator中進行讀取,將再后面進行詳細解讀
2./etc文件夾下的奧義
這個文件夾下存放了大量的配置文件,搞懂這些配置文件便是把karaf玩上更高水平的必經之路,但是對于匱乏的幫助文檔而言,實在是不小的一筆學習成本。
1.config.properties 根據config.properties的開篇注釋,這個文件列出了karaf的默認參數設置,可以修改custom.properties來復寫這個文件 其中值得提出的是karaf.framework=felix屬性,在OSGi框架中有四大金剛Knopflerfish, Apache Felix, Equinox, Spring DM, 這里可以切換框架,karaf支持Apache Felix及Equinox,eclipse上所使用的也是Felix框架,所以有心的朋友可以去探索下。 關于karaf調用的java版本則是默認使用system的JAVA_HOME配置,需要更改java版本則需要賺到/bin目錄下的setenv.bat中進行修改 2.org.ops4j.pax.web.cfg 該配置文件主要設定了http的訪問端口,因為筆者用CXF,而karaf的多端口技術,據xunhua說實現起來較難,建議是兩份karaf的copy, 修改此處為不同的端口來實現較容易些:org.osgi.service.http.port = 8181
3.Activator啟動入口
這個東西有點像.NET里的global.asax文件,這個類實現了BundleActivator接口,而這個接口提供了兩個常用函數Start及Stop分別對應bundle啟動時調用及bundle
停止時調用,這使得我們可以在bundle的生命周期中去做一些事,比如在start時去讀取數據庫的配置文件。
你可以在你的工程內編寫多個不同實現BundleActivator接口的Activator類用于不同場景的調用,但在配置時,生效的只能指定一個,而這個指定則在maven的pom.xml配置文件中。
在plugin標簽下指定bundle-Activator屬性所對應的類。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/65272.html
摘要:最近幫助一個客戶部署了一個環境。客戶提出,能不能讓開機啟動。不需要讓運維人員知道如何操作。需求合理,沒有拒絕的理由。原以為設置個開機啟動,和玩似的,結果被機器玩了。所以,第一眼在下看到官方的開機啟動方案時,眼前一亮。 最近幫助一個客戶部署了一個Apache Servicemix環境。客戶提出,能不能讓Servicemix開機啟動。這樣,如果機器出現了什么問題,重啟一下就好了。不需要讓運...
摘要:支持相關規范和標準,包括同上。支持多種傳輸協議和協議綁定數據綁定。構建端還有其服務實現,接口使用注解,標明是一個遠程服務接口。然后編寫一個的啟動程序,并運行,我想你會成功的因為我看到了下圖是一種跨平臺的技術協議。 本博客 貓叔的博客,轉載請申明出處 學習系列 RPC框架是啥? RPC框架是啥之Java自帶RPC實現,RMI框架入門 Apache CXF一款WebService RP...
摘要:使用創建工程,引入和,如下在中配置和創建要提供服務接口和實現接口類實現類配置文件注意引入和,然后添加要提供的接口信息全文如下配置完成后,部署到,啟動訪問即可看到服務已成功發布。客戶端實現見下文使用實現客戶端 1 使用Maven創建Java Web工程,引入cxf和spring,pom.xml如下 4.0.0 com.liubo test-cxf 0.0...
摘要:服務搭建參見使用搭建服務端使用實現客戶端創建工程添加,在選項中添加地址執行構建或自動構建,會自動生成相應的客戶端代碼例如調用,如下執行成功,得到如下結果 WebServices服務搭建參見:使用CXF搭建WebServices服務端 使用cxf-codegen-plugin實現WebServices客戶端 1 創建maven工程 添加cxf-codegen-plugin,在選項中添加...
摘要:證書有兩種形式指定路徑有三種形式的插件可以指定參數來解決一下常見的問題下的可以選擇所需的命令參數使用參考添加解決中命名沖突添加指定自動生成的包名 ws-client-demo 客戶端調用遠程服務 http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴包 org.apache.cxf c...
閱讀 3218·2021-11-12 10:36
閱讀 1279·2019-08-30 15:56
閱讀 2447·2019-08-30 11:26
閱讀 558·2019-08-29 13:00
閱讀 3613·2019-08-28 18:08
閱讀 2753·2019-08-26 17:18
閱讀 1901·2019-08-26 13:26
閱讀 2437·2019-08-26 11:39