当前位置: 首页 > 知识库问答 >
问题:

EclipseLink 在远程 EJB 调用上反序列化空实体对象

顾俊哲
2023-03-14

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

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

我在这里已经找到的解决方法在EJB3.1中调用远程EJB并不能真正解决这个问题,因为如果我在EclipseLink中禁用编织,下面的工作将不再正常:

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

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

共有1个答案

茅才
2023-03-14

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

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

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

(来源)

正如GLASSFISH-16164中建议的那样,您可以尝试eclipselink-staticweave-maven-插件。有关静态编织和插件用法的详细说明(也可以使用ant),请参阅Eclipse Link Wiki。

然后,您必须在< code>persistence.xml中设置此属性:

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

另见:

    < li >如何在EclipseLink中启用编织? < li>Java-EE6: FetchType。懒以静织抛出奇怪的异常 < li >延迟加载不适用于eclipselink中的许多工具 < li >为什么JPA的FetchType。偷懒工作?
 类似资料:
  • 我想反序列化表单中的类: 其中文本是加密的,反序列化应该在重建TestFieldEncryptedMessage实例之前取消对值的加密。 我采用的方法非常类似于:https://github.com/codesqueak/jackson-json-crypto 也就是说,我正在构建一个扩展SimpleModule的模块: 如您所见,设置了两个修饰符:EncryptedSerializerModif

  • 我正在做一个小组项目,我们遇到了一个软件序列化部分的问题。我们有类协议: 我们还有SearchResult类: 当我们通过客户端-服务器套接字连接编写协议类时,就会出现问题。问题是Protocol类中的TableModel对象在序列化/反序列化过程中的某个时刻变为null,而我们所做的任何事情都还没有解决这个问题。 到目前为止,我们已尝试: -在SearchResult中实现Serializabl

  • 我重构我的代码来使用kryo序列化。一切都很好,除了从某个类中反序列化一个土工属性。不会引发异常(我将“spark.kryo.registrationRequired”设置为true)。在调试时,我试图收集数据,但我看到geomtry中的数据只是空的。结果,我明白反序列化失败了。Geomtry来自-Any(scala)类型,因为它可能是一个复杂的属性。我的问题是为什么数据是空的,以及是否与属性的类

  • 当我尝试从远程客户端访问在JBoss EAP 6.2中运行的EJB时,我收到以下异常: 我将这些属性用于调用远程ejb方法。 endpoint.name=客户端endpointremote.connectionprovider.create.options.org.xnio.选项。SSL_ENABLED=falseremote.connections=默认remote.connection.def

  • 我在Glassfish 3.1.2.2中使用JavaEE6。我有一个EJB项目,其中包含无状态会话bean,还有一个WEB项目,包含命名的会话范围类。 例如: 命名类 EJB类 项目正在运行,但当我进行代码分析时,我收到以下消息。 可序列化类中的非暂时性不可序列化实例字段 这个Serializable类定义了一个非基元实例字段,它既不是transient、Serializable,也不是java.

  • 我目前的问题是,我的机器上运行了两个Wildfly 8.2.0最终实例。我知道,有类似的问题,但没有一个真正有助于我的问题。其中一个拥有一个宁静的应用程序,当它收到GET时,它会触发无状态会话Bean。之后,此无状态会话 Bean 应从远程无状态会话 Bean 调用方法该方法位于另一个 wildfly 实例上。 我将从解释我到目前为止所做的事情开始(也许我错过了一些东西,我对Java EE和Wil

  • 我试图序列化一个对象数组,并将其写入一个名为address.ser的文件,然后从该文件中读取,反序列化对象数组并显示其属性。我尝试一次序列化整个arrayList(读取时在单个会话中反序列化它),也尝试一个接一个地序列化对象数组的每个对象(读取时一个接一个地反序列化它)。问题是,当从address.ser文件读回来时,我只得到最后一个被写入的对象的数据,而不是其他的。 以下是代码片段: 这是用于将

  • 我需要帮助从Spring调用EJB远程接口。 web应用程序部署在同一个JBoss服务器中。但是当我尝试部署时,我得到一个命名异常'ServiceBean'未绑定。我必须在web.xml中添加环境条目才能访问EJB吗(即使EJB和web应用程序都部署在同一个JBoss中)?