Tag: ejb 3.0

EJB3 DataSource DataSource.getConnection

在CMT J2EE环境(容器管理事务)中,当我JDNI查找DataSource对象并调用DataSource.getConnection时,使用什么事务/连接? 这个连接是(可能是分布式的)交易的一部分吗? 每次我为同一个DataSource对象调用时, getConnection()是否返回相同的Connection? 我只知道使用本机SQL语句由同一个EntityManager使用Connections。 这让我感到困惑。 据我所知,SessionContext定义了一个每次使用数据源时都使用的事务系统。 我有一个问题,在会话bean内部使用DataSource.getConnection() ,然后关闭此连接。 如果遇到问题,则发出SessionContext.setForRollBack(true) 。 因此,服务的事务上下文如何与DataSource相关? 如果我们每次使用数据源或者至少查找数据源时都会生成一个新的Connection,那么我就会有一些问题需要理解我已经知道的事情。 任何澄清都会很精彩。 我知道容器管理的事务和其他系统,但DataSource的实际行为完全超出了我。

我如何从EJB3和JBoss开始?

我想进入ejb3以获得一些写作练习。 我搜索了教程和方法,但可以找到一些稀缺无益的信息。 我正在寻找一个教程或演练,它将指导我从基础知识(我需要安装哪些软件?)中为JB3编写EJB3的“Hello World”。 简而言之 – 我从哪里开始? 谢谢!

EntityManager.flush()在Java Web服务中提交事务

编辑 : 谢谢大家的答案,但问题出在我的数据源配置,实际上是在自动提交模式。 请参阅下面的答案了解详情。 EntityManager.flush()方法的Javadoc和在Google中搜索它似乎都表明flush方法只将挂起的语句发送到数据库并且不提交事务。 但是我创建的一个简单的测试Web服务(在Java 7中,Oracle 11gR2,JBoss 7.1和Web服务被打包为jar文件)似乎表明不是这样的: 这是表创建脚本: CREATE TABLE test( id INTEGER NOT NULL, name VARCHAR2(20), CONSTRAINT test_pk PRIMARY KEY (“ID”) ); CREATE SEQUENCE test_seq; 这是相应的实体: @Entity @Table(name = “TEST”) public class Test implements Serializable { private static final long serialVersionUID = 9192814682033048425L; @Id @Column(name = “ID”) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = […]

EJB3 – 通过注入和查找获取bean – 有什么区别,含义,陷阱?

我知道有两种获取EJB实例的方法: 通过@EJB注释在servlet和EJB中进行dependency injection 通过Context.lookup在任何地方进行JNDI查找 使用这两种方法有什么不同,含义和陷阱? 它们是一样的吗? dependency injection比查找更快吗? 那么事务处理和对象生命周期管理呢? 我所知道的事情包括: 注解 仅适用于servlet和EJB 方便的语法 容器独立 抬头 可以在运行时以编程方式实例化EJB接口的不同实现。 适用于任何地方 – 例如POJO。 取决于容器的命名约定

是否可以使用@EJB注释通过不同的服务器注入EJB?

我有2个会话bean,OrderBean和InventoryBean,它们部署在不同的weblogic服务器上。 OrderBean需要访问InventoryBean以检查供应是否足够。 目前,我使用JNDI查找找到InventoryBean,它工作正常。 现在我想知道是否可以通过在xml或其他地方提供JNDI名称和URL来使用@EJB来注入InventoryBean。

如何在自定义Converter内部访问EJB bean

这个converter是从我的JSF调用的。 我已经在faces-config.xml注册了它 public class ProjectConverter implements Converter{ @EJB DocumentSBean sBean; @ManagedProperty(value=”#{logging}”) private Logging log; public ProjectConverter(){ } public Object getAsObject(FacesContext context, UIComponent component, String value) { if(value.trim().equals(“”)){ return null; } return sBean.getProjectById(value); } public String getAsString(FacesContext context, UIComponent component, Object value) { if(value == null){ return null; } return String.valueOf(((Project) value).getId()); } } 我遇到java.lang.NullPointerException ,当我在getAsObject() […]

两个相关JPA实体之间的接口

场景如下(显示的表格) Delivery table —— id channelId type 10 100 fax 20 200 email Fax table —- id number 100 1234567 101 1234598 Email table —– id email 200 a@a.com 201 b@b.com 基本上是交付和渠道实体之间的一对一关系,但由于每个具体渠道(传真,电子邮件)都有不同的成员,我想在两个实体之间创建一个通用接口(通道),并将其用于@OneToOne关系。 在我看来这是一个简单的场景,你们很多人可能已经经历过,但我无法成功。 我试过把那个targetEntity的东西但没有用。 仍然说“交付引用一个未知的实体” 有任何想法吗? 提前致谢

事务TransactionImple ActionStatus.ABORTED已经回滚

我意识到将DTO业务从TomEE迁移到JBoss。 我有这个实体: @NamedQueries({ @NamedQuery(name = “common.plagebusiness.plage.getAllPlages”, query = “SELECT p FROM Plage p ORDER BY p.plageRgMax, p.plageCReseau”) }) @Entity @Table(name = “PLAGE”) public class Plage { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = “idPlage”) private Integer idPlage; @Column(name = “rgMin”) private String plageRgMin; 有了这个界面: @Local public interface PlagePersistenceManager { public void importPlages(List listeEnregDetail) throws PlageBusinessException, ParseException; […]

如何正确配置嵌入式OpenEJB容器以进行测试?

这是我的SLSB: @Stateless public class MyService { PersistenceContext(unitName = “abc”) EntityManager em; public boolean exists(int id) { return this.em.find(Employee.class, id) != null; } } 这是我的persistence.xml (我正在使用Glassfish v3): org.hibernate.ejb.HibernatePersistence java:/MyDS 现在我正在尝试使用OpenEJB嵌入式容器创建测试。 这是我的测试类: class MyServiceText { @Test public void testChecksExistence() throws Exception { Properties properties = new Properties(); properties.setProperty( javax.naming.Context.INITIAL_CONTEXT_FACTORY, “org.apache.openejb.client.LocalInitialContextFactory” ); InitialContext ic = new InitialContext(properties); // […]

服务器启动时调用方法

我正在尝试在我的webapplication启动时调用方法。 目的是启动定时器,该定时器以定义的间隔进行一些工作。 当我的jboss 7.1 Web应用程序启动时,如何调用函数helloworld?