Tag: ejb

如何在EJB中提交事务?

我有以下场景, public void someEjbMethod1() { for (int i=0; i=10; i++) { em.merge(arr[i]); em.flush(); } } 我需要分别合并( arr[i] )的每个对象。 因为上面的代码将提交函数末尾的所有arr[i]实例。 我想做以下事情: public void someEjbMethod1() { for (int i=0; i=10; i++) { saveObj(arr[i]); } } // should I use a transaction attribute here?? public void saveObj(SomeObject obj) { em.merge(arr[i]); em.flush(); }

如何将JDBC驱动程序链接到缺少WEB-INF文件夹的EJB项目

我在Neon Eclipse中有Enterprise Appilcation Solution,它包含EJB和Servlet项目并部署到Wildfly 10服务器。 Servlet为访问DB调用EJB。 如果我把JDBC驱动程序放在Servlet项目的WEB-INF文件夹中,一切进展顺利,但如果我将代码移到EJB并将驱动程序作为外部JAR链接(见截图),我会收到错误: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver from [Module “deployment.NeoflexBank.ear.Neoflex.jar:main” from Service Module Loader] 这是我用来访问DB的代码: public String test() { String output = “”; try { Class.forName(“com.mysql.jdbc.Driver”).newInstance(); } catch (Exception e) { e.printStackTrace(); } String url=”jdbc:mysql://localhost:3306/neoflex”; String username=”root”; String password=””; String query=”select * from clients”; Connection conn; try { conn = (Connection) DriverManager.getConnection(url, username, […]

无状态EJB实现接口注入失败

Wildfly 8.2.0 我有一个Stateless EJB和一个接口。 @Local @Stateless public class Bean implements IBean{ … } @Local public interface IBean { … } 但我得到一个WELD错误。 如果Bean没有实现接口,则没有错误。 根据https://stackoverflow.com/a/13988450/2023524和https://blogs.oracle.com/arungupta/entry/what_s_new_in_ejb ,应该没有错误。 错误: WELD-001408: Unsatisfied dependencies for type Bean with qualifiers @Default at injection point [BackedAnnotatedField] @Inject private mypackage.anotherBean.bean 更新 :我尝试了所有可能的Local组合,但它没有帮助。 只有删除接口才会出错。 @Stateless public class Bean implements IBean{ … } @Local public interface […]

无法使用资源注释在JBoss 6.1.0中注入JMS QueueConnectionFactory

我花了很多时间来解决JBoss 6.1.0的问题,在我的会话bean中注入JMS连接工厂。 我正在使用JBoss 6.1.0和默认配置文件并在debian中运行它。 剪切我的代码是: @Resource(name=”java:/QueueConnectionFactory”) private QueueConnectionFactory factory 在jboss6 / server / default / deploy / hornetq / hornetq-jms.xml中: true 在部署我的ear-file时,我收到此错误: 既没有指定任何映射名称/ lookup / jndi-name也没有任何ResourceProvider可以处理名为env / java的resource-ref:/ javax.jms.QueueConnectionFactory类型的QueueConnectionFactory 尽管队列工厂在管理控制台中可见,但它无法在我的会话bean中注入队列连接工厂。

EJB / JPA:如何使用EntityManager.persist()始终插入新记录,而不是更新

EntityManager.persist()函数正在尝试更新现有记录,但我总是需要插入一个新记录。 怎么做到这一点? 实体bean的一部分: @Entity @Table(name=”SYNC_TRIGGER”, schema=”ETL”) public class SyncTrigger implements Serializable { @Id @Column(name=”ID”) @SequenceGenerator(name = “TRIGGER_SEQ”, sequenceName = “ETL.TRIGGER_SEQ”) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “TRIGGER_SEQ”) private Long triggerId; …… 无状态bean的一部分,它保留了记录: @Stateless public class TriggerPersister { @PersistenceContext(unitName=”syncTriggerDS”) protected EntityManager entityManager; public void persistTrigger(SyncTrigger st, T concreteTrigger){ entityManager.persist(st); ……… UPD:在执行entityManager.persist(st)之前st.triggerId值为null,但是之后添加的记录的id-id被分配给该字段。

在restful WS中的dependency injection

我有简单的宁静WS @Path(“basic”) public class ServiceRS { private IServiceJAX service; @GET @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_FORM_URLENCODED) public String find(@FormParam(“searchRequest”) final String searchRequest) { //… final List response = service.find(search); //… } } 其中IServiceJAX是jax-webservice的@Local接口。 我可以使用注释将IServiceJAX注入ServiceRS吗? 我不想使用JNDI查找…

如何在没有重启服务器的情况下将EAR文件重新部署到Web-Logic?

我在Web-Logic(10.3.6)上成功部署了EAR文件(包括WAR文件和EJB jar文件)。 现在,我更新了EAR文件并重新部署,请按照以下步骤操作:删除服务器上的旧文件并安装新的EAR文件而不重启服务器。 每个文件都已部署在活动状态。 但我得到了一些与EJB注入相关的exception。 然后我重新启动Web逻辑,我的应用程序运行正常。 重新部署方式有什么问题? 在此先感谢任何帮助……

Java EJB JNDI Bean查找失败

我有以下结构: 4.0.0 com.screening screening 1.0-SNAPSHOT pom Screening Java Parent Module1 Module2 org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.6 1.6 ${endorsed.dir} org.apache.maven.plugins maven-ejb-plugin 2.3 3.1 org.apache.maven.plugins maven-dependency-plugin 2.1 validate copy ${endorsed.dir} true javax javaee-endorsed-api 6.0 jar 以上是pom,它是以下模块的父级: com.screening screening 1.0-SNAPSHOT 4.0.0 com.screening module1 1.0-SNAPSHOT ejb Module1 com.screening screening 1.0-SNAPSHOT 4.0.0 com.screening module2 1.0-SNAPSHOT ejb Module2 我有一些无状态的bean,例如: @Stateless @Local public […]

DDD和应用层

应用程序层(应用程序服务)是否在DDD中添加了@ Stateful,@ Stateless,@ WebService等? 从下面的链接看,这似乎是正确的。 第二个问题:我已经创建了一个存储库类,如果所有涉及存储库的方法调用都是在应用程序服务中进行包装吗 或者我可以直接使用存储库类,比如在JSF中支持bean吗? 何时以及我将什么放在应用程序层中。 我不明白EJB在这个艺术中的位置。 应用层:此层协调应用程序活动。 它不包含任何业务逻辑。 它不保存业务对象的状态,但它可以保持应用程序任务的进度状态。 http://www.infoq.com/articles/ddd-in-practice

Glassfish 4通过独立应用程序访问EJB

我试图通过JSE Standalone应用程序访问EJB。 在查找过程中找不到JNDI名称时,我一直在苦苦挣扎。 经过一些没有任何解决方案的研究后,我在Glassfish服务器日志中找到一条消息后发现: “[glassfish 4.1] [INFO] [AS-EJB-00054] [javax.enterprise.ejb.container] [tid:_ThreadID = 47 _ThreadName = admin-listener(4)] [timeMillis:1424811833554] [levelValue:800] [ [EJB HelloBean的可移植JNDI名称:java:global / ponteWS / HelloBean!br.com.pontews.HelloRemote,java:global / ponteWS / HelloBean!br.com.pontews.HelloBean]]]“ 我尝试了远程名称和voilá!!! 有用。 我尝试了另一个名字并没有奏效。 以下是问题: 1 – 为什么JNDI名称如此奇怪???? 有什么我可以做的,以避免在bean的名称前面的包名称? 2-直接访问bean而不是HelloRemote接口时得到的错误是什么? 这是HelloRemote: package br.com.pontews; import javax.ejb.Remote; @Remote public interface HelloRemote { public String sayHello(String name); } 这是豆: package br.com.pontews; […]