在我们的管理团队决定创建 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以复制所有必需的对象?
我们很拼命,这种情况发生了一个半月,我们找不到解决方案。
谢谢。
致谢