Code Sample that fails with exception(I am invoking reload() from jconsole ):
class MBeanImpl implements MBeanInterface{ public MBeanImpl{ // code to register this bean. } @Override public void reload() { DBManager.loadFromDB(); } } class DBManager{ public static void loadFromDB(){ InitialContext initContext = new InitialContext(); // here it fails with exception avax.naming.NoInitialContextException: Cannot instantiate class: org.apache.naming.java.javaURLContextFactory [Root // exception is java.lang.ClassNotFoundException: org.apache.naming.java.javaURLContextFactory] Context context = (Context) initContext.lookup("java:comp/env"); logger.info("context found " + context); BasicDataSource ds = (BasicDataSource) context.lookup("jdbc/" + dataSourceName); ............... ............... } } --------------------------------------------- Code Sample that works: class MBeanImpl implements MBeanInterface{ private Context envContext = null; public MBeanImpl{ InitialContext initialContext = new InitialContext(); envContext = (Context) initialContext.lookup("java:/comp/env"); // code to register this bean. } @Override public void reload() { DBManager.loadFromDB(envContext); // passed context object obtained in constructor } } class DBManager{ public static void loadFromDB(Context context){ BasicDataSource ds = (BasicDataSource) context.lookup("jdbc/" + dataSourceName); // works fine as I am not creating new InitialContext here. ............... ............... } } On Tue, Dec 20, 2011 at 4:59 PM, S B <sbl...@gmail.com> wrote: > Hi, > I am using : > > Server version: Apache Tomcat/6.0.32 > OS Name: Mac OS X > OS Version: 10.6.8 > Architecture: x86_64 > JVM Version: 1.6.0_29-b11-402-10M3527 > > Thanks, > Ravi > > > On Tue, Dec 20, 2011 at 4:52 PM, Pid * <p...@pidster.com> wrote: > >> On 20 Dec 2011, at 11:02, S B <sbl...@gmail.com> wrote: >> >> > Hi, >> > >> > I created and deployed an MBean in my tomcat. It uses datasource to >> connect >> > to DB. >> >> Which version of Java? Tomcat? >> >> >> > My questions is: >> > >> > When I create InitialContext() inside MBean's constructor and pass the >> > envContext to DBManager class to lookup datasource it works fine. >> However >> > when I create InitialContext() in DBManager class, it fails. >> > >> > Is it necessary to create InitialContext() during loading of MBean >> (either >> > in ContextListener class or inside MBean constructor). >> >> It depends on where you run the code. You haven't told us this. >> >> Can you post a code example. >> >> >> p >> >> >> > When I did new InitialContext() in my DBManager class which is called >> from >> > hello method of MBean it failed with below exception: >> > >> > avax.naming.NoInitialContextException: Cannot instantiate class: >> > org.apache.naming.java.javaURLContextFactory [Root exception is >> > java.lang.ClassNotFoundException: >> > org.apache.naming.java.javaURLContextFactory] >> > >> > I invoked hello method of MBean from JConsole. >> > >> > >> > Please let me know is it Tomcat specific? or same behavior is seen >> across >> > all app servers. Also, What difference does it make if I create >> > InitialContext inside MBean's constructor or in some other class at a >> later >> > point of time. >> > >> > Thanks >> > Ravi >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org >> For additional commands, e-mail: users-h...@tomcat.apache.org >> >> >