You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Yuriy Zubarev <yu...@hotmail.com> on 2001/10/22 02:57:36 UTC

JNDI problem (Tomcat 4.0)

Hello everyone,

I was wondering if anyone had success with JNDI functionality
under Tomcat 4.0, because I'm desperate. The only thing I would
like to do is have a bean initialized and populated with values taken
from server.xml file and as respond I always get:

javax.naming.NamingException: Cannot create resource instance

Here is my configuration:

web.xml:

  <resource-env-ref>
    <resource-env-ref-name>
      bean/ConfirurationBean
    </resource-env-ref-name>
    <resource-env-ref-type>
      com.upsideweb.wis.web.ConfigurationBean
    </resource-env-ref-type>
  </resource-env-ref>

server.xml:

      <Host name="value" appBase="webapps" unpackWARs="true" debug="1">
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="value"  prefix="value" suffix=".txt"
                 pattern="combined" resolveHosts="true"/>
        <Logger className="org.apache.catalina.logger.FileLogger"
                directory="value"  prefix="value" suffix=".txt"
                timestamp="true"/>
        <Context path="" docBase="/value" debug="1"
                 reloadable="true">

          <Resource name="bean/ConfigurationBean"
type="com.ConfigurationBean"/>
          <ResourceParams name="bean/ConfirurationBean">
            <parameter>
              <name>bannerFileLocation</name>
              <value>banners.xml</value>
            </parameter>
          </ResourceParams>

        </Context>

      </Host>


In a custom tag I have a code like this:

      try {
        Context initialContext = new InitialContext();
        ConfigurationBean confBean =
          (ConfigurationBean)
initialContext.lookup("java:comp/env/bean/ConfigurationBean");
        fileLocation = confBean.getBannerFileLocation();
      } catch (NamingException e) {
        e.printStackTrace();
      }

In the second line of try block I always get an exception.
Propably I'm missing something but so far I have no clue
exactly what.

Thank you for your time.

Best of luck,
Yuriy Zubarev


Re: JNDI problem (Tomcat 4.0)

Posted by Remy Maucherat <rm...@home.com>.
> Hello everyone,
>
> I was wondering if anyone had success with JNDI functionality
> under Tomcat 4.0, because I'm desperate. The only thing I would
> like to do is have a bean initialized and populated with values taken
> from server.xml file and as respond I always get:
>
> javax.naming.NamingException: Cannot create resource instance
>
> Here is my configuration:
>
> web.xml:
>
>   <resource-env-ref>
>     <resource-env-ref-name>
>       bean/ConfirurationBean
>     </resource-env-ref-name>
>     <resource-env-ref-type>
>       com.upsideweb.wis.web.ConfigurationBean
>     </resource-env-ref-type>
>   </resource-env-ref>
>
> server.xml:
>
>       <Host name="value" appBase="webapps" unpackWARs="true" debug="1">
>         <Valve className="org.apache.catalina.valves.AccessLogValve"
>                  directory="value"  prefix="value" suffix=".txt"
>                  pattern="combined" resolveHosts="true"/>
>         <Logger className="org.apache.catalina.logger.FileLogger"
>                 directory="value"  prefix="value" suffix=".txt"
>                 timestamp="true"/>
>         <Context path="" docBase="/value" debug="1"
>                  reloadable="true">
>
>           <Resource name="bean/ConfigurationBean"
> type="com.ConfigurationBean"/>
>           <ResourceParams name="bean/ConfirurationBean">
>             <parameter>
>               <name>bannerFileLocation</name>
>               <value>banners.xml</value>
>             </parameter>
>           </ResourceParams>
>
>         </Context>
>
>       </Host>
>
>
> In a custom tag I have a code like this:
>
>       try {
>         Context initialContext = new InitialContext();
>         ConfigurationBean confBean =
>           (ConfigurationBean)
> initialContext.lookup("java:comp/env/bean/ConfigurationBean");
>         fileLocation = confBean.getBannerFileLocation();
>       } catch (NamingException e) {
>         e.printStackTrace();
>       }
>
> In the second line of try block I always get an exception.
> Propably I'm missing something but so far I have no clue
> exactly what.

Actually, it doesn't work like that, as there's one additional layer in the
JNDI processing.

Here, the ResourceParams mean that when the JNDI object factory (read the
JNDI doc to learn what that is) is invoked, the Reference object passed to
it will have a bannerFileLocation "parameter".

It would be very appropriate in your case to use the BeanFactory. More
details in the JNDI resources HOWTO:
http://jakarta.apache.org/tomcat/tomcat-4.0-doc/jndi-resources-howto.html

Remy