EJB在weblogic下遇到的Exception:Exception in javax.naming.NameNotFoundException: While trying to lookup 'ejb.com/genuitec/trader/ejb/T
昨天看了EJB 中的一個小小的部分sessionbean,書上的一大堆理論知識看的我雲裡霧裡的,如:遠端主介面,遠端介面,遠端實現類,ejb-jar.xml,weblogic-ejb-jar.xml.看了幾遍感覺自己也有點似懂非懂的感覺了,決定自己上機去實踐一下.
軟體環境:MyEclipse+weblogic8.1. 用xdoclet自動生成的方式來做了,具體的怎麼生成如果有需要的話,在進行說明!
做的時候還蠻順利的感覺不錯,然後在把EJB專案部署到weblogic 上去,啟動進行客戶段的一個測試程式的執行時,遇到了以下異常(貼出來了部分,不過我覺得基本看上面幾句主要的異常資訊就可以了,因為下面的一些提示都是些底層的內容,我想作為剛學習的初學者一般也不會先去看底層的程式碼吧):
Exception in thread "main" javax.naming.NameNotFoundException: While trying to lookup 'ejb.com/genuitec/trader/ejb/TraderHome' didn't find subcontext 'ejb' Resolved [Root exception is javax.naming.NameNotFoundException: While trying to lookup 'ejb.com/genuitec/trader/ejb/TraderHome' didn't find subcontext 'ejb' Resolved ]; remaining name 'ejb/com/genuitec/trader/ejb/TraderHome'at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
由於剛開始做,看到了這個異常感覺很鬱悶,因為我完全是按照書上做的. 然後沒辦法去baidu或google下吧,看到網上關於這方面的內容還很多,不過我看了還真沒找到一個解決的方法.大部分都是說檢查下ejb-har.xml與weblogic-ejb-jar.xml(尤其是這個檔案裡面有個配置是用來伺服器端與客戶端進行通訊的url <jndi-name>ejb/Hello</jndi-name>,如果確保這個肯定與你要進行lookup的值一致的話,那看以下的解決方法)
如果你上面的配置檔案絕對沒有問題的話,那就看下登陸weblogic的主頁找到servers下myserver右擊view jndi tree開啟一個新頁面如果部署成功的話應該就會有你部署的EJB專案,然後點選EJB樹下就會有你遠端介面,這時80%的可能就是我剛剛上面的說的xm件配置問題了.
在jndi樹中沒有看到你部署過的ejb專案,這時不用想應該就是沒有部署成功了!想確定的話,你去看下你自己的domian域下的日誌檔案開啟看有沒有報異常我的異常大概如下:
<2008-5-20 上午時08分秒 CST> <Warning> <Deployer> <GAO> <myserver> <ExecuteThread: '4' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <BEA-149004> <Failures were detected while initiating Deploy task for application _appsdir_TestEJB_jar.> ####<2008-5-20 上午10時08分26秒 CST>
<Error> <Deployer> <GAO> <myserver> <ExecuteThread: '4' for queue: 'weblogic.kernel.System'> <<WLS Kernel>> <> <BEA-149201>
<Failed to complete the deployment task with ID 0 for the application _appsdir_TestEJB_jar.java.lang.Throwable:
這是我找了下不能部署的原因應該是:jdk版本的問題,weblogic8.1它自帶了一個jdk1.4,建議部署時你的EJB專案也用與weblogic 一樣版本的jdk,為什麼呢?
因為在我之前用的是jdk1.5的,無法部署到weblogic 上,找了很久才知道原來是這個問題(因為當初的精力都到檢查配置檔案上了).
大概錯誤原因就是這幾方面.
我用的是eclipse所以一般在建專案時,他會預設的jre是1.5版本的,如果你與我用的工具是一樣的話,你可以在專案上右擊屬性找到java compiler 旁邊選中,看到一個列表選擇complier compliance level 預設是5.0,你選為1.4就可以了,這時你可以重新部署專案,運行了!~~
OK搞定,這個問題我也花了一天的時間了,呵呵還不錯,還是靠個人去解決了.