城市獵人

          在一網情深的日子里,誰能說得清是苦是甜,只知道確定了就義無反顧
          posts - 1, comments - 7, trackbacks - 0, articles - 89

          導航

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(3)

          文章分類(90)

          文章檔案(90)

          收藏夾(12)

          搜索

          •  

          最新評論

          EJB3.0的各應用服務器提供的JNDI接口(轉)

          Posted on 2008-07-11 23:27 sailor 閱讀(765) 評論(0)  編輯  收藏 所屬分類: EJB3
          來源:http://blog.163.com/e_adon/blog/static/338840452007721831904/

                  在分布式開發中,JAVA客戶端程序是通過JNDI去查詢EJB的,而JNDI的全名是:The Java Naming and Directory Interface。因為JNDI 是一組接口,所以我們只需根據接口規范編程就可以。要通過JNDI 進行資源訪問,我們必須設置初始化上下文的參數,主要是設置JNDI 驅動的類名(java.naming.factory.initial)和提供命名服務的URL
          (java.naming.provider.url)。因為Jndi 的實現產品有很多。所以java.naming.factory.initial 的值因提供JNDI 服務器
          的不同而不同,java.naming.provider.url 的值包括提供命名服務的主機地址和端口號。

                  大家在編程時,最令人氣憤的就是EJB程序寫好了,而客戶端卻不知道如何去調用它,一般書上只是介紹一種應用服務器的訪問代碼其它的不會提到,找這方面資料又比較麻煩,當誤大家許多時間和精力,因此我就把已經找到的代碼貼出來,方便大家查找。

                  暫且提供以下三種服務器的代碼,今后再慢慢補充吧。

                  下面是訪問Jboss 服務器的
                  
                  例子代碼:

          1Properties props = new Properties();
          2props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
          3props.setProperty("java.naming.provider.url", "localhost:1099");
          4InitialContext = new InitialContext(props);
          5HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
          6

                  
                  下面是訪問Sun ApplicationServer 及glassfish 應用服務器的例子代碼:
                  

          1Properties props = new Properties();
          2props.setProperty("java.naming.factory.initial",
          3"com.sun.enterprise.naming.SerialInitContextFactory");
          4props.setProperty("java.naming.provider.url", "localhost:3700");
          5InitialContext = new InitialContext(props);
          6HelloWorld helloworld = (HelloWorld) ctx.lookup("com.0735jb.ejb3.HelloWorld");


                  下面是訪問Weblogic10 應用服務器的例子代碼:

          1Properties props = new Properties();
          2props.setProperty("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
          3props.setProperty("java.naming.provider.url", "t3://localhost:7001");
          4InitialContext = new InitialContext(props);
          5HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean
          6#com.0735jb.ejb3.HelloWorld");

           

                  上面是服務器默認的JNDI命名規則,那么如何修改它呢.

                  在Jboss 中要自定義JNDI 名稱,可以使
                  用@LocalBinding 和@RemoteBinding 注釋,@LocalBinding 注釋指定Session Bean 的Local 接口的JNDI 名稱,
                  @RemoteBinding 注釋指定Session Bean 的Remote 接口的JNDI 名稱,下面的代碼展示了如何自定義JNDI 名:

           

          1@Stateless
          2@Remote ({Operation.class})
          3@RemoteBinding (jndiBinding="0735jb/RemoteOperation")
          4@Local ({LocalOperation.class})
          5@LocalBinding (jndiBinding="0735jb/LocalOperation")

           

                  在JSP 客戶端調用上面EJB 的代碼片斷如下:

          1InitialContext ctx = new InitialContext(props);
          2Operation operation = (Operation) ctx.lookup("0735jb/RemoteOperation");
          3在weblogic10 中,你可以通過@Stateless.mappedName()設置全局JNDI 名稱,如:
          4@Stateless(mappedName="OperationBeanRemote")
          5public class OperationBean implements Operation, LocalOperation {
          6


                  客戶端調用EJB 的代碼片斷如下:

          1InitialContext ctx = new InitialContext(props);
          2Operation operation = (Operation) ctx.lookup("OperationBeanRemote#com.0735jb.ejb3.Operation");
          主站蜘蛛池模板: 夏津县| 东山县| 桂平市| 莆田市| 抚松县| 阿坝| 鄢陵县| 准格尔旗| 社旗县| 云阳县| 兴城市| 宿松县| 潮安县| 三门峡市| 乡城县| 松潘县| 公安县| 应城市| 滁州市| 峡江县| 平定县| 汉阴县| 蒙阴县| 安达市| 汉中市| 霞浦县| 北安市| 雷州市| 和硕县| 德安县| 望谟县| 阿拉尔市| 黎平县| 神池县| 林州市| 新津县| 蓬安县| 延安市| 布尔津县| 鲜城| 巴林右旗|