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