[英]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]&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.