Hi,
I want to config a JNDI data source in an embedded tomcat which is started in 
Eclipse
I've tried several methods, but no one worked well.

First, I tried to indicate a configuration file which include a data source 
configuration
  StandardContext standardContext = (StandardContext) 
embedded.createContext("/web", "E:/Project/MyJava/TomcatProj/web");
  
standardContext.setConfigFile("E:/Project/MyJava/EmbeddedTomcat/conf/webexp.xml");
  host.addChild(standardContext);

but no data source could be found:
  try {
    InitialContext initial = new InitialContext();
    DataSource dsource = (DataSource)initial.lookup("jdbc/SQLServer");
    if (dsource != null) {
       System.out.println("Data source has found!");
    }
  } catch (Exception e) {
    e.printStackTrace();
  }

The exception described like that:
javax.naming.NameNotFoundException: Name jdbc is not bound in this Context
 at org.apache.naming.NamingContext.lookup(NamingContext.java:815)
 at org.apache.naming.NamingContext.lookup(NamingContext.java:198)
 at org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
 at javax.naming.InitialContext.lookup(InitialContext.java:347)
 at com.gul.struts.LoginAction.getUser(LoginAction.java:35)
 at com.gul.struts.LoginAction.execute(LoginAction.java:96)
......


Then, I tried the second method:
    StandardContext rootCtx = (StandardContext)embedded.createContext("/web", 
"E:/Project/MyJava/EmbeddedTomcat/web");
    rootCtx.setWorkDir("E:/Project/MyJava/EmbeddedTomcat");

    ContextResource res = new ContextResource();
    res.setName("jdbc/SQLServer");
    res.setType("javax.sql.DataSource");
    res.setAuth("Container");


    ResourceParams params = new ResourceParams();
    params.setName("jdbc/SQLServer");
    params.addParameter("factory", 
"org.apache.commons.dbcp.BasicDataSourceFactory");
    params.addParameter("maxActive", "50");
    params.addParameter("maxIdle", "10");
    params.addParameter("maxWait", "10000");
    params.addParameter("username", "root");
    params.addParameter("password", "");
    params.addParameter("driverClassName", "org.gjt.mm.mysql.Driver");
    params.addParameter("url", "jdbc:mysql://localhost/employee");


    rootCtx.getNamingResources().addResource(res);
    rootCtx.getNamingResources().addResourceParams(params);
    
    host.addChild(rootCtx);
But, still the exception was thrown.

Could anybody give me a help? 
Thanks

Reply via email to