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

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

          Posted on 2009-03-24 10:26 小強(qiáng)摩羯座 閱讀(427) 評論(0)  編輯  收藏 所屬分類: Java
          jndi全局注冊表和enc的基本概念
             通俗的將jndi就是對ejb容器中所有的資源和組件進(jìn)行管理的花名冊,通過該服務(wù),可以很方便的找到希望使用的資源。當(dāng)組件被部署到服務(wù)器上后,該組件就會被自動注冊到花名冊上,以便用戶使用,如果組件被卸載,花名冊上的記錄就會自動消失。
              jndi中注冊的所有的資源和組件可以被服務(wù)器內(nèi)外的各種程序請求或者訪問,是一種全局性的資源!但是ejb中不同的組件通過全局性的jndi服務(wù)器形成依賴關(guān)系,則會給系統(tǒng)造成不穩(wěn)定的因素!因此就引入了enc(ejb組件的企業(yè)名稱上下文)的概念!通過她來實現(xiàn)不同組件之間的引用關(guān)系!!!!
          在上一篇文章中寫到了通過標(biāo)注的方式實現(xiàn)方向依賴注入!還以上篇為例:
          有接口:HelloWordRemote  HelloWordLocal ICal(Remote)
          而HelloWordBean實現(xiàn)了分別實現(xiàn)了他們
          另外又有了個遠(yuǎ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ù)源類型的注入。。。


          主站蜘蛛池模板: 山阳县| 南召县| 象州县| 石家庄市| 根河市| 永新县| 横山县| 电白县| 武鸣县| 都江堰市| 潞西市| 汨罗市| 社会| 海口市| 屏南县| 淳安县| 广宗县| 夹江县| 衢州市| 达州市| 盐山县| 峡江县| 巫山县| 股票| 厦门市| 兴安县| 汉中市| 西盟| 安平县| 策勒县| 红桥区| 德安县| 驻马店市| 唐山市| 淮北市| 河津市| 崇文区| 台江县| 罗田县| 闽清县| 青铜峡市|