EJB在weblogic下遇到的Exception:Exception in javax.naming.NameNotFoundException: While trying to lookup 'ejb.com/genuitec/trader/ejb/T

时间:2023-01-19 21:40:40

     昨天看了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搞定,这个问题我也花了一天的时间了,呵呵还不错,还是靠个人去解决了.