2011-08-03 52 views
1

我繼承了一個在JBoss 2.4.3上運行的應用程序(我認爲它與EJB規範2.0兼容),而且我遇到了很多問題(比如能夠使用現代 log4j「Logger」apis [JBoss 2.4特定問題促使我升級])。EJB容器如何向後兼容?

據我所知,我應該可以使用EJB 2.1容器(Jboss 4)而沒有問題,但我應該期望能夠走得更遠嗎?

什麼是EJB的向後兼容性要求?

它們是否意味着通過主要版本向後兼容?

應用程序供應商是否完全向後兼容?

需要進行哪些修改才能使舊應用程序符合要求? (小型或大型應用程序配置或重新編譯?等)

+0

你什麼異常? –

+0

我沒有得到任何例外,因爲我決定尋求知識,而不是嘗試4個版本的jboss並花費3天「玩」的挑戰。 (我是爲了快速獲勝......我認爲這是EJB的一個矛盾,但我想嘗試)。 – Stephen

+0

我猜你問我得到的例外是否表示後來的版本不兼容:) – Stephen

回答

1

log4j和EJB 2.0沒有關係。如果您在使用log4j時遇到問題,那麼很可能是類路徑問題,而不是EJB 2.0兼容性問題。可能您的舊應用程序假定log4j位於系統類路徑的某處。

+0

問題是,jboss 2.4使用log4j 1.1,並且擴展了不在1.2中的CategoryFactory(並且因此將它從classpath不是一個選項)。它發出了大量的信息級別的消息,不能以我熟悉的方式(或任何真正的方式)關閉。 – Stephen

+1

好吧,這就是JBoss和log4j問題,然後是EJB規範問題。如果您的應用程序是專門爲使用JBoss 2.4的功能而設計的,那麼當然它可能與JBoss和其他容器的後續版本不兼容。但是,如果應用程序使用純粹的EJB規範,它應該是comptabile。 –

1

http://what-when-how.com/enterprise-javabeans-3/backward-compatibility-and-interoperability-with-ejb-2/指出

的EJB 3規範要求所有符合容器支持EJB 2

這是一個好兆頭。它進一步討論了混合EJB 2和3的功能。所以可能會有一些例外,但它確實不應該在幾乎不可能的地方。

現實可能不同;如果我發現我的jboss升級有問題,我會更新。

+3

...支持EJB 2.x編程模型*,如EJB 3規範*中所述。每個新規範都闡明瞭可能引入細微不兼容問題的含糊之處。 –