client访问EJB3.0中的not binding

来源:互联网 发布:d3.tip.js 编辑:程序博客网 时间:2024/04/30 18:12

第一个成功的案例,我真的感动的要哭了,我现在记录下我成功的时间,在凌晨3点半,就在我实在是受不了要气馁、困的不行了的时候,我终于看到了我要看到的效果。

这个案例是我从sun公司下载的《jee5 tutorial》里面找出来的一个案例,叫converter,但是该案例只能在netBean下部署成功,服务器是sunglassfishv2.0,一直没办法在jboss下部署成功。我给这个案例添加了一个servlet,然后再jboss下开始部署。

我一直没有解决的问题就是:session beanConverter)一直没法绑定到JNDI。这里Converter是远程接口,它的beanConverterBean

我发现了这个问题后,首先是找了很多权威的资料去了解。当然首选的是《jee5 tutorial》,但是结果是我照着在ejb-jar.xml  添加了一段配置文件,如下:

<session>

   <ejb-name>ConverterBean</ejb-name>

   <remote>converter.ejb.Converter</remote>

   <ejb-class>converter.ejb.ConverterBean</ejb-class>

   <session-type>Stateless</session-type>

 </session>

但是得到的结果是,第一个错误,jboss服务器将该session bean识别成了ejb2.x 版本的session bean,既然是2.x版本下的ejb,那么就必须要有Home接口,但是我这里根本没有。第2个错误还是说Converter没有绑定到JNDI(注:这时候我的Servlet中寻找的是Converter/remote,而且在后面很长一段时间内都是这个)

然后我想既然是Jboss服务器,那么在Jboss官网上找的资料肯定都没错,然后我又跑到jboss官网,继续啃着那些英文,然后我得到的方法是

@RemoteBinding(jndiBinding=”Converter/remote”)

事实上里面的jndiBinding等于什么我一直都没搞清楚,但是这也没有任何帮助,我依然得到了那个错误。Notbinding,看到这个真令人心痛。后来我知道了的只有@Remote(Converter.class)才是正确的,其他全是错误的,而且在jboss.xml和ejb-jar.xml中都不能做配置,否则会掩盖注释的。

既然我没有成功,那么我就开始在jboss.xml中进行配置,我添加了下面的配置:

<?xml version="1.0" encoding="UTF-8"?>

<jboss>

    <enterprise-beans>

     <session>

        <ejb-name>ConverterBean</ejb-name>

        <jndi-name>converter.ejb.Converter</jndi-name>

     </session>

    </enterprise-beans>

    </jboss>

我个人感觉这样的配置应该是很奏效的,但是确确实实是没有用的。

尝试了各种方式都是失败后我开始在百度里面搜not binding其实之前就有搜过但是并没有得到什么有用的结果。在某篇文章中我看到,貌似servlet中的寻找的应该是(ConverterBean/remote),然后我就将这里修改了,然后再拿前面所说的几种情况下的配置进行测试,结果还是没有出来,这个时候已经到了凌晨2点多了,我真的熬不下去了。正要想放弃的哦时候再次找到了希望。我看到另一篇文章,它叫我去看JNDI View,如果绑定好了,在这里面就可以看到。当然我并不知道该怎么去看JNDI View,然后哦该文章又提供了一本书,这本书介绍了该怎么看JNDI view,这项功能其实Jboss本身就可以了,只要在jboss控制台里找,就可以找到,当我会这个之后,调试起来就方便的多了,因为之前的调试都要发布了应用了才能看到效果,由于个人的无知,导致每次调试我都得重启一下jboss,我的机器是1G内存,跑jboss和eclipse实在是很吃力,相当的慢。不过现在好了。然后我再文章介绍的书上终于找到了我的结果,也就是上面所说的,只有用@Remote(Converter.class)去注释ConverterBean才行,而且客户端必须用lookup(ConverterBean/remote),另外jboss.xml和ejb-jar.xml中不能像上面那样配置这才行。