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, 1);
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