I am new about the transactions, when I run my EJB program I got a warnning and cpu 100% usage.
I program is something like this.
I have a session bean A which can be call by client, all methods are using transaction type "required". I have an entity bean B, which called by session bean A with all method specified as required.
I have a method in bean A like below:
public void assignSameRoleAs(java.lang.String user,java.lang.String templateUser)
{
if (!user.equals(templateUser))
{
try
{
InitialContext initial=new InitialContext();
UserHome userHome=(UserHome)initial.lookup("ejb/User");
User userObject=userHome.findByPrimaryKey(user);
userObject.addRoleTypeAsUser(templateUser);
}
catch(javax.naming.NamingException ne)
{
System.out.println("ejb/User or ejb/Role is not found, ejb/User or ejb/Role is not bound to User bean");
throw new EJBException(ne);
}
catch(javax.ejb.FinderException fe)
{
System.out.println("The user or role object specified is not found in the system!");
throw new EJBException(fe);
}
}
}
and has a method in Entity bean B like below:
public void addRoleTypeAsUser(java.lang.String username) throws EJBException
{
try
{
InitialContext initial=new InitialContext();
UserHome userHome=(UserHome)initial.lookup("ejb/User");
User srcUser=userHome.findByPrimaryKey(username);
Collection srcRoleTypes=srcUser.getRoleType();
Collection targetRoleTypes=this.getRoleType();
targetRoleTypes.addAll(srcRoleTypes);
}
catch(FinderException fe)
{
System.out.println("This user specified is not found");
throw new EJBException(fe);
}
catch(javax.naming.NamingException ne)
{
System.out.println("Cannot find the specified User");
throw new EJBException(ne);
}
}
When client program call the method from session bean A, the machine prompt up the warning message like below, and 100% cpu usage in the computer.
Do anyone can help me this and tell me why this happened so I will not make the same mistake in the future.
13:09:10,382 WARN [TxCapsule] Transaction XidImpl [FormatId=257, GlobalId=bill/
/6, BranchQual=] timed out. status=STATUS_ACTIVE