最好让EJB容器来管理事务,你的Session Bean需要实现一个
SessionSynchronization接口,它包括三个方法1.public void afterBegin()
throws EJBException,java.rmi.RemoteException
当一个新的事务开始时调用该方法,可以在方法中执行读取数据,缓存
数据字段等功能。2.public void beforeCompletion()
throws EJBException,java.rmi.RemoteException
当事务提交前调用此方法,执行写入数据等操作。3.public void afterCompletion(boolean committed)
throws EJBException,java.rmi.RemoteException
事务提交后调用此方法,committed参数用于指定事务是否成功,若不成
功则事务已回滚,否则已提交。注意:若在程序中调用了setRollBackOnly()方法,事务将会强制回滚。
SessionSynchronization接口,它包括三个方法1.public void afterBegin()
throws EJBException,java.rmi.RemoteException
当一个新的事务开始时调用该方法,可以在方法中执行读取数据,缓存
数据字段等功能。2.public void beforeCompletion()
throws EJBException,java.rmi.RemoteException
当事务提交前调用此方法,执行写入数据等操作。3.public void afterCompletion(boolean committed)
throws EJBException,java.rmi.RemoteException
事务提交后调用此方法,committed参数用于指定事务是否成功,若不成
功则事务已回滚,否则已提交。注意:若在程序中调用了setRollBackOnly()方法,事务将会强制回滚。
解决方案 »
- setMaximumSize()与setPreferredSize()怎么用??
- 关于截取字符串的问题
- struts2问题..请高手指教..
- jsp 中如何得到action中传出来的变量值
- 谁能提供一个简单的hibermnate+spring+struts开的系统源码
- 上海复旦光华信息科技股份有限公司 怎么样?
- CSDN还能不能开了
- JTable 内容刷新
- 请教!!用JBUILDERX编译打包后,里面怎么出现怪东东???????回答给分!!!斑竹莫删
- 我想用JAVASCRIPT来验证STRUTS里ACTIONFORM的数据可以吗?
- 求救!悬赏*100分*作出此题,一定要详细(给出源代码), 一定给分,谢谢!
- 关于三层结构的疑惑~
package com.softvan.session.user;import javax.ejb.*;
import javax.transaction.*;
import javax.naming.*;
import javax.rmi.*;
import java.rmi.RemoteException;import com.softvan.cmp.user.*;
import com.softvan.cmp.info.*;public class UserSessionBean implements SessionBean
{
SessionContext sessionContext;
public void ejbCreate() throws CreateException
{
/**@todo Complete this method*/
}
public void usercreate(String id,String des,String firstname,String lastname,String email,int phone) throws RemoteException
{
/**@todo Complete this method*/
try
{
Context ct = new InitialContext();
javax.transaction.UserTransaction tranContext = (javax.transaction.UserTransaction ) ct.lookup("javax.transaction.UserTransaction"); try
{
sessionContext.getUserTransaction().begin();
Context initial = new InitialContext();
Object objRefUserCMPBean = initial.lookup("UserCMPBean");
UserCMPHome usercmphome = (UserCMPHome) PortableRemoteObject.narrow(objRefUserCMPBean,UserCMPHome.class);
try
{
usercmphome.create(id,des);
}
catch(Exception e)
{
e.printStackTrace(System.out);
} Context it = new InitialContext();
Object objRefInfoCMPBean = it.lookup("InfoCMPBean");
InfoCMPHome infocmphome = (InfoCMPHome) PortableRemoteObject.narrow(objRefInfoCMPBean,InfoCMPHome.class);
try
{
infocmphome.create(id,firstname,lastname,email,phone);
}
catch(Exception e)
{
e.printStackTrace(System.out);
}
sessionContext.getUserTransaction().commit();
}
catch(Exception e)
{
e.printStackTrace(System.out);
}
}
catch(Exception e)
{
e.printStackTrace(System.out);
} }
public void ejbRemove()
{
/**@todo Complete this method*/
}
public void ejbActivate()
{
/**@todo Complete this method*/
}
public void ejbPassivate()
{
/**@todo Complete this method*/
}
public void setSessionContext(SessionContext sessionContext)
{
this.sessionContext = sessionContext;
}
}
SessionSynchronization这个接口是用在stateful session bean的状态持久化的。