gpt4 book ai didi

java - 在 tomcat context.xml 中指定 Oracle DB/Schema 名称

转载 作者:行者123 更新时间:2023-11-28 22:30:16 28 4
gpt4 key购买 nike

我正在尝试在 Tomcat 中添加 JDBC session 持久性,如下所述:Tomcat Link我在 Oracle 中的 my_schema 数据库/模式中创建了一个 session 表,并试图将其映射到 Tomcat context.xml 中。我的映射如下:

   <Resource name="jdbc/sessions" auth="Container" type="javax.sql.DataSource"
username="test_user"
password="test_user"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=my-host-blah.com)(PORT=1234))(ADDRESS=(PROTOCOL=TCP)(HOST=my-host-blah.com)(PORT=1244)))(CONNECT_DATA=(SERVICE_NAME=someservice)))"
maxActive="20"
maxIdle="10"
validationQuery="select 1" />

<Manager className="org.apache.catalina.session.PersistentManager"
distributable="true" processExpiresFrequency="3" maxIdleBackup="1" >
<Store className="org.apache.catalina.session.JDBCStore"
dataSourceName="jdbc/sessions"
sessionAppCol="app_name" sessionDataCol="session_data" sessionIdCol="session_id"
sessionLastAccessedCol="last_access" sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions" sessionValidCol="valid_session" />
</Manager>

但是上面的配置导致 tomcat 启动时出现 NullPointerException。我知道 url、用户名和密码是正确的,因为如果我编写一个简单的 Java 程序并连接/查询 my_schema.tomcat_sessions 表,它就可以正常工作。但我不确定如何在上述配置中指定特定的数据库/架构名称。我得到的异常如下:

SEVERE: Error manager.start() java.lang.NullPointerException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:861) at org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:833) at org.apache.catalina.session.JDBCStore.start(JDBCStore.java:968) at org.apache.catalina.session.PersistentManagerBase.start(PersistentManagerBase.java:995) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4713) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

我想知道问题是否是因为我没有在任何地方指定数据库/架构名称?我尝试将 driverClassName 更改为 oracle.jdbc.OracleDriver,但没有成功。我确保 $TOMCAT_HOME/lib 有 ojdbc6.jar 文件。还有其他想法/想法吗?谢谢!

最佳答案

您可以尝试在您的 context.xml 中使用以下内容:

<Manager className="org.apache.catalina.session.PersistentManager"
maxIdleBackup="10">
<Store className="org.apache.catalina.session.JDBCStore"
connectionURL="jdbc:oracle:thin:USERNAME/PASSWORD@//HOSTNAME/SID"
driverName="oracle.jdbc.driver.OracleDriver"
sessionAppCol="app_name"
sessionDataCol="session_data"
sessionIdCol="session_id"
sessionLastAccessedCol="last_access"
sessionMaxInactiveCol="max_inactive"
sessionTable="tomcat_sessions"
sessionValidCol="valid_session" />
</Manager>

确保替换 connectionURL 属性中的值,并将 Oracle JDBC 驱动程序 (ojdbc6.jar) 添加到您的 tomcat 的 lib 目录。

关于java - 在 tomcat context.xml 中指定 Oracle DB/Schema 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22491177/

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