未找到EJB数据源JNDI名称(RemoteException)

时间:2013-11-20 17:16:01

标签: ejb datasource jndi

找不到数据源JNDI名称,它会抛出RemoteException。 JNDI-name在部署工具中指定,它位于部署描述符/ xml-file:

<resource-ref>               
<res-ref-name>jdbc/TargetDB</res-ref-name>                
<res-type>javax.sql.DataSource</res-type>                
<res-auth>Container</res-auth>                
<res-sharing-scope>Shareable</res-sharing-scope>            
</resource-ref>

尝试查找JNDI名称的代码:

  InitialContext jndiContext = new InitialContext();
  DataSource ds = (DataSource)jndiContext.lookup("java:comp/env/jdbc/TargetDB"); 
  return ds.getConnection(); 

执行后的堆栈跟踪:

javax.servlet.ServletException: RemoteException occurred in server thread; nested exception is: 
    java.rmi.RemoteException: No object bound to name java:comp/env/jdbc/TargetDB
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:830)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:763)
    org.apache.jsp.GetSports_jsp._jspService(GetSports_jsp.java:94)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:297)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:247)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
    org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)
root cause

java.lang.Exception: RemoteException occurred in server thread; nested exception is: 
    java.rmi.RemoteException: No object bound to name java:comp/env/jdbc/TargetDB
    org.apache.jsp.GetSports_jsp._jspService(GetSports_jsp.java:77)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:297)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:247)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:585)
    org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
    java.security.AccessController.doPrivileged(Native Method)
    javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
    org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
    org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)

出了什么问题?

0 个答案:

没有答案