中间件(EJB)学习路之一――步履维艰

先说需要用的的开发工具:

Apache-ant-1.8;

jboss4.0.4(server);

jboss-ejb3.0-RC9

1、开发版本不对带来各种困扰。

首先是jboss5.0,原以为高版本会向下兼容,而且可以适用JDK1.6,所以没怎么在意,结果在ant编译jboss server的时候怎么也编译不过。当遇到抛出的错(jboss_home/server/all/lib/jboss.jar找不到)的时候并不知是版本的问题,于是各种百度、google都没有任何回应。有种叫百度不应,喊google不灵的失落。终于脑袋开窍了,换了jboss4.2.3,因为4.2以下的版本不兼容JDK1.6。于是错误继续,不过是换了一个错误信息(某个xml文件不存在)。无奈之下又换了jboss4.0.0版本,终于,ant编译通过了。后来在写代码做实例测试的时候总是报错,终于还是换成了jboss4.0.4版本。

         其次是jboss-ejb3.0-RC9,原以为这个东西差不多都是RC9就行了吧。于是在网上找到了jboss-EJB-3.0_RC9_Patch_1版本并且通过它ant编译jboss各种server都通过了,所以觉得没什么问题。直到写代码做实例测试的时候总是报错,换成jboss-EJB-3.0_RC9-FD之后问题解决。

         第三个是JDK的问题,由于我开始安装的是1.6,而jboss4.0只能兼容JDK1.5,开始报了各种错误的时候并不知道是什么问题,各种百度和google都没有任何结果,最终仔细观察错误信息堆栈,提示说***JDK1.5***无法加载,突然明白了是JDK的问题,于是安装JDK1.5,经过一番折腾,总算是问题搞定了。

(注:以上三个版本问题的最后一步都是在做实例的时候才出现并解决的,三个最终问题要都解决掉例子才能运行出来。)

第四个是JBossIDE。由于是JBossIDE和eclipse集成,而对于怎么集成网上有很多的资料,eclipse我用的是3.7版本的,原以为这没什么问题了吧,但是当集成一步一步的走下来以后并不能达到想要的结果,也不能开发EJB3.0 project。虽然没有得到最终的确定,还是预测到这个和eclipse的版本还是有关系滴。3.7的版本有点高了。于是还是乖乖的使用JBossIDE了,不再做集成。

         这几个版本问题,给我带来了很多的麻烦,走了很远的路,绕来绕去绕不出去,各种寻找资料各种下载、各种更改环境变量、重启计算机等。经过各种折腾以后总算是让第一个例子运行成功了。当然这其中的学习体会收获也是巨大的。经过这次折腾以后不再惧怕各种错误了。而且得到一个结论:如果控制台打印出了错误堆栈,加上自己的异常问题的常识积累,大部分的问题可以从堆栈中得到,从而达到一针见血、药到病除的效果。当然这个还是需要经验积累滴。

 

下面附一些遇到的问题以及解决问题查找的主要的网站:

使用eclipse3.2.1+jboss+ejb3.0开发:

http://hi.baidu.com/297913156/blog/item/a5e3acfe6679f554d6887dd8.html

eclipse集成jbosside

http://download.csdn.net/download/zfk_j2ee/269856

 

jboss4下载:

http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.0.0/jboss-4.0.0.zip/download

 

http://sourceforge.net/projects/jboss/files/JBoss/JBoss-4.2.3.GA/

 

jbossIDE下载:

http://sourceforge.net/projects/jboss/files/JBossIDE/JBossIDE%202.0.0.Beta2/

 

jboss-ejb-3.0_Embeddable_ALPHA_9.zip下载:

http://sourceforge.net/projects/jboss/files/EJB%203.0/JBoss%20EJB%203.0%20Preview%20RC9/

 

问题1、Caused by:java.lang.NoSuchMethodError:org.jboss.ejb3.EJB3Deployer.setSuffixes([Ljava/lang/String;)V

   at org.jboss.ejb3.EJB3Deployer.<init>(EJB3Deployer.java:88)

 

15:01:08,454 ERROR[MainDeployer] could not create deployment:file:/E:/javaprogram/jboss-4.0.0/server/all/deploy/jboss-aop-jdk50.deployer/

org.jboss.deployment.DeploymentException: - nested throwable:(java.lang.reflect.UndeclaredThrowableException)

 

Caused by: javax.management.InstanceNotFoundException:jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3 is notregistered.

 

 

Caused by: java.lang.ClassNotFoundException: No ClassLoaders found for:org.jboss.ejb3.cache.tree.PassivationTreeCache

 解决:JDK版本问题,把JDK1.6换成JDK1.5就好了。

 

问题2、java.io.InvalidClassException: org.jnp.interfaces.MarshalledValuePair; local classincompatible: stream classdesc serialVersionUID = -3403843515711139134, localclass serialVersionUID = -6485622724173581497:

http://blog.sina.com.cn/s/blog_4b6de6bb010007qz.html

 

解决问题:

http://www.docin.com/p-142948291.html

原因是在jboss服务器中(all)部署了两个项目,都有同一个实体类,然后两个项目的序列号不一致,在同一个jvm中,导致反序列化出问题,把序列号改为一致的就没问题啦。

你可能感兴趣的:(ejb)