问题标签 [ejb-3.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1543 浏览

many-to-many - JPA 保存多对多关系的非拥有方

我有一个关于如何保存 M2M 关系的问题。一方必须始终是拥有方。在我们的场景中,我们有一个实体“角色”和一个实体“用户”。一个角色可以有多个用户,并且可以将用户分配给不同的角色。“角色”实体是拥有站点。

在 Gui 中,管理员可以将用户添加到角色。当我与分配的用户一起保存角色时,一切正常。现在我们应该提供一种为用户分配角色的方法。用于此的 Gui 没问题,但我不知道如何保存更改的角色分配。保存用户不会保存分配的角色,因为它不是拥有方。

还有另一种方法可以做到这一点吗?我不确定,但我认为这样做的唯一方法是将所选用户添加到所有分配的角色并保存角色。

0 投票
1 回答
14971 浏览

spring - 将 Spring bean 注入 EJB3

我正在尝试将 Spring bean 注入到 EJB 中,@Interceptors(SpringBeanAutowiringInterceptor.class)但我无法使用beanRefContext.xml我见过的示例使其工作。

这是我的 EJB:

我提供了一个 beanRefContext.xml 如下:

但是,它似乎是重新创建 bean 而不是获取现有的 ApplicationContext。我最终得到以下异常,因为我的 bean 之一是 ServletContextAware。

使用时SpringBeanAutowiringInterceptor,不应该获取ApplicationContext而不是创建一个新的吗?

我还尝试更改我的 web.xml,以便 contextConfigLocation 指向 beanRefContext.xml,希望它会加载我的 Spring 配置,但我最终会遇到与上述相同的异常。

有谁知道如何正确地做到这一点?我看到的示例似乎使用了我正在使用的相同方法,我认为这意味着在调用 Interceptor 时正在重新创建 bean(或者它应该如何工作并且我误解了)。

0 投票
1 回答
321 浏览

web-services - Web 服务的意义何在?

我真的不明白将 EJB 变成 Web 服务的意义。首先想到的是安全性。我如何阻止全世界使用我的商业方法?您将如何验证用户以使用服务。第二个似乎很难传递对象,或者甚至可以将列表传递到 Web 服务中。

我可以看到一些理由,例如为使用相同方法的多个应用程序提供服务。但是为什么不只是拥有一个库或部署一个包含所有业务方法的耳朵呢?

谢谢你的帮助。

0 投票
1 回答
2194 浏览

jboss - Jboss 6 集群单例集群

我正在尝试在集群环境中设置 Jboss 6,并使用它来托管集群有状态单例 EJB。

到目前为止,我们成功地在集群中安装了一个 Singleton EJB,我们的应用程序的不同入口点(通过部署在每个节点上的网站)指向托管 EJB 的单个环境(从而保持静态变量的状态)。我们使用以下配置实现了这一点:

豆接口:

豆实现:

jboss-beans.xml 配置:

这种实现的主要问题是,在主节点(包含单例 EJB 状态的节点)正常关闭后,单例的状态会丢失并重置为默认值。请注意,所有内容都是根据 JBoss 5 Clustering 文档构建的,因为没有找到关于此主题的 JBoss 6 文档。任何关于如何解决这个问题或在哪里可以找到关于集群的 JBoss 6 文档的信息都非常感谢。

0 投票
1 回答
2191 浏览

jpa-2.0 - EJB 和 JPA:在重新启动服务器之前,数据库更新不会显示在页面上

我已经用 EJB 和 JPA2 构建了一个应用程序。如果我的页面正在运行并且我更改了数据库中的某些内容,它将不会显示在页面上。我尝试了不同的浏览器、浏览器的非缓存会话等。我可以看到新数据的唯一方法是重新启动 glassfish 3.1。我已经进行了调试,显然每次都在构建一个新列表,但它获得的数据是旧的。

这是我的 findAll 方法。

glassfish/ejb 上是否有一个设置告诉它不要缓存数据库?或类似的东西。

只是想重申重新启动 Glassfish 可以解决问题。当然,直到下一次改变。

0 投票
2 回答
577 浏览

osgi - OSGI:从 ServiceListener 获取对 EJB 的引用

我使用 OSGI、Weld 和 Glassfish3.1

我有一个带有 ServiceListener 的 OSGI 模块。在 ServiceListener 中,我需要将注册的服务输入到我的数据库中。
最初我想写一个 EJB 去 DB,并在 ServiceListener 添加查找/EJB 注入,这将带来 EJB(EJB 和 ServiceListener 在同一个包中)。

但是查找/EJB 注入不起作用:


我还尝试将 EJB 作为 OSGI 服务,但没有成功。
有没有办法解决这个问题?也许我不应该用 ServiceListener 来做?

谢谢你

UPD:我找到了一种解决方案:添加一个启动单例 EJB,它注入 DAO 服务并向 OSGI 添加一个侦听器,但它从激活器的静态成员中获取 bundleContext。但它有时会抛出 IllegalStateException (bundleContext 不活动)

0 投票
2 回答
2978 浏览

servlets - 如何从 servlet 调用 EJB 3.1 非零参数构造函数?

我有一个 login.java servlet,正如它的名字所说,它为我的 Web 应用程序提供了登录工具。

我是新手,我正在使用 EJB 3.1 和 EE 6。在我的 LoginBean.java EBJ 中,我有一个无参数构造函数和另一个有一些参数(电子邮件、密码等)的构造函数。

在 servlet 代码中的某个时刻,我调用实例化我的 EJB:

我想知道是否有可能(以及如何)调用另一个构造函数而不是零参数的构造函数。

非常感谢。干杯。

0 投票
1 回答
2665 浏览

jpa-2.0 - EclipseLink/JPA2 ManyToOne 双向级联问题持续存在

这类似于How to cascade persist using JPA/EclipseLink

我必须像这样的实体。一种是 RoomEntity,它与 ComputerEntity 具有一对多的双向关系。例如。每个房间都有 0..n 台电脑。

当我尝试用这样的计算机保留一个新房间时:

roomBean 是一个无状态 EJB,roomBean.createRoom 只是调用 entityManager.persist(room)。由于我在 RoomEntity 的计算机字段上有一个 CascadeType.PERSIST,因此创建了 ComptuerEntity。但是,如果我查看该 ComputerEntity 的房间字段,我会发现该房间字段为空。我会假设 Eclipselink 会自动填充房间,因为我有一个双向关系。为了以这种方式设置房间,我必须添加

到 room.setComputers(...)。这是正确的方法还是有办法让 Eclipselink 自动设置它?

谢谢。-诺亚

0 投票
1 回答
7451 浏览

inheritance - Java EE 6 注解继承之谜

我在一些场景中使用 EJB 继承,有时在超类中使用注释,例如这个通用 entityDAO:

使用这样实现的示例子类:

我最近读到 java 注释不是继承的(来源)。这应该会导致我的 JpaDAO 在访问它的 entitymanager 或它的标准构建器时抛出一个空指针异常(因为 @PersistanceContext 和 @PostConstruct 都将被忽略),但事实并非如此。有人可以澄清这是如何工作的吗?我有点担心超类中我的@TransactionAttributes 会发生什么,当子类将NOT_SUPPORTED 作为类默认值时,我是否可以相信从子类调用时需要实际使用事务?

0 投票
3 回答
1420 浏览

jpa - 在 EJB 3.1 中调用远程 EJB

我需要从另一个具有相同 glassfish(3.1 最终版本)的 Web 应用程序调用远程无状态 EJB,它返回实体 Bean(JPA 2/Eclipselink)。我通过依赖注入(@EJB)在 Web 应用程序中获取 ejb 引用,但实体变为空。我用谷歌搜索,发现它可能是可序列化的问题。我在某个地方找到了这个

TopLink 要么在加载时修改实体类(“编织”它们),要么在运行时替换集合访问,以便能够检测延迟访问或修改的关系(如果没有这个或子类化或在运行时使用代理,就无法支持延迟加载)。这给我们带来了非常重要的一点:您不应该使用反射来访问实体,而只能通过其业务方法。当编织实体在服务器上序列化并在没有编织其相应实体的客户端上反序列化时,serialVersionUID 将不匹配,因为值的计算包括类字段和方法。

那么我需要在我的应用程序上进行 DTO 转换吗???