高分请教java.sql.SQLException: The transaction is no longer active

hoptyy 2005-03-17 02:14:58
调用的时候第一次没错,第2次报java.sql.SQLException: The transaction is no longer active - status: 'Committed'. No further JDBC access is allowed within this transaction.
我都要疯了,帮我看看吧

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;
import com.tyy.pub.DbCon;
import java.sql.Connection;
import javax.naming.Context;
import java.util.Hashtable;

public class LoginBean
implements SessionBean {
SessionContext sessionContext;
Connection con=null;
public void ejbCreate() throws CreateException {
/* try {
con = DbCon.getConnection();
}
catch (Exception ex) {
throw new CreateException(ex.getMessage());
}*/
try{
Hashtable hs=new Hashtable();
hs.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
hs.put(Context.PROVIDER_URL,"t3://localhost:7003");
Context ctx=new javax.naming.InitialContext(hs);
javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup("hop");
con=ds.getConnection();

}catch(Exception ex){
ex.printStackTrace();
}
}

public void ejbRemove() {
}

public void ejbActivate() {
}

public void ejbPassivate() {
}

public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}

public String CheckLog(String user, String pwd) throws Exception{
try{
String name=user.toUpperCase();
String p=pwd.toUpperCase();
java.sql.Statement st=con.createStatement();

java.sql.ResultSet rs=st.executeQuery("select name,password from employee where employ_no='"+name+"'");

if(rs.next()){
if(rs.getString("password").equals(p)){
return rs.getString("name");
}else{
return "1";//密码 错误
}
}
}catch(Exception e){
throw e;
}

finally{
try{
if(con!=null){
con.close();
}
}catch(Exception e){
}
} return "0";//用户名错误
}
}
...全文
508 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
DanielYWoo 2005-03-17
  • 打赏
  • 举报
回复
如果我没猜错的话,你的EJB是stateless session CMT的吧?
如果这样你不能把创建connection的代码放到ejbCreate里
把它放到业务方法里,比如CheckLog
因为CMT要求容器对每一个方法为单位来调用控制事务,所以你不能这样做
看看EJB的书就知道了
darkattack 2005-03-17
  • 打赏
  • 举报
回复
EXCEPTION里没有提示哪一行错吗?
shuren 2005-03-17
  • 打赏
  • 举报
回复
public void ejbCreate() throws CreateException {
/* try {
con = DbCon.getConnection();
}
}
不可以在此获得连接呀!
wenchaohu213 2005-03-17
  • 打赏
  • 举报
回复
"commited"


这个事务不存在啊
hoptyy 2005-03-17
  • 打赏
  • 举报
回复
没高手吗?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧