项目启动时执行些初始化数据操作,问题是事务不能提交,这样虽然方法正常执行了但数据却没进入数据库。以下是在网上搜索的方法。
@Name("initData")
public class InitData {
@Observer("org.jboss.seam.postInitialization")
public void init() {
。。。
数据库操作
。。。。。
}
@Observer("org.jboss.seam.postInitialization")表明项目启动成功后调用init()方法,这是没法提交事务的,因为这时还没有启用事务的自动提交框架。
我认为有两种解决办法 1)通过ejb(成功验证) 2)定时任务(理论上,没有验证)
ejb方式
@Local
public interface InitDataLocal {
public void init();
}
@Stateless
@Name("initData")
public class InitData implements InitDataLocal {
@In
private EntityManager entityManager;
@Observer("org.jboss.seam.postInitialization")
public void init() {
。。。
数据库操作
。。。。。
}
原因分析:同一ear中ejb的启动是早于web的,这样和正常调用ejb没什么区别,ejb本身的事务来保证他的提交。
定时任务
示例代码
@Observer("org.jboss.seam.postInitialization")
public void init() {
schedule;//60秒后执行
Events.instance().raiseTimedEvent("initTimer", schedule)
}
@Observer("initTimer")
public void initTimer(){
。。。
数据库操作
。。。。。
}
分享到:
相关推荐
- **建立一个新的Eclipse项目**:通过 Eclipse 创建 SEAM 项目。 - **创建新动作**:添加新的业务逻辑。 - **创建有动作的表单**:实现表单验证和提交。 - **从现有数据库生成应用程序**:利用现有的数据库架构自动...
3. **CRUD操作**: 使用Seam的EntityManager来执行数据库的增删改查操作,Seam会自动处理事务管理。 **五、部署与测试** 1. **配置服务器**: 在JBoss Studio中添加和配置JBoss服务器实例,确保服务器配置与项目匹配...
- **创建项目**:在 Eclipse 中创建一个新的 Java 项目。 - **导入模板**:使用 seam-gen 生成的模板初始化项目。 **2.3 创建新动作** - **定义动作**:通过 seam-gen 自动生成的动作模板定义新的动作类。 - **...
需要注意的是,一旦执行该命令,就不能恢复项目,因此在使用时需谨慎操作。 5. **`deploy`** - **命令示例**:`seam.bat deploy` - **作用**:将项目(打包成EAR或WAR格式)及其数据源部署到JBoss服务器上。 6....
只需将示例项目导入到JBoss AS环境中,即可启动并测试示例应用。 ##### 1.1.2 在Tomcat上运行示例 同样地,在Tomcat环境下运行Seam示例也非常简单,不需要额外的配置步骤。只需要按照标准的Web应用部署流程,将...
在Seam中,实体类通常与数据库表相对应,通过Seam提供的持久化机制(如Hibernate)进行数据的存取操作。 ##### 1.2.1.2 The stateless session bean class: RegisterAction.java RegisterAction类是一个无状态会话...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
在这个"remoting-jpa-testprog"项目中,我们可以期待看到如何在JBoss AS 7上配置和部署一个应用,该应用利用Seam Remoting进行远程方法调用,并使用JPA和Hibernate来管理持久化数据。开发者可能已经创建了一个简单的...
2.2 启动Java Persistence项目 2.2.1 使用Hibernate Annotations 2.2.2 使用Hibernate EntityManager 2.2.3 引入EJB组件 2.2.4 切换到Hibernate接口 2.3 反向工程遗留数据库 2.3.1 创建...
在Unix/Linux系统中,执行该脚本即可启动服务器。 - **1.2.4 停止服务器**:停止服务器同样简单,只需执行`bin/shutdown.sh`(Unix/Linux)或`bin/shutdown.bat`(Windows)即可。 - **1.2.5 在Microsoft Windows...