hazelcast tomcat会话未从应用程序上下文

时间:2016-12-29 14:39:31

标签: session tomcat hazelcast

我试图在tomcat服务器上实现hazelcast会话 我在tomcat7 / lib中放了以下罐子: hazelcast-tomcat8-sessionmanager-1.0.3.jar, hazelcast-3.7.4.jar和hazelcast-client-3.7.4.jar。 在tomcat8 / conf / server.xml中我有:

<Listener className="com.hazelcast.session.ClientServerLifecycleListener" />

并在tomcat8 / conf / Catalina / localhost / app.xml中:

<Manager className="com.hazelcast.session.HazelcastSessionManager"
            clientOnly="true"/>

似乎一切都很顺利,但是当我访问应用程序时,我得到了:

 29-Dec-2016 16:24:08.073 SEVERE [http-nio-8443-exec-8] org.apache.coyote.http11.AbstractHttp11Processor.process Error processing arequest
 com.hazelcast.nio.serialization.HazelcastSerializationException: java.lang.ClassNotFoundException: org.springframework.security.ui.savedrequest.SavedRequest
        at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:224)
        at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.read(StreamSerializerAdapter.java:48)
        at com.hazelcast.internal.serialization.impl.AbstractSerializationService.readObject(AbstractSerializationService.java:251)
        at com.hazelcast.internal.serialization.impl.ByteArrayObjectDataInput.readObject(ByteArrayObjectDataInput.java:600)
        at com.hazelcast.session.HazelcastSession.deserializeMap(HazelcastSession.java:141)
        at com.hazelcast.session.HazelcastSession.readData(HazelcastSession.java:127)
        at com.hazelcast.internal.serialization.impl.DataSerializableSerializer.readInternal(DataSerializableSerializer.java:151)
        at com.hazelcast.internal.serialization.impl.DataSerializableSerializer.read(DataSerializableSerializer.java:104)
        at com.hazelcast.internal.serialization.impl.DataSerializableSerializer.read(DataSerializableSerializer.java:54)
        at com.hazelcast.internal.serialization.impl.StreamSerializerAdapter.read(StreamSerializerAdapter.java:48)
        at com.hazelcast.internal.serialization.impl.AbstractSerializationService.toObject(AbstractSerializationService.java:172)
        at com.hazelcast.client.spi.ClientProxy.toObject(ClientProxy.java:186)
        at com.hazelcast.client.proxy.ClientMapProxy.getInternal(ClientMapProxy.java:247)
        at com.hazelcast.client.proxy.ClientMapProxy.get(ClientMapProxy.java:240)
        at com.hazelcast.session.HazelcastSessionManager.findSession(HazelcastSessionManager.java:222)
        at org.apache.catalina.connector.Request.isRequestedSessionIdValid(Request.java:2381)
        at org.apache.catalina.connector.CoyoteAdapter.parseSessionCookiesId(CoyoteAdapter.java:1250)
        at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:935)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:523)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.springframework.security.ui.savedrequest.SavedRequest
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at com.hazelcast.nio.ClassLoaderUtil.tryLoadClass(ClassLoaderUtil.java:151)
        at com.hazelcast.nio.ClassLoaderUtil.loadClass(ClassLoaderUtil.java:120)
        at com.hazelcast.nio.IOUtil$ClassLoaderAwareObjectInputStream.resolveClass(IOUtil.java:358)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1521)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1781)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1353)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:373)
        at com.hazelcast.internal.serialization.impl.JavaDefaultSerializers$JavaSerializer.read(JavaDefaultSerializers.java:219)
        ... 26 more

任何人都知道我做错了什么?感谢

1 个答案:

答案 0 :(得分:0)

似乎某些内容会改变您当前线程的上下文ClassLoader,因此Hazelcast的序列化服务无法找到这些类。我在Hazelcast Tomcat会话管理器的GitHub存储库中为此创建了issue。你可以跟踪那里的进展。

编辑:
您可以将hazelcast-tomcat8-sessionmanager-1.0.3.jar替换为this page上的JAR,其中包含该问题的暂定解决方案,如果能解决问题,请告诉我们吗?