InitialContext ctx = new InitialContext();
LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..執行調用
Localnterface是隨便起的。代表本地接口。根據EJB3教程上說的。在同一JVM上調用,創建InitialContext時可不用傳如Properties。檢查了N遍也不知道哪錯。于是。很無奈地復制原先的測試程序過來。竟然成功了???。程序如下:LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..執行調用
Properties prop=new Properties();
prop.put(Context.PROVIDER_URL,"localhost");
InitialContext ctx = new InitialContext(prop);
LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..執行調用
這讓我想到了傳于不傳Properties的區別。原來如果不傳Properties。它會去讀取服務器上一個叫jndi.properties的文件。該文件默認所沒有java.naming.provider.url的定義的。于是我在該文件內定義了java.naming.provider.url=localhost。第一段代碼可以運行了。prop.put(Context.PROVIDER_URL,"localhost");
InitialContext ctx = new InitialContext(prop);
LocalInterface bean=(LocalInterface)ctx.lookup("bean/local");
//..執行調用
不過還是有問題。不知道如果不定義的話默認是什么。為什么默認的不行。不得而知。沒有幫助文檔。各位有資料的話請告訴我阿。