为什么会话Bean方法抛出EjbTransactionRolledbackException,而RuntimeException却被抛出?
我试图通过约束验证坚持实体, 当调用持续存在时 - 抛出的限制是命令,呼叫者得到EjbTransactionRolledbackException ... 因此,我尝试将验证拨打明确调用,然后投掷ConstraintViolationException/RuntimeException,但呼叫者仍然获取EjbTransactionRolledbackException ... 当我投掷MyException扩展Exception时 - 呼叫者获取MyException 即使我致电显式sc.setRollBackOnly它仍然发生:( 这不应该是行为. 发生了什么事? 配置: Netbeans 6.9.1 玻璃鱼3.0.1 JPA 2.0(Eclipselink) EJB 3.1 谢谢!!! @Stateless public class My { @PersistenceContext EntityManager em; @Resource
6 2024-03-29
编程技术问答社区
最多等待X秒的异步EJBs
我有一个"客户端" EJB调用4 Asynchronous EJB s,应该给它们全部5秒钟以运行. 5秒钟后,"客户端" EJB从完成运行的Future对象中收集就绪结果,并返回输出. 我在客户端部分中的"等待"有问题.我试图调用future.get(5, TimeUnit.MILLISECONDS) 有时似乎异步EJB s 在超时后开始运行. 有正确的方法吗? 1)收集Future Map中的对象: Map futureMap = new HashMap(); for (String userID: users) { Future> test = util.asyncGetData(userID); futureMap.put(serviceID, test); } return fu
12 2024-03-18
编程技术问答社区
有什么方法可以知道EJB异步进程的进度吗?
我正在尝试从EJB异步过程中获得进度的百分比.这可能吗? 有人知道我该怎么做? 解决方案 要了解异步过程的进度总是很棘手的,尤其是如果您不知道它们是否真的开始. 我发现的最好的方法是编写另一个仅获得进度的功能,因此,如果您对每个调用都有一些唯一的ID,则使用当前过程更新hashmap.您可能需要查看并发hashmap( http://download-llnw.oracle.com/javase/1.5.0/docs/api/java/java/util/concurrent/concurrent/concurrenthashmap.html ) 然后,此其他查找功能将仅获取唯一的ID,然后将进度返回给客户端. 如果尚未启动,您也可以返回,理想情况下,您可能还需要返回处理中出现的任何错误消息. 然后,当它完成后,您返回了错误消息或成功,然后将其从hashmap中删除,客户端获得了信息,并且该信息不会更改,因此没有任何意义. 更新: 在您的
10 2024-03-18
编程技术问答社区
是否可以在一个EJB 3 Bean中同时使用@WebService、@Stateless和@Singleton?
我正在使用EJB 3和JBOSS为6.0.0. -final.我有一个无状态的会话bean,带有注释@Stateless和@WebService.当我添加注释@Singleton时,部署发生了错误显示消息: ...名称= ServiceBean,Service = EJB3已经安装 我该怎么做才能避免部署错误? 解决方案 您可以在同一bean中使用@webservice和@stateless或@webservice和@singleton,如果您想将POJO揭露为Web服务和EJB. 在同一bean中使用@Stateless和@singleton并没有太大的意义.当您使用@Singleton时,您正在创建一个具有所有EJB功能(交易管理,安全等)的EJB,就像@stateless一样.唯一的区别是容器如何管理EJB生命周期: @stateless :EJB实例是在第一个请求之后立即创建的,当请求结束时,EJB会汇总并准备好使用其他请求.但是,如果所有汇总的实
8 2024-02-26
编程技术问答社区
如何使@Schedule方法每次只被调用一次
我们正在使用@Schedule ejb注释来启动计划的作业,每x秒导入delta solr.当然,我们希望在索引中尽可能少地分时.目前,我尝试每5秒进行一次三角洲. 所以我的问题是:我可以确保仅调用一次工作吗? 因此,假设索引持续时间超过5秒,下一个时间表会呼叫等待,等到上一个时间回来? 解决方案 是.您可以使bean a @Singleton并使用
34 2024-02-26
编程技术问答社区
Java EE 6注释继承的奥秘
我在几种情况下使用EJB的继承,有时会在超级类中进行注释,如This Generic EntityDao: public class JpaDAO{ protected Class entityClass; @PersistenceContext(unitName="CarrierPortalPU") protected EntityManager em; protected CriteriaBuilder cb; @PostConstruct private void init() { cb = em.getCriteriaBuilder(); } public JpaDAO(Class type) { entityClass = type; } @TransactionAttribute(TransactionAttributeType.RE
18 2024-02-26
编程技术问答社区
只有EJB的AngularJS应用程序
是否可以直接使用EJB构建AngularJS应用程序而无需将其视为REST服务?我在网络上的示例上看到的是,最终您必须使用REST服务向AngularJS提供数据.因此,您将不得不将EJB方法视为恢复的服务,以使其能够与AngularJS一起使用.有没有这样做的方法?如果有的话,请建议并提供一些帮助资源.我们正在使用EJB 3.1,而IBM为8.5. 解决方案 首先,您必须有一个接口才能访问您的EJB方法. 如果您正在启动一个新项目,我强烈建议使用REST 或 WebSocket 方法.可以在此处找到有关使用Angularjs使用WebSocket的websocket的进一步阅读(尽管使用Wildfly)可以在此处找到: http://mgreau.com/posts/2013/11/11/javaee7-websocket-angularjs-wildfly.html 还有一些叫做 angularfaces github上的项目: https://github
28 2024-02-24
编程技术问答社区
远程客户端操作的WildFly EJB调用失败,状态为等待
以下是我调用EJB的代码,但是它等待连接并失败.我将端口更改为4447,但没有运气. private DataGridService lookupRemoteEJB() throws NamingException { Context context = null; try { Properties clientProperties = new Properties(); clientProperties.put("remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED", "false"); clientProperties.put("remote.connections", "default"); clientProperties.put("remote.connection.default.port", "44
82 2023-12-04
编程技术问答社区
在不同的应用程序中从jsf第二次调用远程EJB3 Bean-未设置代理权
第二次从我的JSF托管bean调用我的远程EJB时,我会得到一个奇怪的例外.首次调用Bean时,结果将返回到屏幕.但是,如果我点击第二次调用EJB的操作,则会得到以下例外: SystemErr R java.rmi.RemoteException: CORBA BAD_OPERATION 0x0 No; nested exception is: org.omg.CORBA.BAD_OPERATION: The delegate has not been set! vmcid: 0x0 minor code: 0 completed: No [10/06/13 09:35:26:341 BST] 00000041 SystemErr R at com.ibm.CORBA.iiop.UtilDelegateImpl.mapSystemException(UtilDelegateImpl.java:330) [10/06/13 09:35:26:3
14 2023-12-03
编程技术问答社区
EJB 3.1的异步方法和线程池
我需要使用EJB 3.1的每天处理约250.000个文档,以面对整个长期任务. 我这样做是为了使用更多线程并同时处理更多文档.这是伪代码中的一个示例: // this returns about 250.000 documents per day List documentList = Persistence.listDocumentsToProcess(); for(Document currentDocument: documentList){ //this is the asynchronous call ejbInstance.processAsynchronously(currentDocument); } 假设我有一个尺寸为10和4个核心处理器的线程池,我的问题是: 应用程序服务器可以同时处理多少个文档? 当池中的所有线程都在处理文档并且还有一个异步调用时,会发生什么?这会像JMS队列一样工作吗? 我是否
20 2023-12-03
编程技术问答社区
WebSphere 如何管理 EJB jars 的启动顺序?
当耳朵包含两个EJB模块Modulea.jar和Moduleb.jar时. Modulea.jar包含一个@startup ejbx,该@Startup ejby在bean x启动期间从moduleb.jar中播放了另一个不是@startup ejb无法将X注入Y.但是如何确保首先启动该模块. 目前,我在WebSphere中遇到了这个问题,但是我似乎找不到一种执行订单的方法.规格中有什么可以管理订单吗? 或特定于WebSphere(虽然没有供应商锁定).也许在不同模块中使用启动EJB和EJB是一个糟糕的设计,也欢迎对此进行一些见解. 解决方案 可以通过模块配置(Enterprise Applications > YourApplication > Manage Modules > ejbmoduleb.jar) 在Starting weight中进行配置 开始体重 指定服务器时启动模块的顺序 开始.最低起始重量的模块首先开始. 如果您需要整个应用程
42 2023-12-03
编程技术问答社区
在websphere Getting ClassCastException中查找本地EJB的正确方法
我有一个由本地和远程界面暴露的EJB package com.sam.enqueue; import javax.ejb.Local; import javax.ejb.Remote; import javax.ejb.Singleton; @Singleton @Local(SamEnqueueLocal.class) @Remote(SamEnqueueRemote.class) public class SamEnqueue implements SamEnqueueRemote, SamEnqueueLocal { } // remote interface package com.sam.enqueue; import javax.ejb.Remote; @Remote public interface SamEnqueueRemote { } // local interface package com.sam.enqueue; @Local p
28 2023-12-03
编程技术问答社区
带有Hibernate的WebSphere Embeddeble EJB容器抛出java.lang.ClassNotFoundException:com.ibm.WebSphere.jtaextensions.SynchronizationCallback
我正在使用WebSphere 8的可嵌入EJB容器为我的EJB使用Junit4编写一些单元测试.我在MyeClipse中有一个简单的Java项目,我参考了EJB项目. EJB项目使用Hibernate 3.5进行持久性和Hibernate.cfg.xml中的DataSource Jndi是JDBC/ConnectionName,它在可嵌入容器的属性中定义. . 可嵌入的容器成功启动,可以成功找到EJB,并且还可以成功找到数据源.但是,在EJB方法的任何第一个方法上,以下例外是抛出的: org.hibernate.HibernateException: java.lang.ClassNotFoundException: com.ibm.websphere.jtaextensions.SynchronizationCallback at org.hibernate.transaction.WebSphereExtendedJTATransactionLookup$Transac
84 2023-12-03
编程技术问答社区
@Singleton @Startup @PostConstruct方法保证在EJB可供客户端调用之前返回?
在Java EE 6应用程序上运行WebSphere 8.0的上下文中,我需要执行许多启动任务,然后才能执行任何业务方法.为此,使用@Startup,@Singleton bean似乎是一个有前途的解决方案.但是,对我来说,应用程序生命周期的样子还不清楚. EJB 3.1规格陈述以下内容: 默认情况下,容器负责决定何时 初始化单身豆实例.但是,豆开发人员可以 可选地配置Singleton以急切的初始化.如果是 启动注释出现在Singleton Bean类上,或者 Singleton已通过部署描述被指定为 需要急切的初始化,容器必须初始化 应用程序启动序列期间的Singleton Bean实例. 容器必须先初始化所有此类启动时间单元 任何客户请求都交付给任何企业Bean组件 应用程序. 在最后一句话中,初始化的究竟是什么?容器是否会等待@Startup bean的@PostConstruct方法在使客户端请求可用之前返回? 说到客户端请求,在此上下文中,EJB方法的计划执
20 2023-12-03
编程技术问答社区
'Bean没有一个不接受参数的公共构造函数'错误,尽管明显有一个?
我有一个具有非常简单的" send_email"方法的电子邮件服务EJB.尽管显然有一个不使用参数的公共构造函数,但我仍会收到标题中的错误.以下是确切的错误和类代码.这很令人困惑. 错误: [错误] cntr5007e:websphere.jaxrs.service.emailservice bean Webapiconsole#webapiconsole.war#电子邮件服务bean的类 没有不使用参数的公共构造函数. 有关错误详细信息,请参见此处(不多可见):代码: package websphere.jaxrs.service; import javax.ejb.EJB; import javax.ejb.LocalBean; import javax.ejb.Stateless; import org.apache.commons.mail.Email; import org.apache.commons.mail.EmailException; im
24 2023-12-03
编程技术问答社区
@Singleton bean未能初始化,因为它在';s标记的TransactionAttribute=不受支持
我的EJB3.1 bean初始化遇到困难,并且更具体地与由于感知到的交易回滚而失败,即使我用@TransactionAttribute(NOT_SUPPORTED)标记了bean.这应该意味着任何客户交易在bean方法条目中都暂停了直到退出(何时恢复.这绝对是我想要的交易评估. 代码和错误的"要点"如下(请注意,其中一些是手工曲折以隐藏详细信息,但都是相关和代表性的): @Singleton(name = "MyClass") @ConcurrencyManagement(value = BEAN) @TransactionAttribute(value = NOT_SUPPORTED) @Local(MyInterface.class) public class MyClass implements MyInterface { @PostConstruct public void init() throws MyException { tr
32 2023-12-01
编程技术问答社区
PayaraMicro不在EJB或ApplicationScoped上调用@PreDestroy。
我正在将战争申请从Payaraserver迁移到Payara Micro,以减少RAM使用. 我只是意识到用ctrl+c. 停止实例时未调用@predestroy 我想执行某些操作时正确关闭Payaramicro实例的正确方法. 感谢您的回答! 或Payara服务器中哪些服务停用以使用与Payaramicro一样多的RAM? 我正在使用5.183版,我还尝试了5.192. 解决方案 您使用了哪种EJB?我认为它应该在@Singleton和@Stateless上使用.我不确定Payara Micro的支持. 是如何支持的. 但是,由于Payara Micro支持Java EE Web配置文件,并且您无论如何都使用Web应用程序,因此我建议使用@WebListener通知生命周期事件. 它可以如下实现: import javax.servlet.ServletContextEvent; import javax.servlet.Serv
10 2023-11-27
编程技术问答社区
JBoss 6-Deploy ejb in war packaging
我正在尝试使用新的EJB3.1功能,其中一个人可以在.war文件中部署包装的EJB. 我正在使用Maven 2.2.1打包EJB模块,然后将EJB JAR放入战争模块中(作为依赖关系).最后的战争包含一个简单的Web.xml,没有内容,而Lib目录中的EJB JAR库.但是,尽管该应用程序已正确部署,但容器未识别出注释的EJB(@Stateless).我没有ejb-jar.xml描述符(我相信在EJB3中是可选的). 如果我自己部署EJB JAR(通过将其放在JBOSS的部署目录中),则将其部署为分配的JNDI名称. 我在这里错过了什么吗? 解决方案 我在这个问题上找到了问题.我的web.xml是2.4版本:
18 2023-11-27
编程技术问答社区
当使用JPA2时,如何对EJB进行单元测试?
您将如何进行使用JPA的EJB的单元测试?例如,如果我有一个订单实体和OrdereJB,应该计算出订单的总数(如下所示),我将如何在不触摸数据库的情况下进行单元测试EJB?另外,您将如何定义实体的值,以便您可以断言预期的计算?这是下面的一些示例代码... @Entity public class Order { @Id private long OrderId; private LineItem[] items; } 和orderejb @Stateless public class OrderEJB { EntityManager em; public double calculateOrderTotal(long orderId) { .. } } 如果我无法触摸数据库,您将如何进行计算订购方法测试?我不想实施DAO,因为我试图摆脱这种方法. 感谢您的任何帮助. 解决方案 ordereJB,秩序和lineIte
36 2023-11-07
编程技术问答社区