gpt4 book ai didi

java - 上下文是只读的

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:59:25 26 4
gpt4 key购买 nike

Helo 大师们,我必须动态地创建一个 JNDI 数据源,我尝试使用一个名为 SetupApplicationListener 的监听器来完成它。这是WEB-LIB/web.xml

的开头
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee">

<display-name>pri-web</display-name>

<!-- Listeners -->
<listener>
<listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
</listener>
<listener>
<listener-class>myapp.SetupApplicationListener</listener-class>
</listener>

监听器代码:

public class SetupApplicationListener implements ServletContextListener {

public static Log LOG = null;

public void contextInitialized(ServletContextEvent ctx){
try {
createOracleDataSource();
.....
}
}

private void createOracleDataSource() throws SQLException, NamingException {
OracleDataSource ds = new OracleDataSource();
ds.setDriverType(...);
ds.setServerName(...);
ds.setPortNumber(...);
ds.setDatabaseName(...);
ds.setUser(...);
ds.setPassword(...);

new InitialContext().bind("java:comp/env/jdbc/myDS", ds);
}

.....
}

还有错误:

[ERROR] 29/01/2013 09:44:50,517 (SetupApplicationListener.java:86) -> Error
javax.naming.NamingException: Context is read only
at org.apache.naming.NamingContext.checkWritable(NamingContext.java:903)
at org.apache.naming.NamingContext.bind(NamingContext.java:831)
at org.apache.naming.NamingContext.bind(NamingContext.java:171)
at org.apache.naming.NamingContext.bind(NamingContext.java:187)
at org.apache.naming.SelectorContext.bind(SelectorContext.java:186)
at javax.naming.InitialContext.bind(InitialContext.java:359)
at myapp.SetupApplicationListener.createOracleDataSource(SetupApplicationListener.java:102)

我可以将 Context 的只读属性设置为“true”吗?谢谢! :)

Tomcat 6.0
Oracle 11g
jdk1.5

编辑:不需要动态,我必须在内部定义一个 jndi 数据源我不能修改服务器文件,因为它是一个共享服务器。它必须是 jndi,因为其他模块以这种方式使用它,谢谢。

最佳答案

如果您需要动态创建数据源,是否真的需要 JNDI 查找? JNDI 旨在建立应用程序外部的连接,而在您的场景中,由于合法要求,它与应用程序紧密耦合。为什么不只使用 JDBC 连接?

关于java - 上下文是只读的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14580286/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com