【问题标题】:Adding datasource programmatically to JNDI context in embedded tomcat 7以编程方式将数据源添加到嵌入式 tomcat 7 中的 JNDI 上下文
【发布时间】:2014-01-18 13:30:51
【问题描述】:

我试图在服务器启动之前注册一个新的数据源,但在执行查找时我得到了

javax.naming.NameNotFoundException:名称 [jdbc/db] 未绑定在此上下文中。找不到 [jdbc]。

这就是我启动tomcat的方式:

    Tomcat tomcat = new Tomcat();
    //...
    ContextResource resource = new ContextResource();
    resource.setName("jdbc/db");
    resource.setAuth("Container");
    resource.setType("javax.sql.DataSource");
    resource.setScope("Sharable");
    resource.setProperty("driverClassName", "org.hsqldb.jdbc.JDBCDriver");
    resource.setProperty("url", "jdbc:hsqldb:hsql://localhost:1234/mydb1");

    tomcat.getServer().getGlobalNamingResources().addResource(resource);
    tomcat.start();
    tomcat.getServer().await();

查找:

    Connection conn = null;
    try {
        Context initContext = new InitialContext();
        Context envContext = (Context) initContext.lookup("java:/comp/env");
        DataSource ds = (DataSource) envContext.lookup("jdbc/db");

        conn = ds.getConnection();
        conn.createStatement()....
    } catch (Exception e) {
        e.printStackTrace();
    }

我在这里错过了什么?

【问题讨论】:

    标签: java tomcat jdbc datasource jndi


    【解决方案1】:

    哦,好吧,我想通了!而不是将其添加到 GlobalNamingResources

    tomcat.getServer().getGlobalNamingResources().addResource(resource);
    

    我在 NamingResources 中添加了它

    Context rootCtx = tomcat.addContext("", base.getAbsolutePath());
    //...
    rootCtx.getNamingResources().addResource(resource);
    

    它有效!

    如果有人能告诉我 globalNamingResources 和(本地)NamingResources 之间的区别以及如何查找 globalNamingResource,请给我留言!

    【讨论】:

      【解决方案2】:

      您没有向我们展示您是如何查找 JNDI 资源的。但是,无论如何,您的资源的完整 JNDI 名称是 java:comp/env/jdbc/db 即您需要查找的名称。

      这里有进一步阅读:https://stackoverflow.com/a/4099163/131929

      【讨论】:

        猜你喜欢
        • 2011-07-11
        • 2013-02-24
        • 2016-05-29
        • 1970-01-01
        • 2014-08-20
        • 2015-08-12
        • 2013-07-10
        • 2016-01-28
        • 2014-01-19
        相关资源
        最近更新 更多