昨天看了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
如果你上面的配置文件绝对没有问题的话,那就看下登陆weblogic的主页找到servers下myserver右击view jndi tree打开一个新页面如果部署成功的话应该就会有你部署的EJB项目,然后点击EJB树下就会有你远程接口,这时80%的可能就是我刚刚上面的说的xm件配置问题了.
在jndi树中没有看到你部署过的ejb项目,这时不用想应该就是没有部署成功了!想确定的话,你去看下你自己的domian域下的日志文件打开看有没有报异常我的异常大概如下:
<2008-5-20 上午时08分秒 CST>
这是我找了下不能部署的原因应该是: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搞定,这个问题我也花了一天的时间了,呵呵还不错,还是靠个人去解决了.