EJB的Glassfish V3.1.2客户端传递数据会话bean总是空(EJB Glassfish

2019-09-17 18:51发布

我打电话会话bean的方法从客户端传递方法参数时,有一个问题,

应用中,数据到达的方法调用总是空或设置为默认值。

而该方法的过程中与所述对象工作良好

例如:

- 我们有方法来存储一个对象实体传递addStudent(学生的学生); - 从客户端,我们创建学生对象设置学生领域,如学生姓名等,调用方法传递addStudent(ourStudent); 此ourStudent达到法的空值或默认值的字段。 学生加入这些空字段。

提前致谢。

Answer 1:

您正在使用的EclipseLink拥有织造,而这是行不通的。 你应该尝试不织布。 可能是编辑persistence.xml (S)

<persistence-unit name="XXX" transaction-type="XXX">
    <jta-data-source>XXX</jta-data-source>
    <jar-file>Or List of Classes or something else</jar-file>
    <properties>
      [other properties]
      <property name="eclipselink.weaving" value="false"/>
    </properties>
  </persistence-unit>

更新:有几种替代方法JPA实现可以处理的实体,这是一个没有排气列表:

  • 扩展(这是后JPA规范需要实体没有私人默认constuctor)
  • 包皮
  • 类的字节码操作(以使其符合的EclipseLink如何“想”它是)
  • ThreadLocal的代理的thingie
  • 基本反射使用特性
  • 基本反射使用的getter setter方法(如果有的话)

的EclipseLink调用字节代码注入“织”( 什么是Java字节码注入?动态编织是在做编织在“运行”) -基本类时由类加载器加载。 静态织布做部署之前,但编译后的编织。 对于的EclipseLink编织是最快的方法在性能方面,它也是其他原因的首选方法。 Unfortuneatly它往往是有点棘手的编织工作。 这是完全没有的那可能你的项目的问题,它不为很多典型项目。

如果有通过远程接口访问bean的客户,并且有作为参数或返回值传递通过该连接动态编织行不通的实体。 在大多数的生产场景,特别是如果应用程序/产品不是非常小静编织者优先考虑在动态编织反正...阅读更多关于静态VS动态编织以及如何配置它,我还没有真正找到任何最佳来源,但是这一个至少是半官方: Using_EclipseLink_JPA_Weaving

发生了什么事给你的是,该实体在一端编织和其他不织 - >绝对不能正常工作。

好消息是,你可能不必在意任何的这种织东西可言,或者您可能。 当你禁用织造,的EclipseLink回落至用于处理JPA实体的另一种方法。 还有一些功能如织启用(虽然都不需要JPA)的EclipseLink只支持。

来源: What_You_May_Need_to_Know_About_Weaving_JPA_Entities谈到的是明确的EclipseLink编织用的东西的清单:

  • 迟缓装载(间接)
  • 更改跟踪
  • 取出组
  • 内部优化

(对于他们中的一些有回退的其他方法,如果织被禁用,我猜所有,但“内部优化”)



文章来源: EJB Glassfish v3.1.2 client passed data to session bean is always null