JNDI Tomcat 启动错误
Scene:
在 Tomcat 测试 JNDI。(配置context.xml和web.xml的JDBC资源参数以供web应用连接至mysql数据库)
错误信息:
Creation of the naming context failed:
javax.naming.OperationNotSupportedException: Context is read only
Solution:
? No solution yet
Tomcat MySQL JNDI 配置
Scene:
利用 JNDI 来为某个 App 配置数据源。(在 apache tomcat 提供的文档里面有提及"JNDI Datasource How-To")
好处是在该 App 的代码文件里面可以实用 JNDI 提供的接口来链接数据库,以后更改数据库产品的时候只需要一次性配置该 App 的配置文件就可以了。而不需要更改所有文件里面的代码。
Solution:
需要配置的文件有 context.xml 和 web.xml。当然(mysql的驱动可以放在web应用的 $root/WEB-INF/lib 下面,也可以放在 $tomcat/lib 下面)
context文件内容(其中的各项值的意义可以参考 tomcat 提供的文档):
在 context.xml 里面添加 <Context> 结点,在 <Context> 中定义 <Resource>。
|
|
web.xml文件需要添加的内容:
在 web.xml 里面定义 <resource-ref> 结点。
|
可以通过菜单(安装 JBoss 社区提供的 JBoss Studio 在 eclipse 里面)
调用:
- import java.sql.Connection;
- import javax.naming.Context;
- import javax.naming.InitialContext;
- import javax.naming.NamingException;
- import javax.sql.DataSource;
- private static Connection CONNECTION;
- static
- {
- try
- {
- Context ctx = new InitialContext();
- Object datasourceRef = ctx.lookup("java:comp/env/jdbc/mysql");
- DataSource ds = (DataSource)datasourceRef;
- CONNECTION = ds.getConnection();
- }
- catch (NamingException e)
- {
- e.printStackTrace();
- }
- catch (SQLException e)
- {
- e.printStackTrace();
- }
- }