攻破JNDI连接池(Tomcat5.5下通过管理界面配置连接池)__教程 |
|
日期:2007-5-9 18:51:44 人气:137 [大 中 小] |
|
|
|
攻破JNDI连接池- - 经过几天的努力,终于可以连接上连接池了,其中参考了很多大侠关于这方面的贴子,现在将这几天出现的几个问题写在这里: 一.在tomcat_home\common下放入jdbc的三个驱动程序(一定要的哦),可以在微软的网站上去下载,安装的SQLSERVER2k默认的用户名是sa,密码是空,但密码为空并不代表没有密码,所以你的url中一定要定义username和password,最好是重设定一下密码 二.出现不能引用错误的话一般就是路径没有写对,tomcat默认的路径是tomcat_home\webapps\不过使用5.5.x的话,按下面方法就行,不需要配置路径,而且也不用在youwebapp\WEB-INF\web.xml文件配置引用 三.tomcat5.5.x版的server.xml配置与tomcat5.0的配置不同,下面列举三种在tomcat5.5.x的配置方法,如果配置不正确会出现javax.naming.NameNotFoundException: Name is not bound in this Context 错误 方式一、全局数据库连接池 1、通过管理界面配置连接池,或者直接在tomcat\conf\server.xml的GlobalNamingResources中增加 <Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/> 2、在tomcat\webapps\myapp\META-INF\context.xml的Context中增加: <ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/> 这样就可以了。 方式二、全局数据库连接池 1、同上 2、在tomcat\conf\context.xml的Context中增加: <ResourceLink global="jdbc/mydb" name="jdbc/mydb" type="javax.sql.DataSource"/> 方式三、局部数据库连接池 只需在tomcat\webapps\myapps\META-INF\context.xml的Context中增加: <Resource name="jdbc/mydb" type="javax.sql.DataSource" password="mypwd" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="2" maxWait="5000" validationQuery="select 1" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb" maxActive="4"/> 参数说明: driveClassName:JDBC驱动类的完整的名称; maxActive:同时能够从连接池中被分配的可用实例的最大数; maxIdle:可以同时闲置在连接池中的连接的最大数; maxWait:最大超时时间,以毫秒计; password:用户密码; url:到JDBC的URL连接; user:用户名称; validationQuery:用来查询池中空闲的连接。 以上三种方式在tomcat 5.5.4下都可以。另外,sql server的jdbc driver是从微软网站上下载的sql server jdbc (sp3)。 四.报错org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory ([Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)此是一个小问题,因为我的SQLSERVER2K的服务改成手动的,所以每次启动后就要手动的启动SQLSERVER2K,由于一下子不记的启动了,所以报些错误,所以如果你经常要用到SQLSERVER2K的话,最好不要将其改为手动启动 |
|
出处:本站原创 作者:佚名 |
|
|