今天又溫習EJB3。用Netbeans作了一遍。發現竟然運行不了。靠。難道寫了幾百遍的東西竟然寫錯了?檢查了一遍,好像沒什么錯。主要所在Client端lookup的時候能找到jndi資源。但是說我類型轉換錯誤。查資料。看以前的代碼。沒發現什么異常。代碼如下:
不過還是有問題。不知道如果不定義的話默認是什么。為什么默認的不行。不得而知。沒有幫助文檔。各位有資料的話請告訴我阿。

文章來源:http://www.aygfsteel.com/phyeas/archive/2008/09/04/227031.html
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");
//..執行調用
不過還是有問題。不知道如果不定義的話默認是什么。為什么默認的不行。不得而知。沒有幫助文檔。各位有資料的話請告訴我阿。
文章來源:http://www.aygfsteel.com/phyeas/archive/2008/09/04/227031.html