定义根应用程序的应用程序上下文

时间:2015-09-08 13:34:01

标签: java tomcat jdbc jndi

我在server.xml

中定义了静态上下文
<Context path="" reloadable="true" docBase="my-module"/>

我需要为此应用程序指定上下文。我尝试将my-module.xmlROOT.xml添加到conf/Catalina/localhost,但这并没有解决我的问题。

我仍然收到错误

  

意外异常:名称[jdbc / my-module]未绑定在此中   语境。无法找到[jdbc]

我的context.xml

<Context>    
<Resource 
        name="jdbc/my-module" 
        auth="Container" 
        type="javax.sql.DataSource" 
        maxActive="100" 
        maxIdle="30" 
        maxWait="10000" 
        username="AFE" 
        password="AFE" 
        driverClassName="oracle.jdbc.driver.OracleDriver" 
        url="jdbc:oracle:thin:@my-server:1537:DB" 
        defaultAutoCommit="false" />
</Context>

如何为root应用程序指定上下文?

1 个答案:

答案 0 :(得分:0)

实际上,您不能手动编辑server.xml。执行serever pool后,必须自动添加它。 Context.xml必须位于META-INF文件夹中.Server tomcat。

<Context>
<Resource name="jdbc/DATABASE"
        auth="Container" 
        type="javax.sql.DataSource"
        maxActive="100" maxIdle="30" maxWait="10000"
        username="test" password="test" 
        driverClassName="org.apache.derby.jdbc.ClientDriver"
        defaultAutoCommit="false"
        defaultTransactionIsolation="READ_COMMITTED"
        connectionProperties="useUnicode=yes;characterEncoding=utf8;"
        url="jdbc:derby://localhost/DataBase"/>
</Context>

和此处的连接代码

private static DBConnector instance;

public static synchronized DBConnector getInstance() {
    if (instance == null) {
        instance = new DBConnector();
    }
    return instance;
}

private DBConnector(){
    try {
        Context initContext = new InitialContext();
        Context envContext = (Context) initContext.lookup("java:/comp/env");
        // DATABASE - the name of data source
        ds = (DataSource) envContext.lookup("jdbc/DATABASE");
    } catch (NamingException ex) {
        System.out.println(ex);
    }
}

private DataSource ds;