问题标签 [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 投票
2 回答
3966 浏览

java - EJB 中的 @Asynchronous 私有方法

我的 EJB 单例中有一个异步方法,它是从同一个类中的另一个方法调用的。我已经知道我不能直接调用异步方法,我必须获得一个EJB代理。问题是,我不希望异步方法在类外可见;但是当我将其设为私有时,它不会异步执行。(我使用的是 Glassfish v3。)

javadocs没有说明所需的访问级别。那么这应该被认为是 Glassfish 中的一个错误吗?

0 投票
2 回答
12861 浏览

java - 如何处理 JPA 多对一关系?

我正在设计一个收集天气数据的应用程序。我有 2 个 POJO 对象“位置”和“记录”。Location 包含有关纬度和经度以及当前天气状况的信息,Record 包含特定位置随时间推移的所有天气信息,因此与 Location 具有多对一的关系。我拥有的类的定义如下:

位置.java

和 Record.java

我传入的数据形式为:

现在每当我得到一条记录时,我都想将它插入到记录表中。由于我有 Location 的外键,我还将添加 Location 表的 locationId。另一件事,位置表没有预先填充。因此,每当有新记录出现时,我首先将其插入 Location 表中,然后使用外键填充 Record 表。而且我不想在位置表中重复位置条目。如您所见,位置表还将包含最新的温度、风速和风向数据。

我正在使用以下代码来实现这一点:

但是通过这样做,正在发生的事情是位置正在被复制。这意味着我在位置表中有多个相同经度和纬度但温度、风速数据不同的条目。我想要完成的是一个纬度和经度的单一条目,并使用最新数据更新风速、温度和风向字段。

请帮忙!

0 投票
2 回答
3810 浏览

jakarta-ee - Add Java EE Security Roles dynamically without using deployment descriptor

I'm developing a Java EE 6 application using Glassfish 3.1, B06. To secure my app, i'm using a JDBCRealm and programmatic security. This works fine to check username and password. But when it comes to declaring security roles, i have a problem:

To use Security Roles in Java EE 6, i have to declare those roles both in the EJB deployment descriptor and in the Glassfish-specific deployment descriptor to link those roles (as explained in the Java EE 6-tutorial) Only than i can use the method isCallerInRole(String roleRef) inside an EJB to check permissions.

This is not desirable for my application, as i want that its possible to add Security roles both dynamically and programmatically, without having to write XML files (and for example make it possible to define role names in a database).

I just debugged through the GF3-source code and saw the implementation of isCallerInRole in com.sun.ejb.containers.EjbContextImpl. There the container gets the roles out of the EJB descriptor:

I looked around and found out that if i could somehow get the EJB descriptor inside my application, i could add a role like this:

Anyone did something like this, or got some thoughts about it? Is it possible to use the Ejb deployment descriptor inside my application? Or are there better approaches?

P.S. or should i use MBeans to add Roles? Found a quite related post here.

0 投票
3 回答
1353 浏览

java - 使用 JPA2 时如何对 EJB 进行单元测试?

您将如何对使用 JPA 的 EJB 进行单元测试?例如,如果我有一个 Order 实体和 OrderEJB,它应该计算订单的总数(定义如下),我将如何在不接触数据库的情况下对 EJB 进行单元测试?此外,您将如何为您的实体定义值,以便您可以断言预期的计算?下面是一些示例代码...

和一个订单EJB

如果我无法访问数据库,您将如何对 calculateOrderTotal 方法进行单元测试?我不想实现 DAO,因为我正试图摆脱这种方法。

谢谢你的帮助。

0 投票
2 回答
4046 浏览

singleton - 我可以用 EJB 3.0 制作自己的单例无状态 Bean 吗?

现在,在 EJB 3.1 中,我们可以找到 javax.ejb.Singleton 注释,它可以确保这个 bean 将是单例的。

有没有一种方法可以确保在 EJB 3.0 中使用无状态 bean 并在我的代码中进行一些修改(使用关键字 static 或其他方式来做到这一点......)

0 投票
1 回答
1084 浏览

maven-2 - 我是否需要安装 glassfish 服务器才能将其用作应用程序中的嵌入式服务器?

我正在尝试在我的 ejb3.1 项目中使用 glassfish 作为嵌入式服务器。下面是我的 Maven 依赖项。但是当我运行测试时,它无法部署 ejb 模块。我需要设置 javaee.home 还是更多变量?

例外是..

0 投票
3 回答
11863 浏览

java - EJB 3.1 @Schedule 可以在应用程序代码之外配置吗?

如何配置计划间隔:

@Schedule(persistent=true, minute="*", second="*/5", hour="*")

在应用程序代码之外?

  1. 如何在 ejb-jar.xml 中配置它?
  2. 我可以在应用程序之外配置它(属性文件的种类)吗?
0 投票
1 回答
1767 浏览

java - 当我想将 EJB 公开给同一应用服务器上的不同应用程序时,是否需要使用 @Remote?

我在耳朵中成功部署了一个@Stateless @Local Bean。当我浏览 JNDI 树时,我可以看到新的 EJB 3.1 标准全局 JNDI 名称。(java:global/product/product-ejb/ProductManagement)

我想在同一个应用服务器上的不同应用程序中使用这个 EJB。我需要为此 EJB 添加远程接口吗?

0 投票
2 回答
15710 浏览

java - 异步方法的默认 EJB 事务模式?

  1. 当我@Asynchronous在 EJB 中有一个方法,但我没有指定@TransactionAttribute,那么容器究竟如何处理事务边界?显然,它不能使用调用线程的事务,那么它是做什么的呢?

  2. 同样的问题,但关于由 TimerService 触发的方法。


编辑:我认为我的措辞很糟糕。我已经知道默认模式是“需要”。因此可以安全地假设这些方法将始终在事务中调用。但我的问题是,该交易的生命周期是什么样的?容器是否为每个调用创建一个新事务?或者它是否对异步工作线程上的所有调用重复使用相同的事务?如果是后者,那么交易何时关闭?

0 投票
2 回答
5153 浏览

transactions - 在 Java EE 中调试事务

我有一个@Stateless EJB 方法,其中我

  1. remove()使用 JPA 从数据库中删除一些条目
  2. 抛出一个注释为的异常@ApplicationException(rollback=true)

我对该方法没有其他特定于事务的注释(我设置@TransactionAttribute(TransactionAttributeType.REQUIRED)了,但无论如何这应该是默认值!)。事务是容器管理的。JPA 提供者是 EclipseLink。

而且,当抛出异常时,事务不会回滚。例如。我在回滚之前从数据库中删除的条目不会回来。顺便提一句。我在抛出之前调用 entityManager.flush(),它会导致这种行为(它不应该)吗?

我也尝试调用SessionContext.setRollbackOnly(),结果相同。

我该如何调试这个问题?

我正在使用 Glassfish v3 和 Netbeans 进行调试,但我对 println 也同样满意,我只是不知道把它们放在哪里......