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 笨笨 阅读(173) 评论(0)  编辑  收藏 所属分类: J2EEALL

只有注册用户登录后才能发表评论。


网站导航: