我试图让 EclipseLink JPA 在 Spring dm Server OSGi 环境中工作。
从 Spring Enterprise Bundle Repository 下载的相关框架和库包括:
- dm 服务器 1.0.2.SR02
- AspectJ 运行时 1.6.3
- AspectJ 韦弗 1.6.3
- Spring 框架 2.5.6.A
- Eclipse 持久性 1.1.0
- Javax 持久性 API 1.99.0
我遵循与PetClinic-1.5.0示例中介绍的相同结构来设置 EclipseLink JPA。一切正常,直到启用延迟获取(这需要代理对象)。
启用延迟获取后,以下错误表明 load-time-weaving 无法正常工作。
---- (为便于阅读而截断)
异常 [EclipseLink-60] (Eclipse Persistence Services - 1.1.0.r3634):org.eclipse.persistence.exceptions.DescriptorException 异常描述:方法 [_persistence_setcustomer_vh] 或 [_persistence_getcustomer_vh] 未在对象 [net.fractech] 中定义.fds.backoffice.Job]。内部异常:java.lang.NoSuchMethodException:net.fractech.fds.backoffice.Job._persistence_getcu stomer_vh() 映射:org.eclipse.persistence.mappings.OneToOneMapping[customer] 描述符:RelationalDescriptor(net.fractech.fds.backoffice.J ob --> [DatabaseTable(JOBS)])
这表明 _persistence_getcustomer_vh() 和 _persistence_setcustomer_vh() 方法没有自动编织到 Job 域对象中。
问题
1.) 我如何确定 load-time-weaving 是否真的有效;此外,我如何记录启动了哪个加载时间编织代理和编织器?如何将开关传递给此编织器以使其输出调试信息?
我假设我从 <context:load-time-weaver aspectj-weaving="on" /> 开始加载时间编织
2.) 很多搜索显示我在使用dm Server时不需要将-javaagent参数传递给jvm。这个对吗?
3.) 我通过断言 com.springsource.org.eclipse.persistence;version="[1.1.0,1.1.0]";import-scope 确保我在另一个包中的域对象可以访问 Eclipse 持久性类: =我的 eclipselink 包中的应用程序,并包括 PAR 中的所有应用程序包。在 Spring dm Server 中启用 EclipseLink JPA 是否需要任何其他配置?