日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用

發(fā)布時間:2023/12/3 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

jpa 忽略bean

我并沒有真正為此計(jì)劃,但是在一個免費(fèi)的會議月份中,我有機(jī)會進(jìn)行了一些深入的探討,并向您展示了WildFly-Camel子系統(tǒng)提供的WildFly魔術(shù)上的更多Camel。

商業(yè)背景

該演示來自Christina Lin在JBoss Demo-Central上的一個演示 。 她演示了Camel中File和JDBC連接器的用法,還添加了Spilled模式和Exception處理方法的用法。 該演示的場景是模擬銀行帳戶之間的交易過程。 輸入是一個包含多個事務(wù)的批處理XML文件。 這些可以是現(xiàn)金存款,現(xiàn)金提取或銀行帳戶轉(zhuǎn)賬信息。 根據(jù)交易的類型,它們會被分散,每筆交易都會從數(shù)據(jù)庫中檢索相關(guān)信息,進(jìn)行交易并計(jì)算交易費(fèi)用,然后再將其放回?cái)?shù)據(jù)庫中。

  • 您可以在GitHub上找到完整的原始源代碼 。

我為什么觸摸它

原因:我實(shí)際上不想考慮新的業(yè)務(wù)案例。 而且,不只是想向您展示一些技術(shù)層面的細(xì)節(jié)。 因此,我認(rèn)為僅從克里斯蒂娜(Christina)那里獲得成功就是一個捷徑。 其次,她正在基于Karaf并使用XML DSL進(jìn)行路由定義的Fuse中進(jìn)行所有操作。 我只是個可憐的Java家伙,并且學(xué)會了討厭XML。 另外,她正在使用幾個組件,而我在Java EE上下文中不會使用。

先決條件–部署應(yīng)用程序

在開始演示之前,請確保已將WildFly 8.2.0.Final與WildFly-Camel子系統(tǒng)補(bǔ)丁2.2.0一起安裝 。 現(xiàn)在,可以將我的github帳戶上的演示存儲庫派生到您選擇的目錄中。 它不過是帶有一些其他依賴項(xiàng)的Maven Java EE 7項(xiàng)目。 只要做一個:

mvn clean install

并將生成的target / javaee-bankdemo-1.0-SNAPSHOT.war部署到WildFly服務(wù)器。

此示例中沒有任何UI,因此您基本上必須觀看日志文件并在其中復(fù)制xml文件。 src \ main \ in-data文件夾包含bank.xml,您需要將其復(fù)制到standalone \ data \ inbox文件夾中。 第二步完成,駱駝開始了。

客戶狀態(tài)

一切都始于標(biāo)準(zhǔn)的Java EE應(yīng)用程序。 實(shí)體CustomerStatus保存帳戶信息(ID,VipStatus,余額)。 它還具有一些NamedQueries。 看起來完全不是駱駝特有的。 WildFly用作默認(rèn)數(shù)據(jù)庫的內(nèi)存中H2數(shù)據(jù)庫在三個腳本的幫助下進(jìn)行了預(yù)先填充,這三個腳本在persistance.xml中配置為架構(gòu)生成屬性。 我在這里與兩個客戶一起工作,分別是A01和A02。

駱駝和Java EE

在這種情況下,駱駝自舉非常簡單。 BankRouteBuilder具有@ContextName(“ cdi-context”)批注,它本身是應(yīng)用程序范圍內(nèi)的啟動bean,其中包含小演示所需的所有路由。 隨時重新閱讀并了解其他可能的選項(xiàng),以部署/配置路由 。 hawt.io控制臺(http:// localhost:8080 / hawtio /)可以很好地顯示所有內(nèi)容。 該應(yīng)用程序有五條路線。

ReadFile是第一個,它基本上僅準(zhǔn)備好xml文件,并將各個條目( 由xPath表達(dá)式拆分 )推入processTransaction路由。

這個決定是“現(xiàn)金”交易還是“轉(zhuǎn)移”交易。 分別以“ direct:doTransfer ”或“ direct:processCash ” 結(jié)尾 。 我將所有原始xml路由定義留在BankRouteBilder中作為注釋。 如果您搜索特定的解決方案,可能會有所幫助。

保險絲演示的差異

Christina經(jīng)常使用Camel JDBC組件 。 它完成了所有繁重的工作,甚至完成了初始數(shù)據(jù)庫設(shè)置。 這是我們在任何地方都不想做的事情,但是特別是在Java EE環(huán)境中,我們可以使用所有的JPA magic了。 實(shí)際上,有一個Camel JPA componente ,但是它非常有限,并且不真正支持NamedQueries或類似的東西。

解決此問題的一種非常有效的方法是使用具有所有bean綁定的Camel Bean組件和已集成的cdi組件。 所有數(shù)據(jù)庫訪問都通過CustomerStatusService進(jìn)行管理。 這基本上是一個@Named bean,它注入了EntityManager并知道如何加載CustomerStatus實(shí)體。 只需在bean端點(diǎn)中引用它即可將其注入到RouteBuilder中:

.to("bean:customerService?method=loadCustomer")

我同意,幕后發(fā)生了很多魔術(shù),而CustomerStatusService依賴于Camel類這一事實(shí)是我不喜歡的另一件事。 但這可以通過將服務(wù)@ Inject-注入路由并以類似方式引用來輕松解決。 我決定不這樣做,因?yàn)槲蚁胱孋hristina的演示的最初流程保持活力。 她經(jīng)常與交易所合作,并依賴它們。 因此,我更接近她的榜樣。

關(guān)于交易的話

我實(shí)際上在此示例中使用擴(kuò)展的持久性上下文,并將服務(wù)中的updateCustomer方法標(biāo)記為@Transactional 。 這是一種將完整和更新的CustomerStatus實(shí)體合并回?cái)?shù)據(jù)庫的非常簡單的方法。 整個doTransfer路由目前都不是事務(wù)性的。 即使第二個客戶不在系統(tǒng)中,該金額仍將從第一個客戶帳戶中提取。 我想在稍后的階段和單獨(dú)的博客文章中介紹。

現(xiàn)在就這樣。 享受您的周末,并與Camel和WildFly Camel子系統(tǒng)一起玩。 很高興通過@myfear或在博客文章中發(fā)表評論來接收您的想法或問題。

翻譯自: https://www.javacodegeeks.com/2015/07/using-jpa-and-cdi-beans-with-camel-on-wildfly.html

jpa 忽略bean

總結(jié)

以上是生活随笔為你收集整理的jpa 忽略bean_在WildFly上将JPA和CDI Bean与骆驼一起使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。