2014-03-18 54 views
1

我想在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文件。 任何其他的想法/想法? 謝謝!

+0

那是什麼'---->''HOST = my-host-blah.com'是你需要改變的東西嗎? –

+1

你*指定「模式」:'username =「test_user」'和「數據庫」:'SERVICE_NAME = someservice'。 NPE看起來更像是缺少一個jar文件。您使用的是哪種JDBC *驅動程序版本(注意:_filename_中的數字不是**驅動程序版本,它是驅動程序的目標Java版本) –

+0

@a_horse_with_no_name我正在使用ojdbc6-11.2.0.3.0 .jar,這是應用程序使用的。我將jar從webapps/lib /移動到tomcat/lib /目錄。 – kriver

回答

0

您可以嘗試使用您的context.xml如下:

<Manager className="org.apache.catalina.session.PersistentManager" 
     maxIdleBackup="10"> 
    <Store className="org.apache.catalina.session.JDBCStore" 
     connectionURL="jdbc:oracle:thin:USERNAME/[email protected]//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目錄。

相關問題