Tomcat部落无法在节点之间复制CGLIB Spring代理

问题描述 投票:0回答:1

在我们的管理团队决定创建Tomcat群集之前,我们一直在使用Spring(3.0.4)Web应用程序,现在一切都很好...

首先,我们序列化了所有必需的类(Business Bean),并将其添加到所有的web.xml中。

但是直到我们添加"**@Scope(proxyMode = ScopedProxyMode.TARGET_CLASS**)"之前,我们无法在两个群集节点中部署和启动该应用程序。

现在问题是所有自动生成的所有CGLIB代理类在两个群集节点中均未答复,并且引发了此异常:

dic 10, 2019 12:28:48 PM org.apache.catalina.ha.session.DeltaManager messageReceived
ERROR: Manager [localhost#/pen-webapp]: Unable to receive message through TCP channel java.lang.ClassNotFoundException: es.magrama.pen.business.businessbean.usuarios.UsuariosBusiness$$EnhancerByCGLIB$$74c72123
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:686)
        at org.apache.catalina.tribes.io.ReplicationStream.resolveClass(ReplicationStream.java:79)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1868)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1751)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2042)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)
        at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2211)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2069)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1573)
        at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2287)...

我们认为节点无法反序列化,因为在其类路径中找不到自动生成的CGLIB代理类。所有代理类都类似于“ yourclass $$ EnhancerByCGLIB $$ xxxxxxxx”,并且似乎在服务器节点之间未对它们进行答复...

是否有必要在Spring配置文件中进行其他配置以复制这些代理类?

Spring框架(没有Spring Boot)是否与集群使用兼容,或者是否有必要实施Spring Session以复制所有必需的对象?

我们很拼命,这种情况发生了一个半月,我们找不到解决方案。

提前感谢。

问候

spring serialization cluster-computing replication cglib
1个回答
0
投票

您是否找到了解决方案?预先感谢。

© www.soinside.com 2019 - 2024. All rights reserved.