简体   繁体   English

TomEE sesison持久性存储不起作用

[英]TomEE sesison persistance storage not working

I am using TomEE plus 1.7.1 on rhel machine. 我在rhel机器上使用TomEE plus 1.7.1。 I have setup jdbc store for persistence storage to store session data in mysql databse. 我已经为持久性存储设置了jdbc存储,以将会话数据存储在mysql数据库中。 The jdbc store is not working on rhel machine. jdbc存储在Rhel机器上不起作用。 Even persistence in file is not working. 甚至文件的持久性也不起作用。 Below are the settings the I have done. 以下是我所做的设置。

In the /conf/context.xml added this 在/conf/context.xml中添加了这个

<Manager className="org.apache.catalina.session.PersistentManager"
        maxIdleBackup="0">
  <Store className="org.apache.catalina.session.JDBCStore"
         connectionURL="jdbc:mysql://dbservername:3306/someName?user=[user]&amp;password=[pass]"
         driverName="com.mysql.jdbc.Driver"
         sessionAppCol="app_name"
         sessionDataCol="session_data"
         sessionIdCol="session_id"
         sessionLastAccessedCol="last_access"
         sessionMaxInactiveCol="max_inactive"
         sessionTable="TOMCAT_SESSIONS"
         sessionValidCol="valid_session"/>
</Manager>

I have a TomEE start up script with the below contents. 我有一个具有以下内容的TomEE启动脚本。 Line 2 is related to jdbc store 第2行与jdbc存储相关

export JAVA_OPTS="-Djava.awt.headless=true -Dawt.toolkit=sun.awt.HToolkit"
export CATALINA_OPTS="-Dorg.apache.catalina.session.StandardSession.ACTIVITY_CHECK=true"
sh catalina.sh start

created the following in table in mysql 在mysql中的表中创建了以下内容

created following table
 create table tomcat_sessions (
  session_id     varchar(100) not null primary key,
  valid_session  char(1) not null,
  max_inactive   int not null,
  last_access    bigint not null,
  app_name       varchar(255),
  session_data   mediumblob,
  KEY kapp_name(app_name)
);

added mysql-connector-java.jar in /lib The following error is observed 在/ lib中添加mysql-connector-java.jar观察到以下错误

Errors observed- 观察到的错误-

for every applicattion deployed in apache i am getting these errors 对于在apache中部署的每个应用程序,我都会收到这些错误

SEVERE: Error manager.start()
org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.PersistentManager[/tomee]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5499)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1247)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1898)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.JDBCStore[org.apache.catalina.session.PersistentManager[/tomee]]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.session.PersistentManagerBase.startInternal(PersistentManagerBase.java:864)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 12 more
Caused by: java.lang.NullPointerException
        at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:961)
        at org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:893)
        at org.apache.catalina.session.JDBCStore.startInternal(JDBCStore.java:1064)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 14 more



SEVERE: Error manager.start()
org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.PersistentManager[/myAppname1]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5499)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.JDBCStore[org.apache.catalina.session.PersistentManager[/myAppname1]]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.session.PersistentManagerBase.startInternal(PersistentManagerBase.java:864)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 12 more
Caused by: java.lang.NullPointerException
        at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:961)
        at org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:893)
        at org.apache.catalina.session.JDBCStore.startInternal(JDBCStore.java:1064)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 14 more



        SEVERE: Error manager.start()
org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.PersistentManager[/myAppname2]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5499)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.JDBCStore[org.apache.catalina.session.PersistentManager[/myAppname2]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.session.PersistentManagerBase.startInternal(PersistentManagerBase.java:864)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 12 more
Caused by: java.lang.NullPointerException
        at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:961)
        at org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:893)
        at org.apache.catalina.session.JDBCStore.startInternal(JDBCStore.java:1064)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 14 more


        SEVERE: Error manager.start()
org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.PersistentManager[/myAppname3]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5499)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.session.JDBCStore[org.apache.catalina.session.PersistentManager[/myAppname3]]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
        at org.apache.catalina.session.PersistentManagerBase.startInternal(PersistentManagerBase.java:864)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 12 more
Caused by: java.lang.NullPointerException
        at org.apache.catalina.session.JDBCStore.open(JDBCStore.java:961)
        at org.apache.catalina.session.JDBCStore.getConnection(JDBCStore.java:893)
        at org.apache.catalina.session.JDBCStore.startInternal(JDBCStore.java:1064)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 14 more

I would not recommend using JDBC session persistence. 不建议使用JDBC会话持久性。 Even the Tomcat manual recommends against it. 甚至Tomcat手册也建议不要这样做。 It's unstable, slow, and error-prone. 它不稳定,缓慢且容易出错。

It would appear something is going wrong with the driver: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.55/org/apache/catalina/session/JDBCStore.java#961 该驱动程序似乎出现了问题: http : //grepcode.com/file/repo1.maven.org/maven2/org.apache.tomcat/tomcat-catalina/7.0.55/org/apache/catalina/session /JDBCStore.java#961

I would look to make sure it's on your classpath first. 我希望确保它首先在您的类路径上。 After that, set a breakpoint in your debugger and see what is actually null. 之后,在调试器中设置一个断点,看看实际上是什么。

In my case it was because I am using the wrong JDBC URL, especially the scheme part. 就我而言,这是因为我使用了错误的JDBC URL,尤其是方案部分。

I used: 我用了:

postgres://

(which is okay for psql , but not for JDBC). (对于psql ,但是对于JDBC来说可以)。 The correct one is: 正确的是:

jdbc:postgresql://

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM