由于访问远程会话bean时会消耗较大的资源,在能使用本地会话bean时,则尽量使用本地会话bean,创建Bean时,默认也是本地的。
今天在测试访问本地Bean时发现了这个错误:
Invalid (i.e. remote) invocation of local interface (null container)
简单就说,就是无效访问本地接口。
为什么无效呢。
因为访问本地接口的前提是,你的本地bean和你访问的客户端程序 要运行在一个jvm里。
就jboss来讲,可以理解为,你的客户端和ejb要部署在相同的jboss里,这样才能实现本地会话bean的访问。
如果访就问本地的Bean,那么你的jndi的参数就不用设置了,直接
InitialContext cx=new InitialContext();
这样的话他就会直接去本地去获取参数,而不用你去设置。
我这里为了实现ejb和ejbclient在同一个jvm下运行,所以决定创建一个web项目,在jsp里直接访问本地Bean.
这时候需要调用HelloWorld这个接口去接收得到的Ejb实现类。
大家发现,这里jsp报错了,因为我这里没有引入HelloWorld这个类。
当然这里也不需要引入,因为运行时,当你找不到这个类时,会从你的ejb里面去找。
所以没有必要引入。
在一开始的时候,为了消除这个错误,我把HelloWorld引入,反而出现了一些莫名其妙的问题,所以这里建议还是不要引入了
代码写好好打成war包部署到jboss里,访问~~~
输出hello world,成功调用