我正在按照Redbook示例(《 IBM WebSphere Application Server Liberty Profile Guide for Developers,5.2.3使用远程EJB开发应用程序》)尝试在Liberty Profile服务器中调用远程EJB。
所有编译和部署都没有问题,但是在运行时会显示以下错误消息:
Error 404: javax.servlet.UnavailableException: SRVE0319E: For the [com.ibm.itso.ejbRemote.HelloRemoteServlet] servlet, com.ibm.itso.ejbRemote.HelloRemoteServlet servlet class was found, but a resource injection failure has occurred. CWNEN0030E: The server was unable to obtain an object instance for the java:comp/env/com.ibm.itso.ejbRemote.HelloRemoteServlet/helloRemoteBean reference. The exception message was: CWNEN1003E: The server was unable to find the java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote binding with the com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote type for the java:comp/env/com.ibm.itso.ejbRemote.HelloRemoteServlet/helloRemoteBean reference.
有什么问题?本地EJB示例很好用。
仅在客户端代码中指定远程EJB是否足够?或者它也可以位于其他位置(属性文件或server.xml)?
@EJB(lookup="java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote")
private HelloRemoteEJBRemote helloRemoteBean;
仅具有@Local批注的接口是绑定的,并显示在日志中。带有@Remote批注的界面未绑定,也未显示在日志中。
可能是什么错误?
答案 0 :(得分:0)
此procedure确实还有一些其他配置,最后指定是从您的应用程序配置ibm-*-bnd.xml:
<ejb-ref name="helloRemoteBean" binding-name="java:global/ITSORemote/ITSORemoteEJB/HelloRemoteEJB!com.ibm.itso.ejbRemote.view.HelloRemoteEJBRemote"/>
答案 1 :(得分:0)
如果未绑定robabilityCol
接口,则server.xml要么不包含@Remote
功能,要么缺少ORB的配置(即如果ejbRemote功能不能启动, ORB无法正常启动。例如,您的server.xml是否至少包含以下内容:
ejbRemote-3.2