关于JBoss和EJB3.0的具体知识,我们在后面的总结性博客中介绍,本篇博客主要是对今天自己的成果做一个总结,为我悲惨的一天做一个总结。
这个该死的问题折腾了我一天呀!!
最开始自己下载的是jboss4.0.2,所以在MyEclipse中集成的是JBoss4.x:
根据视频中的步骤一步一步做下来,却怎么也不能运行成功,启动Jboss,部署EJB之后,出现了FirstEjbBean not found,因为在编写EJB的客户端程序时,我们用到了JNDI(对于具体JNDI是什么,后面的博客详细讲解),所以在用JNDI查找时,总是找不到Bean,百度好多种解决方法,包括修改服务配置文件中的信息
(http://hi.baidu.com/ixlxin/item/40976018f6efdb6b3f87ce8d)
在一篇博客中提到了在JBoss中查看某个资源是否绑定,于是我按照步骤进行查看,果真我的资源没有绑定。
(http://blog.csdn.net/jnqqls/article/details/11368681)
(里面确实没有我的FirstEjbBean。)
百度有的人还说可能是jndi.properties中的文件内容写的不正确,或者访问接口已经被其他的安装程序占用了,所以想到了修改启动JBoss的端口号,还是未能成功
因为在百度过程中有的人也提到了有关Jboss版本和JDK版本的问题,对于这些东西,我实在不懂,也不知道怎么下手,无奈只好继续看视频了,但是问题终究需要解决,在后面的实例中也总是因为这一个问题不能顺利进行,所以还需要奋斗呀,在启动JBoss的过程中我发现了我在启动过程中出现的日志信息和视频中的不一样,在JndiName中显示的是DLQ,于是我尝试把我代码中的有关使用到JNDI查找部分用的的名字全部由Queue/myqueue换成了Queue/DLQ,由此终于看到了一丝的曙光,竟然运行出了结果,后来继续观察才发现,我的结果中还缺少点东西,所以虽然结果是对的,但是中间的过程还不正确,于是从JNDIName下手,又开始了百度,阅读了很多人的博客逐渐的了解了这个错误到底是由什么原因导致的。原来从一开始我就错了,我的JBoss根本就没有启动成功,于是开始了百度查找JBoss未能成功启动的原因和解决方法,最终还是归结到了Jboss版本和JDK版本的问题上以及环境变量的配置上面,于是意识到这个问题不能逃避了,我开始重新下载JBoss,因为在百度过程中看到了一篇博客中写到了JBoss4支持的是JDK1.5,而我电脑中的JDK是1.7的,所以这次选择了JBoss5.0,配合JDK的环境是JDK1.7,应该不会出现类似的问题了。重新配置环境变量,
JAVA_HOME:D:\java\jdk1.7.0
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
Path:%JAVA_HOME%\bin
由于我的电脑中有好几个JDK版本,对程序的运行也是有影响的,于是我选择卸载其他版本的JDK,确保电脑上的JDK环境是JDK1.7,重新集成MyEclipse+JBoss,但是还没有运行成功,似乎又出现了新的问题,当然这些问题是我没有重新打包EJB3.0_CLIENT所有相关jar包加到项目中,很容易解决,重新打包之后部署,在启动JBoss时,出现了和之前类似的问题,每次启动虽然还是无法绑定的问题,但是这些没有绑定的东西我却发现了规律,都是我在客户端程序中编写的时候用到的JNDI名称,终归一点还是JNDI查找的问题,而在此时的JNDI查找名字中竟然是null,这个非常不理解,于是继续百度,在jboss-5.0.1.GA\server\default\deploy中添加了一个xml文件:XXX-server.xml
<?xml version="1.0" encoding="UTF-8" ?>
<server>
<mbean code="org.jboss.mq.server.jmx.Queue"
name="jboss.org.destination:server=Queue,name=myqueue" >
<attribute name="JNDIName" >queue/myqueue </attribute>
<depends optional-attribute-name = "DestinationManager" >
jboss.mq:service=DestinationManager
</depends>
</mbean>
<mbean code="org.jboss.mq.server.jmx.Topic"
name="jboss.org.destination:server=Topic,name=mytopic" >
<attribute name="JNDIName" >topic/mytopic </attribute>
<depends optional-attribute-name = "DestinationManager" >
jboss.mq:service=DestinationManager
</depends>
</mbean>
</server>
但在此启动JBoss后发现神奇出现了:
此时的jndi中终于出现了想要的结果,于是运行客户端,终于成功了!
(呃呃!!为了和张三说句“你好”,我容易么!)
虽然这次是添加了一个xxx.server.xml文件,但是文件中的内容,在之前解决的时候我也在相关的xml文件中添加过相应的配置,但是没有运行成功,目前还不太清楚具体原因。