我想在Tomcat中添加JDBC會話持久性,如下所示:Tomcat Link 我在my_schema數據庫/架構內的Oracle中創建了一個會話表,並試圖映射它在Tomcat的context.xml中。我的映射如下:在tomcat context.xml中指定Oracle數據庫/架構名稱
<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表,它可以正常工作。但我不確定如何在上述配置中指定特定的DB /模式名稱。我得到的例外是如下:
嚴重:錯誤manager.start() 顯示java.lang.NullPointerException 在java.lang.Class.forName0(本機方法) 在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。啓動(StandardContext.jav一:4713) 在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799) 在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779) 在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) 在org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504) 在org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) 在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 ) 在org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
我不知道這個問題是因爲我不指定任何地方DB /架構名稱? 我試着將driverClassName更改爲oracle.jdbc.OracleDriver,但沒有運氣。 我確保$ TOMCAT_HOME/lib具有ojdbc6.jar文件。 任何其他的想法/想法? 謝謝!
那是什麼'---->''HOST = my-host-blah.com'是你需要改變的東西嗎? –
你*指定「模式」:'username =「test_user」'和「數據庫」:'SERVICE_NAME = someservice'。 NPE看起來更像是缺少一個jar文件。您使用的是哪種JDBC *驅動程序版本(注意:_filename_中的數字不是**驅動程序版本,它是驅動程序的目標Java版本) –
@a_horse_with_no_name我正在使用ojdbc6-11.2.0.3.0 .jar,這是應用程序使用的。我將jar從webapps/lib /移動到tomcat/lib /目錄。 – kriver