java—使用会话访问类型的spring代理bean时出现的随机classcastexception

cs7cruho  于 2021-07-14  发布在  Java
关注(0)|答案(0)|浏览(220)

我有一个用java8编写的jee应用程序,它使用spring4.3.24。由于我的应用程序的前端使用的是JSF2.x,因此我还使用由第三方库myfaces Orchestral在1.4版中提供的自定义spring范围-会话访问
由于应用程序中广泛地包含了selenium测试,我目前正在分析在多线程中运行测试的主题。详细介绍:一个jvm托管appserver—在我的例子中是WebSphere8.5.5,另一个jvm使用JUnit4.10在多个线程中运行selenium测试。
我所面临的问题(但仅在并行运行测试时)是在尝试与会话访问bean交互时偶尔从cglib类抛出的classcastexception。
例外情况如下:
异常:java.lang.classcastexception:com.sun.proxy.$proxy499与org.springframework.cglib.proxy.methodproxy.invoke(methodproxy)中的some.package.pagebackingbean$$fastclassbyspringcglib$$ecd1ff4d.invoke()不兼容。java:204)在org.springframework.aop.framework.cglibaopproxy$cglibmethodinvocation.invokejoinpoint(cglibaopproxy。java:736)在org.springframework.aop.framework.reflectivemethodinvocation.procedue(reflectivemethodinvocation。java:157)在org.springframework.aop.support.delegatingintroductioninterceptor.doproceed(delegatingintroductioninterceptor。java:133)在org.springframework.aop.support.delegatingintroductioninterceptor.invoke(delegatingintroductioninterceptor。java:121)在org.springframework.aop.framework.reflectivemethodinvocation.procedue(reflectivemethodinvocation。java:179)在org.springframework.aop.framework.cglibaopproxy$dynamicadvisedinterceptor.intercept(cglibaopproxy。java:671)
如前所述,例外只是偶尔发生。另外,可以注意到,当两个或多个线程在同一毫秒内引用同一类型的会话bean时,通常会发生这种情况(当然,由于这两个线程使用不同的会话,底层bean是不同的)
我已经排除的是:
这与基础bean的初始化无关。尽管bean有一个postconstruct,它还是成功初始化了
我认为这个问题是在升级到Spring4.x(从3.x)时出现的,所以我尝试禁用objenesis(通过将spring.objeness.ignore设置为“true”),但这也没有帮助

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题