问题标签 [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.
asynchronous - DEADLOCK,EJB 3.1 与 Singleton 中的异步方法和 TimerService
在我的 Singleton-EJB 中,我每 2 分钟启动一次 TimerService。当客户端访问测试方法时,应用程序有时会陷入死锁。问题是,测试方法调用 EJB 内部的异步方法(请参阅 Method determineABC)。当scheduleMethod尝试创建单个操作计时器并因此尝试获取锁时,就会发生死锁(因为 hte 计时器回调方法使用 LOCK.WRITE 进行了注释)。同时,我们已经在尝试调用异步方法asynchMethod的determineABC方法中。也许是ejbLocal.asynchMethod(...);的调用还尝试获取锁。无论如何,我在这里遇到了死锁,因为从不调用异步方法。那么问题是什么?
这是一个源代码片段:
当我只使用@Schedule方法而不使用TimerService时也会发生死锁......当我不使用 Future 对象但 void 作为异步方法的返回类型时也会发生死锁。
当抛出超时异常时,死锁就解决了。当我用@AccessTimeout(2000)注释计时器方法并且这个时间结束时,调用异步方法,因此也解决了死锁。
当我将 Locktype.READ 用于计时器方法时,不会发生死锁。但为什么?异步方法调用什么?
netbeans - 如何使用 netbeans 测试 EJB?
我一直在努力尝试在 netbeans 中测试一个超级简单的 EJB 项目。我已经尝试了我的 java 书中的几个示例,还有一个我在网上找到的更简单的示例(http://javadude.wordpress.com/2010/02/22/tutorial-most-simple-test-application-for-embedded-glassfish -netbeans-哈德森/)。这是一个超级基本的 EJB,只添加了两个数字.. 就是这样!!它运行良好,但无论我如何尝试测试它,都没有任何效果。更令人费解的是,我在测试它的两台不同的笔记本电脑上遇到了两个不同的错误。显然我做错了什么......任何建议都会非常感激。
我得到的一个错误是:
测试用例:testAddNumbers(bean.MyBeanTest):导致错误没有可用的 EJBContainer 提供程序:没有找到提供程序名称。
javax.ejb.EJBException:没有可用的 EJBContainer 提供程序:没有找到提供程序名称。
另一个是:
严重:部署应用程序时出现异常 java.lang.IllegalArgumentException:无效的 ejb jar [WebTestEmb.jar]:它包含零 ejb。注意: 1. 一个有效的 ejb jar 至少需要一个会话、实体(1.x/2.x 样式)或消息驱动 bean。2. EJB3+实体bean(@Entity)是POJO,请将它们打包为库jar。3. 如果 jar 文件包含使用 EJB 组件级注解(@Stateless、@Stateful、@MessageDriven、@Singleton)注解的有效 EJB,请检查 server.log 以查看注解是否被正确处理。
显然,我的项目中确实有一个 ejb。它完全按照我上面发布的网址中的说明构建。
谢谢!
java-ee-6 - 嵌入式 Glassfish - EJB 3.1 - @Schedule
我是 Java EE 6 的新手,正在努力让一些演示应用程序最终运行。
我有一个应用程序范围的 bean,它上面有一个 @Schedule 注释,理论上应该每分钟触发一次该方法。但是,该方法似乎从未被调用过。它只是写入它被调用的日志。
我可以在嵌入式 glassfish 上使用 EJB3.1 吗?我需要做一些特别的事情来让它工作吗?
沃尔特
java - How to inject one EJB 3.1 into another EJB
I'm developping simple app where one EJB should be injected into another. I'm developping in IDEA Jetbrains IDE. But after i make @EJB annotation in Ejb local statless class my IDE highlight it with error: EJB '' with component interface 'ApplicationController' not found.
Can anyone tell Why?
jakarta-ee - EJB3 + JSF2;像有状态的一样无状态
我在 ejb 容器中有一个无状态会话 bean。如果我从 jsf2 表单调用它,它可以正常工作,但如果我再次调用该表单,它会显示我之前插入的相同数据。即使我关闭并重新打开浏览器,它也会发生。我必须等待几分钟,直到表单显示空白字段。不会为每个请求重新创建无状态会话 bean。它的行为就像一个有状态的。怎么了?
应用服务器:Glassfish 3.0.1
java - JEE6 如何在 Observer 和 Observee 之间建立联系(观察者模式)
我已经阅读了一些关于 JEE6 上的观察者模式实现的博客文章,有些事情困扰着我......我找不到任何信息 atm 所以我在那里问......
我发现了以下示例:
和
我无法理解事件消费者和事件生产者之间的链接是如何完成的......
是通过方法的命名约定吗?(“on”、“after”、“before”……这些词是有意义的)
是通过比较给定的参数(这里是 String 和 MyEvent)吗?
我不知道,也看不出还有什么……
jakarta-ee - 如何在 Java EE 6 上使用可序列化事务?
我正在学习用于事务管理的新注释,例如@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
,但我不知道如何使用SERIALIZABLE 隔离创建事务。这是否可能基于每个方法,或者我必须在整个应用程序的连接上设置它?
jakarta-ee - EE 6(GlassFish):多少个容器?多少个单例?
好的,这里仍然试图理解基本的 EE 6 概念。我希望这里有人可以帮助我。
我正在使用单个域运行 GlassFish v3 服务器 Kukla。我部署了 MyEEApp.ear,其中包含 MyEEWebApp.war、MyEJBs.jar 和 MyUtilityLibrary.jar。我的 EJB jar 包含一个名为 MySingleton 的 @Singleton bean。
然后我设置了另一个服务器,称为 Fran,并部署了相同的 EAR。我对名为 Ollie 的第三台服务器执行相同的操作。
三个完全相同的 EAR 文件部署到三个完全相同(名称和 IP 地址除外)的服务器上。
所以这是我的问题:
- 在给定的服务器上,比如 Kukla,我有多少个“容器”?EAR 是否只有一个容器?还是 WAR 和 EJB jar 也有自己的容器?
- 第一个答案的实际影响是什么?
- 就此而言,容器到底是什么?
- 我的 WAR 中的类可以使用 @EJB 注入来访问 EJB jar 中的 bean,因为它们都是同一个 EAR 的一部分吗?
- 就此而言,普通的旧 Java 类可以使用@EJB 注入,还是仅适用于其他 EJB?
- 我将创建多少个单例 bean 实例?每台服务器一个?还是只有一个?如果每台服务器一个,有没有办法保证整个集群中的“真正”单例?
- 在 GlassFish 中,我应该在哪里以及如何配置 JNDI 来查找资源?比如说,我是否可以将 EJB jar 从一台机器移动到另一台机器并让 Web 应用程序自动找到它?
- 是否可以为 EJB bean 配置负载平衡?如果是这样,怎么做?
- 那么三个 WAR 实例呢?有没有办法配置负载平衡,以便请求转到使用最少的机器上的实例?
我知道,很多问题。对于那个很抱歉!
您的帮助将不胜感激!杰夫
java - 为什么在抛出 RuntimeException 时会话 bean 方法会抛出 EjbTransactionRolledbackException
我试图通过约束验证来持久化实体,当调用持久化时 - 抛出约束并且调用者获取EjbTransactionRolledbackException
......所以我尝试显式调用验证并抛出ConstraintViolationException
/RuntimeException
仍然调用者获取EjbTransactionRolledbackException
......当我抛出MyException
扩展Exception
- 调用者得到MyException
即使我明确表示sc.setRollBackOnly
它仍然发生:(
这不应该是行为。
这是怎么回事?
配置:
Netbeans 6.9.1 Glassfish 3.0.1 JPA 2.0 (EclipseLink) EJB 3.1
谢谢!!!
java - 如何通过基于 ejb 3.1 注释的邮件发送邮件
我试图通过注入javax.mail.session
EJB 3.1@Resource
没有任何成功,我相信我错过了正确的配置(我想要基于注释的解决方案而不是 XML 描述符)
我阅读了 Java EE 6 的新规范并了解我可以在新的 Java EE 6 连接器 API 中使用以通过消息驱动 Bean 和基于注释的解决方案发送邮件,但没有包含端到端解决方案的示例。 . :(
有人可以帮助我理解/举个例子吗?