kapok

          垃圾桶,嘿嘿,我藏的這么深你們還能找到啊,真牛!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            455 隨筆 :: 0 文章 :: 76 評論 :: 0 Trackbacks
          http://www.javaworld.com.tw/jute/post/view?bid=7&id=66468&sty=1&tpg=1&age=0

          這裡想請教一個關於EJB的問題,底下的程式碼是client端的程式碼,
          配合一個經過j2ee的deploytool deploy出來的jar檔來跑(這個jar檔包含
          RemoteHome,RemoteInterface,RemoteObject的class檔),結果在自己
          的電腦上跑沒問題,可是我要到其他電腦上跑的話,程式只是告訴
          電腦查詢名稱,並沒有說明要到哪裡去查詢,我應該如何修改程式
          碼,才能到別的電腦上執行呢?(session是stateless的)


          import javax.naming.InitialContext;

          public class Client
          {
          public static void main(String[] args)
          {
          try{
          javax.naming.Context initContext=new javax.naming.InitialContext();
          Object obj=initContext.lookup("HelloWorld"); //遠程查詢
          RemoteHome home=(RemoteHome)javax.rmi.PortableRemoteObject.narrow(obj,RemoteHome.class);
          RemoteInterface remote=home.create();
          String receiveFromRemote=remote.message("Hello,Remote Object!"); //遠程方法調用
          System.out.println("Client Received From Remote Object: \""+receiveFromRemote+"\"");
          }
          catch(Exception e)
          {
          e.printStackTrace();
          }
          }
          }
















          在取得Context時要指定, 像這樣:

              Hashtable props = new Hashtable();

              //for JBoss
              props.put(
                InitialContext.INITIAL_CONTEXT_FACTORY,
                "org.jnp.interfaces.NamingContextFactory");
              props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099");

              InitialContext initialContext = new InitialContext(props);







          不好意思,我不太明白

          props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");


          這一段,還有,如果說這是JBOSS專用的,那麼每當轉換到不同的機器上執行的話不是都得用JBOSS嗎?我用的是j2ee的deploytool,
          又該怎麼設定呢???





          環境的確應當依據不同的AP Server來做設定.嗯~~~我沒用過deploytool所以我不太清楚該如何設定, 我都是自己寫死在程式中處理, 若你要做活的環境設定, 只要將環境寫在properties檔中, 然後去讀它就可以了, 或者寫一個jndi.properties放在Classpath中也可以(我也沒用過).

          目前我們的系統是利用xml檔來做設定, 然後程式中去讀這個xml檔中的環境設定, 所以轉換到不同的機器上時, 仍不需要動到原本的source code.

          下面是Oracle與WebLogic的環境, 各個AP Server都不太一樣, 應當要查document:

              //for WebLogic    
          props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
          props.put(InitialContext.PROVIDER_URL, "t3://localhost:7001");

              //for Oracle
              props.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
          props.put(Context.SECURITY_PRINCIPAL, "admin");
          props.put(Context.SECURITY_CREDENTIALS, "welcome");
          props.put(Context.PROVIDER_URL, "ormi://localhost:23891/current-workspace-app");



          隨手可得的javadoc上對javax.naming.Context及javax.naming.InitialContext的解釋還算清楚


          posted on 2005-03-12 16:22 笨笨 閱讀(182) 評論(0)  編輯  收藏 所屬分類: J2EEALL
          主站蜘蛛池模板: 永和县| 永州市| 泰和县| 清丰县| 礼泉县| 仪陇县| 阳原县| 田阳县| 安康市| 台安县| 衢州市| 奉化市| 兴隆县| 莎车县| 兰坪| 宾川县| 崇左市| 泌阳县| 河南省| 东宁县| 临夏县| 凯里市| 樟树市| 温泉县| 通许县| 黄浦区| 涞水县| 尚义县| 招远市| 乌鲁木齐县| 宜兰市| 台州市| 秭归县| 广安市| 阜城县| 运城市| 平泉县| 凤城市| 呼玛县| 克东县| 抚顺市|