3 Replies Latest reply on Oct 19, 2007 3:27 PM by waynebaylor

    javax.naming.NameNotFoundException whe doing jndi lookup

    patwary_shiva

      I have written a small program to do jndi lookup .I call this program form struts action class.This class is in jar file under the server/lib directory of jboss.The strut action class is in war under the deploy directory.It throws javax.naming.NameNotFoundException: com.abc.DistributedScheduler not bound exception.Below is the code Not much logic in this program.It works under weblogic but throws error in jboss..

      // Standard Java classes
      import java.util.Hashtable;
      import javax.naming.Context;
      import javax.naming.InitialContext;
      import javax.naming.NamingException;

      // Third-party classes
      import org.apache.commons.logging.Log;
      import org.apache.commons.logging.LogFactory;

      /**
      * JNDISchedulerResolver
      *
      *
      */

      public class JndiSchedulerResolver
      {
      // Public data ////////////////////////////////////////////////////////

      // Public methods /////////////////////////////////////////////////////

      public JndiSchedulerResolver()
      {
      Hashtable props = new Hashtable();
      // Turn on binding replication for clustering
      try
      {
      WebServerFactory.getSingleton().addJNDIProperties(props);
      }
      catch (Exception e)
      {
      }

      try
      {
      this.context = new InitialContext(props);
      }
      catch (NamingException e)
      {
      logger.error("An error occurred", e);
      }
      }

      public void setLocalScheduler(Scheduler scheduler)
      throws SchedulerException
      {
      bindScheduler(LOCAL_SCHEDULER_JNDI_NAME, scheduler);
      }

      public Scheduler getLocalScheduler()
      throws SchedulerException
      {
      return lookupScheduler(LOCAL_SCHEDULER_JNDI_NAME);
      }

      public void setDistributedScheduler(Scheduler scheduler)
      throws SchedulerException
      {
      bindScheduler(DISTRIBUTED_SCHEDULER_JNDI_NAME, scheduler);
      }

      public Scheduler getDistributedScheduler()
      throws SchedulerException
      {
      return lookupScheduler(DISTRIBUTED_SCHEDULER_JNDI_NAME);
      }

      // Protected methods //////////////////////////////////////////////////

      // Private methods ////////////////////////////////////////////////////

      private void bindScheduler(String jndiName, Scheduler scheduler)
      throws SchedulerException
      {
      try
      {
      this.context.bind(jndiName, scheduler);
      }
      catch (NamingException e)
      {
      throw new SchedulerException(e);
      }
      }

      private Scheduler lookupScheduler(String jndiName)
      throws SchedulerException
      {
      try
      {
      return (Scheduler) this.context.lookup(jndiName);
      }
      catch (NamingException e)
      {
      throw new SchedulerException(e);
      }
      }

      // Private data ///////////////////////////////////////////////////////
      private Context context;

      private static final String LOCAL_SCHEDULER_JNDI_NAME =
      "com.abc.LocalScheduler";
      private static final String DISTRIBUTED_SCHEDULER_JNDI_NAME =
      "com.abc.DistributedScheduler";

      private static final Log logger =
      LogFactory.getLog(JndiSchedulerResolver.class);

      }

      Error:

      com.abc.common.scheduler.SchedulerException: javax.naming.NameNotFoundException: com.abc.DistributedScheduler not bound
      at com.abc.common.scheduler.JndiSchedulerResolver.lookupScheduler(JndiSchedulerResolver.java:108)
      at com.abc.common.scheduler.JndiSchedulerResolver.getDistributedScheduler(JndiSchedulerResolver.java:79)
      at com.abc.drm.webapp.test.ListScheduledTasksAction.doExecute(ListScheduledTasksAction.java:56)
      at com.abc.common.webapp.struts.BasicAction.execute(BasicAction.java:180)
      at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
      at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
      at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
      at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.abc.drm.servlet.CheckUriAccessFilter.doFilter(CheckUriAccessFilter.java:120)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at com.abc.drm.servlet.InitializationFilter.doFilter(InitializationFilter.java:135)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
      at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
      at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.naming.NameNotFoundException: com.abc.DistributedScheduler not bound
      at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
      at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
      at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
      at org.jnp.server.NamingServer.lookup(NamingServer.java:296)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:625)
      at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:587)
      at javax.naming.InitialContext.lookup(InitialContext.java:351)
      at com.abc.common.scheduler.JndiSchedulerResolver.lookupScheduler(JndiSchedulerResolver.java:104)