Укажите имя БД / схемы Oracle в tomcat context.xml

1

Я пытаюсь добавить стойкость к сеансу JDBC в Tomcat, как описано здесь: Tomcat Link. Я создал таблицу сеансов в Oracle в базе данных my_schema/schema и пытается сопоставить ее в контексте 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>

Но приведенная выше конфигурация вызывает NullPointerException при запуске tomcat. Я знаю, что URL, имя пользователя и пароль верны, потому что, если я пишу простую программу Java и подключаю/запрашиваю таблицу my_schema.tomcat_sessions, она отлично работает. Но я не уверен, как указать конкретное имя DB/схемы в приведенной выше конфигурации. Исключением, которое я получаю, является ниже:

SEVERE: ошибка manager.start() java.lang.NullPointerException в java.lang.Class.forName0 (собственный метод) в java.lang.Class.forName (класс.java:190) в org.apache.catalina.session.JDBCStore.open(JDBCStore.java:861) в org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:833) в org.apache.catalina.session.JDBCStore.start(JDBCStore.java:968) в org. apache.catalina.session.PersistentManagerBase.start(PersistentManagerBase.java:995) на org.apache.catalina.core.StandardContext.start(StandardContext.java: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) на org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:943) на org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:778) на org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:504) на org.apache.catalina.st artup.HostConfig.start(HostConfig.java:1315) в org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:324) в org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) на org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061) на org.apache.catalina.core.StandardHost.start(StandardHost.java:840) на org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) на org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) на org.apache.catalina.core.StandardService.start(StandardService.java:525) в org.apache. catalina.core.StandardServer.start(StandardServer.java:754) на org.apache.catalina.startup.Catalina.start(Catalina.java:595) на sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) на sun.reflect. NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) на sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke(Method.java:6 06) на org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) на org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)

Интересно, проблема в том, что я нигде не указываю имя базы данных/схемы? Я попытался изменить имя driverClassName на oracle.jdbc.OracleDriver, но не повезло. Я убедился, что файл $ TOMCAT_HOME/lib имеет файл ojdbc6.jar. Любые другие мысли/идеи? Благодарю!

Теги:
tomcat
jdbc

1 ответ

0

Вы можете попробовать использовать следующее в вашем 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 и добавьте драйвер JDBC Oracle (ojdbc6.jar) в ваш каталог tomcat lib.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню