2006-11-10 星期五
这几天一直在休息,老师出差了,昨天研究了在tomcat下配置jndi,发现在tomcat5.0和5.5下配置还有些不一样,老师是使用得5.0,按照老师那样配在5.5下就是不行,把下面这段xml放在tomcat的server.xml中的
?
?
?
?
?
如果是在5.0下就没有问题,测试通过,而在5.5下面这样写就有错误了,到网上搜了些资料,说它们两个配置还是有些不一样的 在tomcat5.5下conf/Catalina/localhost目录下新建一个针对自己项目的xml文件
auth="Container" name="jdbc/address" type="javax.sql.DataSource" password="" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="10" maxWait="100000" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;databasename=addressbooksample" maxActive="20"/>
文件名叫addressbook.xml这里的文件名是随便起的,在tomcat启动的时候会自动加载这个目录下的所有xml文件,OK?这样就调试通过了,而且看起来这样配置要比在5.0下配置简单。 还有一个方法 就是把sql的配置资源
auth="Container" name="jdbc/address" type="javax.sql.DataSource" password="" driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver" maxIdle="10" maxWait="100000" username="sa" url="jdbc:microsoft:sqlserver://localhost:1433;databasename=addressbooksample" maxActive="20"/> 放入conf文件夹下的Context.xml中的
再有就是在java代码中取得Connection的时候就不能像原来这样写了 Context?initContext?=?new?InitialContext(); Context?envContext?=?(Context)initContext.lookup("java:comp/env"); DataSource?ds?=?(DataSource)envContext.lookup("jdbc/addressbook"); conn?=?ds.getConnection(); 这样写我试过也不行,tomcat会有异常 这样写就没错 Context?initContext?=?new?InitialContext(); DataSource?ds?=?(DataSource)initContext.lookup("java:comp/env/jdbc/address"); conn?=?ds.getConnection(); 经过一番研究试验,终于搞定了,但是其中玄机还不知是为何 像这个东西"java:comp/env"是啥意思(JNDI查找的Tomcat的默认名字) Oh.god,我弄错了 Context?initContext?=?new?InitialContext(); Context?envContext?=?(Context)initContext.lookup("java:comp/env"); DataSource?ds?=?(DataSource)envContext.lookup("jdbc/address"); conn?=?ds.getConnection(); 和这样写 Context?initContext?=?new?InitialContext(); DataSource?ds?=?(DataSource)initContext.lookup("java:comp/env/jdbc/address"); conn?=?ds.getConnection(); 都没错,都能出来数据 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |