posts - 195, comments - 34, trackbacks - 0, articles - 1

          jndi全局注冊表和enc的基本概念 zz

          Posted on 2009-03-24 10:26 小強摩羯座 閱讀(427) 評論(0)  編輯  收藏 所屬分類: Java
          jndi全局注冊表和enc的基本概念
             通俗的將jndi就是對ejb容器中所有的資源和組件進行管理的花名冊,通過該服務(wù),可以很方便的找到希望使用的資源。當(dāng)組件被部署到服務(wù)器上后,該組件就會被自動注冊到花名冊上,以便用戶使用,如果組件被卸載,花名冊上的記錄就會自動消失。
              jndi中注冊的所有的資源和組件可以被服務(wù)器內(nèi)外的各種程序請求或者訪問,是一種全局性的資源!但是ejb中不同的組件通過全局性的jndi服務(wù)器形成依賴關(guān)系,則會給系統(tǒng)造成不穩(wěn)定的因素!因此就引入了enc(ejb組件的企業(yè)名稱上下文)的概念!通過她來實現(xiàn)不同組件之間的引用關(guān)系!?。?!
          在上一篇文章中寫到了通過標注的方式實現(xiàn)方向依賴注入!還以上篇為例:
          有接口:HelloWordRemote  HelloWordLocal ICal(Remote)
          而HelloWordBean實現(xiàn)了分別實現(xiàn)了他們
          另外又有了個遠程接口:
          @Remote
          public Interface MyService{
          public String helloWord();
          public int add(int a,int b);
          }
          一個類想實現(xiàn)這個接口并且在這個類中引用了...如下:
          @Stateless
          public class FacedServcie implements MyService{
          private HelloWordLocal myserv1;
          private ICal ical;
          .....
          ....
          }
          可以通過配置文件實現(xiàn)反向依賴注入:
          <ejb-jar
                 xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                     http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
                 version="3.0">
             <enterprise-beans>
                <session>
                   <ejb-name>FacedServcie</ejb-name>
                   <ejb-ref>
                     <ejb-ref-name>abc1</ejb-ref-name>
                     <ejb-ref-type>Session</ejb-ref-type>
                     <remote>com.ICal</remote>
                     <mapped-name>HelloWordBean1/remote</mapped-name>
                     <injection-target>
                        <injection-target-class>
                           xiaoxiao.FacedService
                        </injection-target-class>
                        <injection-target-name>
                           ical
                        </injection-target-name>
                     </injection-target>
                   </ejb-ref>
          .........(對于另一個組件的配置)
                </session>
             </enterprise-beans>
          </ejb-jar>
          還可以通過檢索的方式來實現(xiàn):
          @Stateless

          public class FacedServcie implements MyService{
          private HelloWordLocal myserv1;
          private ICal ical;
          public String helloWord(){
          try{
          InitialContext ctx=new InitalContext();
          ical=(ICal)ctx.lookup("java:comp/env/abc1");
          //其中java:comp/env是組件局部enc所有記錄的根路徑而abc1是在配置文件中注冊的名字!
          }catch(NamingException e){}
          if(ical!=null){
          return ical.helloWord();
          }else{
          return "error!";
          }
          }
          ....
          }
          配置文件如下:
          <ejb-jar
                 xmlns="http://java.sun.com/xml/ns/javaee"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                                     http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
                 version="3.0">
             <enterprise-beans>
                <session>
                   <ejb-name>FacedServcie</ejb-name>
                   <ejb-ref>
                     <ejb-ref-name>abc1</ejb-ref-name>
                     <ejb-ref-type>Session</ejb-ref-type>
                     <remote>com.ICal</remote>
                     <mapped-name>HelloWordBean1/remote</mapped-name>         
                   </ejb-ref>
          .........(對于另一個組件的配置)
                </session>
             </enterprise-beans>
          </ejb-jar>
          本人建議使用第一種反向依賴注入的方式!
          還有其他的一些注入:如持久化單元注入,資源型注入 數(shù)據(jù)源類型的注入。。。


          主站蜘蛛池模板: 财经| 上高县| 高雄县| 玛曲县| 龙川县| 南华县| 和政县| 宁武县| 游戏| 福州市| 泰兴市| 馆陶县| 临沧市| 南岸区| 星子县| 清原| 太康县| 静海县| 镇雄县| 宣城市| 沾益县| 大石桥市| 炎陵县| 盘山县| 阿尔山市| 秭归县| 广州市| 乐都县| 沙湾县| 枞阳县| 白山市| 南陵县| 余江县| 无为县| 友谊县| 广西| 三亚市| 永春县| 木里| 福州市| 莫力|