4 Replies Latest reply on Oct 9, 2002 5:42 AM by jules

    jboss-web.xml JNDI mappings don't work

    mr_dronski

      While refactoring my application I came up with a problem.

      The snippet of web.xml:

      <!-- Declare EJB refs to map them later in container-specific descriptor file -->
      <ejb-ref>
      <ejb-ref-name>com.dronski.stock.ejb.SessionFacadeHome</ejb-ref-name>
      <ejb-ref-type>Session</ejb-ref-type>
      com.dronski.stock.ejb.SessionFacadeHome
      com.dronski.stock.ejb.SessionFacade
      </ejb-ref>

      jboss-web.xml from war's WEB-INF dir:

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE jboss-web PUBLIC
      "-//JBoss//DTD Web Application 2.3//EN"
      "http://www.jboss.org/j2ee/dtd/jboss-web_3_0.dtd">

      <jboss-web>
      <ejb-ref>
      <ejb-ref-name>com.dronski.stock.ejb.SessionFacadeHome</ejb-ref-name>
      <jndi-name>ejb/stock/SessionFacade</jndi-name>
      </ejb-ref>
      </jboss-web>

      ejb-ref-name tag uses a FQ class name, because the discovery is made dynamically through an EJBHomeFactory.

      Now, no matter what combination of ejb-ref-name names, jndi names, omitting jboss-web.xml, specifying it, specifying ejb-link (including external ref), the mapping doesn't show up in JNDIView.

      I've also tried both pack ear file, and deploy it unpacked (retaining the same structure). Versions: JBoss 3.0 Final + Tomcat 4.0.3

      I'm getting either a validation error at deployment time, or it deploys fine, but gives NameNotFoundException at runtime.

      Note: the application was fully functional, so the problem is not in ejbs. There's no option of trying Jetty, for it doesn't work correctly with Struts framework.

      Looks like a sort of a bug to me. Or is there a bug in my head? ;)