1

我正在使用当前版本的 GlassFish 4.1,其中包含 EclipseLink 版本 2.5.2。在这个 GlassFish 中,我部署了一个企业应用程序和一个 Web 应用程序。如果从 GlassFish 外部(如外部 JavaFX 应用程序)调用返回已加载实体的 EJB,则会正确返回实体。

但是,如果从 Web 应用程序调用相同的 EJB,由于此错误GLASSFISH-17432 ,实体不会正确返回。

我已经在这里找到的解决方法Calling Remote EJB in EJB 3.1并不能真正解决这个问题,因为如果我在 EclipseLink 中禁用编织,以下操作将无法正常工作:

@ManyToOne(fetch=FetchType.LAZY)
public Foo getFoo() {
    return foo;
}

@ManyToOne(fetch=FetchType.EAGER)
public Bar getBar() {
    return bar;
}
4

1 回答 1

1

您可以尝试静态编织作为另一种解决方法。

字节码编织是一种用于更改已编译 Java 类的字节码的技术。您可以配置字节码编织以启用许多 EclipseLink JPA 性能优化,包括对一对一和多对一关系的延迟加载、属性级更改跟踪和获取组的支持。

编织可以在加载实体类时动态执行,也可以作为构建过程的一部分静态执行。

来源

正如GLASSFISH-16164中所建议的,您可以尝试eclipselink-staticweave-maven-plugin可以在EclipseLink Wiki中找到有关静态编织和插件使用(或者您可以使用 ant)的详细说明。

然后,您必须在您的persistence.xml

<property name="eclipselink.weaving" value="static"/>

也可以看看:

于 2015-01-02T19:35:23.243 回答