我有一个部署在两个 EAR 中的 Java Web 应用程序——一个用于 UI 层(包含 a WAR module
),一个用于业务层(包含一个EJB module
)。两个层都部署到 WebSphere Application Server 7。这些层通过 EJB 3.0 无状态会话 bean 连接。通过 JNDI 查找 bean。
这两个应用程序目前在同一个 WAS 服务器上,但将来会部署到不同的服务器上。当我尝试查找 EJB 时,出现错误。
尝试调试查找错误时,我在 WAS 服务器上运行了 JNDI 命名空间转储:
./dumpNameSpace.bat -host localhost -port 10031 > namespace.log
我的每个 EJB 都列出了以下错误:
(top)/nodes/U4752879Node01/servers/server1/ejb/au/gov/immi/emed/ejb/CrtEJB
au.gov.immi.emed.ejb.CrtEJB
ERROR: Received the following naming exception: com.ibm.ws.naming.util.InvalidObjectException: The IOR associated with the binding "CrtEJB" relative to the context "U4752879Node01Cell/nodes/U4752879Node01/servers/server1/ejb/au/gov/immi/emed/ejb" could not be resolved. If the binding is for an application object, make sure the application has started successfully. IOR: IOR:<removed>
这是 EJB 远程接口:
@Remote
public interface CrtEJB extends EMedEJB, EMedCrtService
{
}
以及 bean 实现:
@Stateless(name = "CrtEJB")
@Remote(value = CrtEJB.class)
public class CrtEJBBean extends AbstractEMedEJBBean implements CrtEJB
{
...
}
以及 ibm-ejb-jar-bnd.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd">
<session name="CrtEJB" simple-binding-name="ejb/au/gov/immi/emed/ejb/CrtEJB" />
...
</ejb-jar-bnd>
是什么导致错误发生?ibm-ejb-jar-bnd.xml
没有我不需要的文件,错误是一样的。这个错误是导致 UI 查找失败的原因,还是应该正常工作?(在这种情况下,我将发布 UI 错误)。