成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

Karaf(OSGi)+CXF荊棘之路

hankkin / 2687人閱讀

摘要:筆者很菜,文章僅供自己復(fù)習(xí)使用,不專(zhuān)業(yè)之處請(qǐng)見(jiàn)諒?,F(xiàn)在公司讓用的框架,未來(lái)也許某天也會(huì)成為主流的吧,本文主要講解如何簡(jiǎn)單使用進(jìn)行開(kāi)發(fā)。這里談的是不是,兩個(gè)技術(shù)名詞長(zhǎng)得很像卻是兩碼事看錯(cuò)文章的朋友請(qǐng)打住。在標(biāo)簽下指定屬性所對(duì)應(yīng)的類(lèi)。

吐槽:不斷的JAVA新技術(shù)學(xué)習(xí)中,幸得筆者同事xunhua是大神,真的是大神級(jí)那種,一路抱大腿走過(guò)荊棘之路,真的可以用荊棘來(lái)形容Karaf(OSGi)+ CXF的學(xué)習(xí)難度,因?yàn)閲?guó)內(nèi)教程少之又少,國(guó)外官方文檔盡管齊備但通篇閱讀并實(shí)戰(zhàn)成形,對(duì)于我這種JAVA小白簡(jiǎn)直就是在開(kāi)荒一樣...滿(mǎn)路荊棘。筆者JAVA很菜,文章僅供自己復(fù)習(xí)使用,不專(zhuān)業(yè)之處請(qǐng)見(jiàn)諒。
前言:最近因公司軟件遭受Struts漏洞攻擊,多個(gè)系統(tǒng)均被影響,公司高層決定去Struts化,故而尋求JAVA里冷門(mén)技術(shù)來(lái)避規(guī)熱門(mén)框架容易被發(fā)現(xiàn)漏洞而遭受攻擊的風(fēng)險(xiǎn),這個(gè)決策是很明智的,但冷門(mén)技術(shù)也意味著更少的文檔幫助,需要更深厚的開(kāi)發(fā)功底才能駕馭。提到Struts就得說(shuō)說(shuō)早點(diǎn)筆者剛畢業(yè)那會(huì)(2012年)學(xué)的是J2EE,Servlet,JSP這些今天看來(lái)較原生的技術(shù),SSH(Struts+Spring+Hibernate)那會(huì)才流行起來(lái),短短4年發(fā)展,如今(2016年)聽(tīng)說(shuō)流行風(fēng)向已經(jīng)轉(zhuǎn)到SpringMVC+Mybatis去了,由此可見(jiàn)JAVA不斷學(xué)習(xí)成本還是蠻高的?,F(xiàn)在公司讓用Karaf(OSGi)+ CXF的框架,未來(lái)OSGi也許某天也會(huì)成為主流的吧,本文主要講解如何簡(jiǎn)單使用Karaf+CXF進(jìn)行開(kāi)發(fā)。

Karaf及OSGi:
關(guān)于這兩個(gè)東西究竟是啥,理論的東西就不多談了,因?yàn)閲?guó)內(nèi)國(guó)外能看到教程通篇理論到底比比皆是,各種神吹上天愿景無(wú)限展望的文章多如牛毛,但能落到實(shí)處的卻少之又少,簡(jiǎn)單點(diǎn)OSGi是種標(biāo)準(zhǔn)而Karaf是實(shí)現(xiàn)了這種標(biāo)準(zhǔn)的JAVA Container。
這里談的是Karaf不是Kafka,兩個(gè)技術(shù)名詞長(zhǎng)得很像卻是兩碼事...看錯(cuò)文章的朋友請(qǐng)打住。
Karaf:
簡(jiǎn)單來(lái)說(shuō),以筆者的理解Karaf是類(lèi)似于Tomcat的Java Container,但Karaf比Tomcat更 為強(qiáng)大,它能以模塊化加載管理,比如你需要Spring模塊來(lái)運(yùn)行Spring的程序或是如我們需要CXF模塊來(lái)運(yùn)行我們的CXF程序,你都是完全可定制化的,Karaf提供了強(qiáng)大的命令行操作功能,如果學(xué)習(xí)過(guò)Linux的朋友運(yùn)用起來(lái)肯定不會(huì)覺(jué)得陌生。
OSGi:
這個(gè)東西比較扯淡,有興趣的朋友自行補(bǔ)腦吧,推薦一篇較好的博文:
http://www.cnblogs.com/jingmo...
筆者也沒(méi)有深度解讀,因?yàn)楣P者一直都是重實(shí)用輕理論的程序員,因?yàn)榧夹g(shù)更新?lián)Q代太快了,不得不再次感嘆JAVA技術(shù)學(xué)習(xí)的成本問(wèn)題。
OSGi目前理解看來(lái)是熱部署的一種實(shí)現(xiàn),熱部署簡(jiǎn)單來(lái)說(shuō)就是從整站到部分的更新,早些年的網(wǎng)站升級(jí)更新需要停掉服務(wù)器才能進(jìn)行,哪怕你只修復(fù)后端一個(gè)小小的登錄bug,隨著系統(tǒng)愈趨于龐大的時(shí)候,一個(gè)大的系統(tǒng)集群將由許多網(wǎng)站集成,關(guān)閉某個(gè)站點(diǎn)往往會(huì)影響到其他系統(tǒng),比如筆者所呆的公司每次一個(gè)系統(tǒng)升級(jí)都能影響到十來(lái)個(gè)其他系統(tǒng),開(kāi)發(fā)完到正式上線(xiàn)總是需要不斷的和其他組進(jìn)行維護(hù)時(shí)間確認(rèn)再確認(rèn),因?yàn)檫@十來(lái)個(gè)系統(tǒng)里他們也在不斷的迭代更新中,很可能會(huì)因?yàn)槟汴P(guān)閉1小時(shí)而沒(méi)有通知到位造成整個(gè)系統(tǒng)癱瘓(這種事還是經(jīng)常發(fā)生的),OSGi則是以最小量進(jìn)行開(kāi)發(fā)和部署的,比如一個(gè)程序里有登錄和注冊(cè)兩個(gè)功能,那么開(kāi)發(fā)時(shí)登錄和注冊(cè)這兩個(gè)功能將分別開(kāi)發(fā)及打包,也就是打包出來(lái)login.jar及reg.jar兩個(gè)包,而這兩個(gè)包又組成web.jar這個(gè)程序,在使用OSGi的JAVA Container(筆者此處僅介紹Karaf,據(jù)說(shuō)還有個(gè)Camel)進(jìn)行更新時(shí),如果本次更新只是涉及Login.jar的部分,那么我們只需要把Login.jar部分打包放到Karaf里,Karaf會(huì)自動(dòng)幫你先暫停Login這塊的功能,但此時(shí)Reg的功能是不受影響的,快速更新完Login之后將繼續(xù)服務(wù),整個(gè)過(guò)程不會(huì)需要整站暫停,因?yàn)槟愕拈_(kāi)發(fā)針對(duì)局部,更新也是局部的,如果某次更新都涉及了Login和Reg,那么我們需要打包Web到Karaf,Karaf會(huì)自動(dòng)處理,而與Web同級(jí)別的其他網(wǎng)站比如Web—2將不受Web-1的過(guò)度影響,一般遇到此類(lèi)需要整站更新的部分多半都還是會(huì)通知其他別人,同步進(jìn)行的好,使用OSGi的好處在筆者看來(lái),修復(fù)Bug更快速,畢竟一個(gè)大的版本都需要更新的時(shí)候,說(shuō)明這個(gè)版本還不能達(dá)到release的要求。

CXF:
一個(gè)SOA框架,至于要分出個(gè)什么不同來(lái),真的不太清楚,在筆者認(rèn)為類(lèi)似于.NET里的WCF
百度百科貌似要寫(xiě)得更容易讓人明白一點(diǎn):http://baike.baidu.com/link?u...

Maven:
打包工具,如之前提到的我們只希望打包出login.jar、reg.jar這類(lèi)最小的單元,而如何讓login.jar和reg.jar組成web.jar這些都是需要Maven去配置管理引用關(guān)系的。筆者又篇關(guān)于Maven的文章,記錄了筆者學(xué)習(xí)Maven遇到的坑。

基本技術(shù)介紹完畢,進(jìn)入正題:

筆者使用版本:apache-karaf-4.0.7

1.Karaf路徑解讀

其實(shí)同linux的路徑很相似:
/bin 存放了一些服務(wù)器操作的腳本,要啟動(dòng)karaf的話(huà),雙擊karaf.bat即可(切忌不是start.bat)
/data 存放karaf運(yùn)行中的日志、部署之后的bundle等,其中/cache即為真正運(yùn)行的bundle緩存程序,每一個(gè)bundle下都會(huì)有bundle.info文件標(biāo)注出部署前引用的源文件出處
/demos 官方給出的項(xiàng)目使用案例
/deploy 部署源文件,將打包后的jar文件拖進(jìn)此文件夾,karaf即會(huì)開(kāi)始自動(dòng)部署到/data文件夾下
/etc karaf的環(huán)境變量文件夾,其中.properties為karaf的配置文件,.cfg為程序配置文件,比如你的數(shù)據(jù)庫(kù)連接bundle需要從配置文件中讀取數(shù)據(jù)庫(kù)地址信息,則需要在該文件夾下創(chuàng)建對(duì)應(yīng)的cfg文件,并在Activator中進(jìn)行讀取,將再后面進(jìn)行詳細(xì)解讀

2./etc文件夾下的奧義
這個(gè)文件夾下存放了大量的配置文件,搞懂這些配置文件便是把karaf玩上更高水平的必經(jīng)之路,但是對(duì)于匱乏的幫助文檔而言,實(shí)在是不小的一筆學(xué)習(xí)成本。

1.config.properties
根據(jù)config.properties的開(kāi)篇注釋?zhuān)@個(gè)文件列出了karaf的默認(rèn)參數(shù)設(shè)置,可以修改custom.properties來(lái)復(fù)寫(xiě)這個(gè)文件
其中值得提出的是karaf.framework=felix屬性,在OSGi框架中有四大金剛Knopflerfish, Apache Felix, Equinox, Spring DM,
這里可以切換框架,karaf支持Apache Felix及Equinox,eclipse上所使用的也是Felix框架,所以有心的朋友可以去探索下。
關(guān)于karaf調(diào)用的java版本則是默認(rèn)使用system的JAVA_HOME配置,需要更改java版本則需要賺到/bin目錄下的setenv.bat中進(jìn)行修改

2.org.ops4j.pax.web.cfg
該配置文件主要設(shè)定了http的訪問(wèn)端口,因?yàn)楣P者用CXF,而karaf的多端口技術(shù),據(jù)xunhua說(shuō)實(shí)現(xiàn)起來(lái)較難,建議是兩份karaf的copy,
修改此處為不同的端口來(lái)實(shí)現(xiàn)較容易些:org.osgi.service.http.port = 8181

3.Activator啟動(dòng)入口
這個(gè)東西有點(diǎn)像.NET里的global.asax文件,這個(gè)類(lèi)實(shí)現(xiàn)了BundleActivator接口,而這個(gè)接口提供了兩個(gè)常用函數(shù)Start及Stop分別對(duì)應(yīng)bundle啟動(dòng)時(shí)調(diào)用及bundle
停止時(shí)調(diào)用,這使得我們可以在bundle的生命周期中去做一些事,比如在start時(shí)去讀取數(shù)據(jù)庫(kù)的配置文件。
你可以在你的工程內(nèi)編寫(xiě)多個(gè)不同實(shí)現(xiàn)BundleActivator接口的Activator類(lèi)用于不同場(chǎng)景的調(diào)用,但在配置時(shí),生效的只能指定一個(gè),而這個(gè)指定則在maven的pom.xml配置文件中。
在plugin標(biāo)簽下指定bundle-Activator屬性所對(duì)應(yīng)的類(lèi)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/65272.html

相關(guān)文章

  • karaf隨ubuntu開(kāi)機(jī)啟動(dòng)

    摘要:最近幫助一個(gè)客戶(hù)部署了一個(gè)環(huán)境??蛻?hù)提出,能不能讓開(kāi)機(jī)啟動(dòng)。不需要讓運(yùn)維人員知道如何操作。需求合理,沒(méi)有拒絕的理由。原以為設(shè)置個(gè)開(kāi)機(jī)啟動(dòng),和玩似的,結(jié)果被機(jī)器玩了。所以,第一眼在下看到官方的開(kāi)機(jī)啟動(dòng)方案時(shí),眼前一亮。 最近幫助一個(gè)客戶(hù)部署了一個(gè)Apache Servicemix環(huán)境??蛻?hù)提出,能不能讓Servicemix開(kāi)機(jī)啟動(dòng)。這樣,如果機(jī)器出現(xiàn)了什么問(wèn)題,重啟一下就好了。不需要讓運(yùn)...

    andong777 評(píng)論0 收藏0
  • RPC框架是啥之Apache CXF一款WebService RPC框架入門(mén)教程

    摘要:支持相關(guān)規(guī)范和標(biāo)準(zhǔn),包括同上。支持多種傳輸協(xié)議和協(xié)議綁定數(shù)據(jù)綁定。構(gòu)建端還有其服務(wù)實(shí)現(xiàn),接口使用注解,標(biāo)明是一個(gè)遠(yuǎn)程服務(wù)接口。然后編寫(xiě)一個(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框架入門(mén) Apache CXF一款WebService RP...

    SolomonXie 評(píng)論0 收藏0
  • 使用CXF搭建WebServices服務(wù)端

    摘要:使用創(chuàng)建工程,引入和,如下在中配置和創(chuàng)建要提供服務(wù)接口和實(shí)現(xiàn)接口類(lèi)實(shí)現(xiàn)類(lèi)配置文件注意引入和,然后添加要提供的接口信息全文如下配置完成后,部署到,啟動(dòng)訪問(wèn)即可看到服務(wù)已成功發(fā)布??蛻?hù)端實(shí)現(xiàn)見(jiàn)下文使用實(shí)現(xiàn)客戶(hù)端 1 使用Maven創(chuàng)建Java Web工程,引入cxf和spring,pom.xml如下 4.0.0 com.liubo test-cxf 0.0...

    hatlonely 評(píng)論0 收藏0
  • 使用cxf-codegen-plugin實(shí)現(xiàn)WebServices客戶(hù)端

    摘要:服務(wù)搭建參見(jiàn)使用搭建服務(wù)端使用實(shí)現(xiàn)客戶(hù)端創(chuàng)建工程添加,在選項(xiàng)中添加地址執(zhí)行構(gòu)建或自動(dòng)構(gòu)建,會(huì)自動(dòng)生成相應(yīng)的客戶(hù)端代碼例如調(diào)用,如下執(zhí)行成功,得到如下結(jié)果 WebServices服務(wù)搭建參見(jiàn):使用CXF搭建WebServices服務(wù)端 使用cxf-codegen-plugin實(shí)現(xiàn)WebServices客戶(hù)端 1 創(chuàng)建maven工程 添加cxf-codegen-plugin,在選項(xiàng)中添加...

    Terry_Tai 評(píng)論0 收藏0
  • 使用 Apache cxf 實(shí)現(xiàn) WebService 客戶(hù)端

    摘要:證書(shū)有兩種形式指定路徑有三種形式的插件可以指定參數(shù)來(lái)解決一下常見(jiàn)的問(wèn)題下的可以選擇所需的命令參數(shù)使用參考添加解決中命名沖突添加指定自動(dòng)生成的包名 ws-client-demo 客戶(hù)端調(diào)用遠(yuǎn)程服務(wù) http://localhost:8280/services/HelloWorld?wsdl spring + cfx 配置 maven 添加依賴(lài)包 org.apache.cxf c...

    mingzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

hankkin

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<