2015-12-03 51 views
0

我正在使用域模式在JBossEAP 6.4上運行應用程序。我需要處理從服務器到不同硬件設備的多個(最多1000個)並行TCP連接。 必須在服務器端打開連接,並保持90秒。所有連接使用相同的端口和協議,但目標IP地址不同。從JBoss EAP到不同IP的多個出站TCP連接

我不知道JCA適配器是否適合此用例。我應該爲每個設備創建特殊的激活規範還是使用JCA資源適配器以外的其他方法?

回答

0

這個問題有點老舊,但JCA是一種不那麼流行的技術,所以關於它的一些知識將是有用的,儘管事實上你可能已經實現了所有的東西。

首先,JCA是編寫連接器的規範,它本身不是連接器實現。如果您需要您的應用程序使用外部TCP,則由您來實現連接器。

JCA是否適合您的特定需求僅取決於「不同硬件設備」的性質。資源適配器的設計目的是在每個服務的基礎上使用可能的連接池。即這個特定適配器會觸發的所有連接應該具有非常相似的性質並且可以互換。但是,JCA適配器在這個範圍之外也具有明顯的優勢,特別是在EJB環境中。 EJB對你的代碼施加了相當苛刻的限制:沒有鎖定,線程產生等等。沒有所有這些東西,實現TCP I/O可能相當困難。 JCA和它的線程自由(MDB能夠在其激活時提供EJB友好的範圍,儘管有底層線程源)。

結論:如果您在EJB環境中工作(或者如果您打算在未來可觀察的情況下這樣做),您應該考慮將JCA用於TCP網絡。如果您在Java EE堆棧上使用基於Spring的環境,則可能需要省略這種複雜的技術,並堅持一些純粹的Netty網絡。

如果您選擇繼續使用JCA,請考慮檢查我目前正在維護的JCA SocketConnector。它建立在Netty堆棧上,對您來說可能是一個好的開始。您也可以將其用作構思自己實現的思想源。