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

在我们的管理团队决定创建 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以复制所有必需的对象?

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

谢谢。

致谢

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

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2948612.html

大家都在问