城市獵人

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

          導航

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(3)

          文章分類(90)

          文章檔案(90)

          收藏夾(12)

          搜索

          •  

          最新評論

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

          Posted on 2008-07-11 23:27 sailor 閱讀(761) 評論(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");
          主站蜘蛛池模板: 芦山县| 买车| 博爱县| 鹤峰县| 海门市| 江华| 济南市| 富裕县| 望谟县| 嘉峪关市| 庆安县| 扎囊县| 麻栗坡县| 南华县| 个旧市| 油尖旺区| 于都县| 乡城县| 安乡县| 黄石市| 上饶市| 和平区| 安康市| 乡城县| 农安县| 饶阳县| 东乌| 太和县| 高平市| 天峻县| 兰西县| 连州市| 尤溪县| 台山市| 张掖市| 根河市| 湘潭市| 鞍山市| 桃源县| 三台县| 德令哈市|