Java/JSF/Tomcat/Spring - 代理对象具有与原始对象不同的方法

标签 java spring classloader tomcat7 proxy-classes

今天我遇到了这个真正困扰我的问题,因为几乎代码已经可以工作了(即使在恢复到旧版本后也停止工作)。

我正在访问 Facelets 页面上的 Spring-Bean。 Spring 将这些对象包装在代理中以使用方面和其他一些东西。

问题是,我在尝试访问 bean 的属性时遇到异常。异常是这样的:

javax.el.PropertyNotFoundException: /customers.xhtml @23,27 value="#{customerBean.customer}": Property 'customer' not found on type $Proxy88

我确定 (!!) 那里有相应的 getter/setter 方法。 到目前为止我尝试过的事情:

  • 将应用程序部署到另一个 tomcat 安装
  • 清除所有 tomcat 缓存,webapp 目录
  • 清理 eclipse 项目
  • 使用 javap 检查相应的方法(以及那里的方法/属性)
  • 改变bean的范围
  • 更改bean的类名
  • 更改spring bean-id
  • 更改bean的serialVersionUID

无论我做什么,类加载器都无法正确包装或加载该类。

有人知道什么会导致这样的问题吗?我不知道还能尝试什么,所以非常感谢任何建议!

提前致谢!

问候, 罗伯特

最佳答案

我还使用 Tomcat 7、JSF 2、Spring 3、Spring Security 3。 我有同样的问题。更改编织配置没有帮助。

我最终的解决方案是在 spring 配置中添加一行:

<aop:aspectj-autoproxy proxy-target-class="true"/>  

你的类路径中需要 CGLIB。
希望这对某人有帮助。 :)

关于Java/JSF/Tomcat/Spring - 代理对象具有与原始对象不同的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460599/

相关文章:

java - 将文件从文件阵列复制到目录

java - 我在哪里可以获得 JOGL 的更新版本?可能与 NetBeans 一起工作?

java - 从Spring Boot连接到Heroku Postgres

java - 我可以在同一个服务中使用两个存储库吗?

java - Tomcat 库急切加载 jar

java - Spring Data Cassandra - 使用 CqlOperations 运行任意 CQL

java - Spring控制台应用程序,从JAR外部加载属性文件

java - Tomcat 自定义类加载器加载某些 jar 失败

java - 如何配置/创建自定义类路径,与jetty中许多Web应用程序中的少数几个一样常见

java - 如何使用java自动化大型机应用程序