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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ejb 2.1 jboss

由于“功能培訓”繼續前進,而我們又沒有保持軟件堆棧的最新狀態,因此我們的團隊發現自己處于不得不遷移的不利位置:

  • JBoss 4.2.3到AS 7.1.x(當前為7.1.1)
  • EJB 2.1到EJB 3.1
  • Hibernate2到Hibernate3或4

以快速的方式。 我的意思是,誰想要發布具有8-10年歷史的軟件的新版本,而不是我! 以下是我在研究從具有EJB 2.1的JBoss 4.2.3升級到具有EJB 3.1的AS 7.1.x時所做的一些研究的結果。 我相信還會有更多

與不久的將來的遷移相關的帖子,但這與JNDI命名區域的更改有關。

過去/當前

在我們當前的代碼中,JNDI的命名非常簡單:

  • 我們在部署描述符中將“ ejb /”與遠程會話Bean接口的名稱連接起來,以指示服務應綁定的名稱。
  • 在代碼中,我們使用以下代碼來處理JNDI查找。 真正令人高興的部分是,遠程客戶端可以在容器內的服務器上以及服務器上使用相同的代碼。
  • 當前代碼

    Hashtable properties = new Hashtable(); properties.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); properties.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); properties.put("java.naming.provider.url", "jnp://localhost:1099"); Context ctx = new InitialContext(properties); Object ref = ctx.lookup(jndiName);

    AS7和EJB 3.1

    EJB 3.1規范進行了一些更改,以強制要求EJB的可移植JNDI名稱,您可以在AS 7.1.1中繼承它。 我發現的另一件棘手的事情是,我無法再使用來自遠程客戶端和服務器的完全相同的查找代碼。

    現在,AS 7具有兩個用于遠程EJB調用的選項 。 您需要的信息可以在JBoss文檔中找到,但并沒有打動我! 經過幾天的努力,我決定創建一個小程序,以幫助(希望)使差異非常清楚。 下面是我創建用來從遠程客戶端調用無狀態會話Bean的程序。 我從7.1快速入門示例中部署了“ ejb-remote”示例。 該代碼嘗試使用兩種遠程方法加載遠程服務。 可以預期的是,對于第一組查找,第一次查找成功,而第二次使用“ ejb:/”命名格式失敗。 然后,將值為“ org.jboss.ejb.client.naming”的Context.URL_PKG_PREFIXES屬性添加到傳遞給InitialContext構造函數的jndi屬性中,并重復查找。 現在,兩個查找都應該成功。 我已將所有JNDI屬性包含在代碼中,而不是依賴從類路徑中獲取的“ jboss-ejb-client.properties ”或“ jndi.properties ”的副本。

    import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException;import java.util.Hashtable;public class EJBClient {private static String[] JNDINAME = {"jboss-as-ejb-remote-app/CalculatorBean!org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator", "ejb:/jboss-as-ejb-remote-app/CalculatorBean!org.jboss.as.quickstarts.ejb.remote.stateless.RemoteCalculator" };private Hashtable jndiProps;public EJBClient() {// setup 'base' jndi properties - no jboss-ejb-client.properties being picked up from classpath!jndiProps = new Hashtable();jndiProps.put("java.naming.factory.initial", "org.jboss.naming.remote.client.InitialContextFactory");jndiProps.put(InitialContext.PROVIDER_URL, "remote://localhost:4447");jndiProps.put("jboss.naming.client.ejb.context", true);// needed for remote access - remember to run add-user.batjndiProps.put(Context.SECURITY_PRINCIPAL, "client");jndiProps.put(Context.SECURITY_CREDENTIALS, "password");}public void doLookups() {// the 'exported' namespacefor (int i = 0; i < JNDINAME.length; i++) {lookup(JNDINAME[i]);}// This is an important property to set if you want to do EJB invocations via the remote-naming projectjndiProps.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");// now with the ejbfor (int i = 0; i < JNDINAME.length; i++) {lookup(JNDINAME[i]);}}private void lookup(String name) {System.out.println("Lookup name="+name);Context ctx = null;try {ctx = new InitialContext(jndiProps);Object ref = ctx.lookup(name);System.out.println("...Successful");} catch (NamingException e) {System.out.println("...Failed");//System.out.println(e.getMessage());e.printStackTrace();} finally {if (ctx != null) {try {ctx.close();} catch (NamingException e) {}}}}public static void main(String[] args) throws Exception {EJBClient client = new EJBClient();client.doLookups();System.out.println("Done!");}}

    服務器端的AS7

    現在,在服務器上進行JNDI查找的簡單部分與舊方法非常相似,不同之處在于,您仍然需要根據新規范格式化JNDI名稱,并且命名工廠不再是jnp版本!

    Hashtable jndiProps = new Hashtable();jndiProps.put("java.naming.factory.initial", "org.jboss.as.naming.InitialContextFactory");ctx = new InitialContext(jndiProps);Object ref = ctx.lookup(jndiName);

    結論

    就像我之前說的那樣,該信息已經在JBoss文檔中,但是我可能讀了幾次。 我要尋找的是一個示例,該示例顯示了從客戶端和服務器加載EJB。

    希望這可以幫助!

    參考: JBoss AS7 JNDI&EJB 3.1在Scratching我的編程itch博客上,我們的JCG合作伙伴 Mike Miller的命名更改 。

    翻譯自: https://www.javacodegeeks.com/2013/05/jboss-as7-jndi-ejb-3-1-naming-changes.html

    ejb 2.1 jboss

    總結

    以上是生活随笔為你收集整理的ejb 2.1 jboss_JBoss AS7 JNDI和EJB 3.1命名更改的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。