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