在用jndi/jdbc实现数据库连接池时,若是在工程的WEB-INF/lib中加入naming-factory.jar和naming-factory-dbcp.jar的话,用MyEclipse发布工程到Tomcat的话(假如工程名为:myWeb),在Tomcat/webapps/myWeb/中只会出现WEB-INF和META-INF两个文件夹,其它的src,jsp,js等文件不会发布过来的.
经过多次测试,若是在myWeb中放入这两个.jar包的话,MyEclipse发布的工程就不完全(上面说到的情况);
若是加入的话,倒是可以正常发布,可是我的数据库连接池就不能用,报错:
javax.naming.NameNotFoundException: Name java:comp is not bound in this Context
只有手动把这两个jar包去掉才行.
贴上我的连接池配置:
// 只需要初始化1次
DataSource ds = null;
try {
if (ds == null) {
Context initContext = new InitialContext();
Context envContext = (Context) initContext.lookup("java:comp/env");
ds = (DataSource) envContext.lookup("jdbc/mydb");
}
} catch (Exception e) {
LOG.error(ds);;
e.printStackTrace();
}
LOG.debug("数据库连接池成功:jdbc/mydb");
return ds.getConnection();
在Tomcat 5.5\conf\Catalina\localhost\下我加一个与工程同名的xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/mydb" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="sa" password="" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDB;SelectMethod=cursor" />
</Context>
其它的地方没有做修改.
想请问大家,naming-factory.jar,naming-factory-dbcp.jar这两个包是干吗用的?为什么会出现我这个问题?还有怎么解决?
------解决方案--------------------------------------------------------
我也顶个~~~