我开发了非常简单的Hello World EJB(3.x),我在JBoss 7.1上部署了它。
我可以在独立的应用程序中成功调用此EJB。 当试图从servlet调用它时,我找到了EJB。
我将EJB封装在JAR中,将servlet封装在WAR中。 这似乎是servlet无法访问EJB的原因。 这可能是真的吗?
一旦我将两者兼容,EJB JAR和servlet WAR就会运行到它所使用的同一个EAR中。
如果没有使用EAR,我可以做出假设的行为吗?
也许有人可以对此有所了解。
我很确定我不需要在早期的JBoss版本上做这些事情。
答案 0 :(得分:2)
根据Java EE规范,部署的应用程序应该是隔离的,除非它们位于同一个EAR存档中。所以你看到的行为是正确的。
这与JBoss 4或JBoss 5默认配置不同,后者没有档案隔离(这本质上是一件坏事,但通常非常方便......)。
EAR包装有点烦人,但可以由IDE或Maven自动完成。
此外,对于Java EE v.6,您可以将带有本地接口的EJB组件打包到WAR归档中,这样可以简化部署。