日期:2014-05-17  浏览次数:20941 次

jdbc连接池中,naming-factory.jar用来做什么的?
在用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这两个包是干吗用的?为什么会出现我这个问题?还有怎么解决?  
  


------解决方案--------------------
我也顶个~~~