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 笨笨 閱讀(183) 評論(0)  編輯  收藏 所屬分類: J2EEALL
          主站蜘蛛池模板: 天柱县| 淳安县| 靖江市| 且末县| 恩平市| 栾城县| 泸州市| 房产| 始兴县| 农安县| 金塔县| 临江市| 柳河县| 朝阳市| 石台县| 饶河县| 伊金霍洛旗| 应城市| 嵊泗县| 东光县| 华亭县| 大竹县| 衢州市| 乌鲁木齐市| 镇雄县| 崇阳县| 大厂| 柳江县| 屯留县| 古蔺县| 稷山县| 蓬溪县| 清苑县| 慈利县| 呼和浩特市| 宁远县| 南投县| 湾仔区| 安义县| 鄂州市| 婺源县|