Stateless bean transaction rollback

HI Friends
          Iam using a stateless bean.In which some of the methods are in
          transaction having transaction attribute is "supports". Now i have a method
          A which is updating some table and iam calling another method "B" which is
          updating another table.but B method is using another connection. Iam using a
          txdatasource. If methods are in transaction if any exception occurs it
          should rollback.But is was not happening.
          A() {
          new connection();
          con.close()
          B()
          new Connection()
          con.close();
          can u help me
          

Thank you Salvo.I think the only way is to pass the same connection to the
          private method.
          "Jesus M. Salvo Jr." <[email protected]> wrote in message
          news:[email protected]...
          > AFAIK, no, because the container does not know about those methods. The
          > public methods in the remote interface are the only methods that the
          > container manages transaction for. Besides, why would the container handle
          > transcation for private methods when private methods cannot be called
          > remotely?
          >
          > However, calling a private method internally within method that was called
          > remotely will make the container treat them as one transaction. Your
          > private method should probably throw a SQLException, which your public
          > method catch and rethrow as an EJBException.
          >
          > Jetty wrote:
          >
          > > Other method is private method.
          > > It is possible to set transaction attribute for private methods.?
          > >
          > >
          > > "Jesus M. Salvo Jr." <[email protected]> wrote in message
          > > news:[email protected]...
          > >> In SLSB, one method is one transaction .... unless of course that
          method
          > >> was called by another EJB that started the transaction. It then depends
          > >> on how you haved setup your TX attributes.
          > >>
          > >> If the method in the SLSB was called from say a servlet, and the bean
          is
          > >> a container-managed transaction, then that method call is one
          > >> transaction.
          > >>
          > >>
          > >> Jetty wrote:
          > >>
          > >> > Update statements in each method will it come under one transaction.?
          > >> >
          > >> > "Jesus M. Salvo Jr." <[email protected]> wrote in message
          > >> > news:[email protected]...
          > >> >> How did you A call B?
          > >> >>
          > >> >> 1) Did you do create another instance of the SLSB and call B?
          > >> >>
          > >> >> 2) Or did you simply call B from A via this.B() ?
          > >> >>
          > >> >> If its 1), then each method will be handled separetely by the
          > > container.
          > >> > If
          > >> >> its 2), the container will only see your call to A, therefore just a
          > >> > single
          > >> >> transaction.
          > >> >>
          > >> >> Weblogic news server wrote:
          > >> >>
          > >> >> > HI Friends
          > >> >> > Iam using a stateless bean.In which some of the methods are
          > >> >> > in
          > >> >> > transaction having transaction attribute is "supports". Now i have
          a
          > >> >> > method A which is updating some table and iam calling another
          method
          > >> >> > "B" which is updating another table.but B method is using another
          > >> > connection.
          > >> >> > Iam using a txdatasource. If methods are in transaction if any
          > >> >> > exception occurs it should rollback.But is was not happening.
          > >> >> > A() {
          > >> >> > new connection();
          > >> >> > con.close()
          > >> >> > }
          > >> >> > B()
          > >> >> > ()
          > >> >> > {
          > >> >> > new Connection()
          > >> >> > con.close();
          > >> >> > }
          > >> >> >
          > >> >> > can u help me
          > >> >> >
          > >> >> >
          > >> >> >
          > >> >>
          > >> >
          > >> >
          > >> >
          > >>
          > >
          > >
          > >
          >
          

Similar Messages

  • Session Bean Transaction Rollback not working for RuntimeException

    Hi,
    I am calling a number of JDBC create/update statements within a method in a container managed transaction stateless session bean with transaction attribute set to required. I am running the bean within the embedded OC4J supplied with JDeveloper 10g (10.1.2). For each JDBC call, i connect to a datasource via JNDI containg a pool of connections pointing to an Oracle 10g database (standard J2EE)
    If i throw a runtime exception within the method the transaction is NOT rolled back as it should be according to the EJB spec. However, if i setRollbackOnly() on the session bean SessionContext the transaction does roll back.
    Has anybody experienced this before?
    Is this an OC4J bug?
    Thanks
    Dave

    Generally, for urgent issues it's best to open a SR with Oracle Support rather than posting to the forums.
    enlist=dynamic didnt exist in 10.2.0.2.20, but does now. I can't recall what specific version it was introduced though.
    enlist=false prevents enlistment in MSDTC transactions, so thats why it's not rolling back in that case.
    "transaction branch length 90 is illegal" was a known issue on Vista, is that the OS you're using? It takes a two part fix, and It is resolved by
    1) getting up to 10204 ODP (apply the 10204 rdbms patch to your client install)
    2) applying SP1 for Vista
    Hope it helps,
    Greg

  • Unable to rollback using BMT in a stateless bean

    Hi,
    My stateless bean contains the following testing code
    UserTranaction ut = null;
    try{
    ut = context.getUserTransaction();
    ut.begin();
    // get database connection from OracleDataSource
    // via container
    // update a recored in db
    if (true)
    throw new Exception();
    ut.commit();
    } catch (Exception e){
    ut.rollback();
    } finally {
    // close connection
    I am using oracle 817 jdbc driver and when I execute the method,
    the changes in DB are not rolledback and there is no exception
    thrown. My questions are
    1). Is BMT really work in oc4j? Anyone try before?
    2). Is there any additional conditions/setting need to be done
    in order to make BMT work? such as dataSource setting, database
    configuration...
    3). Could anyone provide sample code with related settings?
    (especially what datasoure u are using)
    Thank you very much!!!

    Have you already tried to load the class like this:
    Thread.currentThread().getContextClassLoader.loadClass(actionName);
    Instead of using the same classloader that loaded your bean implementation, it uses the classloader given to the executer thread as the context classloader.
    (In many cases this will be the same, but I don't know how this is done in the implementation of your container).

  • Performance of Session Stateless Bean in WebSphere with connection to DB

    Im using WebSphere Advanced Single Server Edition Version 4.0.1. and a WebSphere DataSource to get my connections to Microsoft SQL 2000 (using netdirect's JSQLDriver).
    For the EJB I set the transaction to 'requieresNew'.
    For testing purposes I had been testing some code I'll be using in a Session Stateless Bean inside a servlet's method. In my servlet I use one single connection and preparedStatements to improve performance.
    When I test it on the Servlet, this process takes around 3 minutes to complete, but when I put this code inside a Session Stateless Bean and call it from this servlet's method, it takes around 30 minutes to complete!. How is this possible?!
    Worst of all, when the EJB ends and the process returns to the Servlet, it throws me this exception.
    com.ibm.websphere.ce.cm.StaleConnectionException: class com.ibm.ejs.cm.proxy.PreparedStatementProxy is closed.
    The code uses some utilities from a Framework we created, but I really doubt it affects the performance since I put such classes in a jar file and the EJB is accessing such classes correctly.
    I thought that maybe I was missing something related with how I get the connection inside the EJB, but I had no luck trying to figure this out.
    This is the code in my EJB, commented code was in use when this code was tested in the method of the servlet (some code has been removed or modified, so I just left the 'main' body of the code):
    package cmx.ejb;
    import cmx.common.*;
    import java.util.*;
    import qsi.sys.db.*;
    import qsi.sys.util.*;
    import java.rmi.*;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.SQLException;
    import java.util.*;
    import javax.ejb.*;
    import javax.naming.*;
    import javax.rmi.*;
    import javax.sql.DataSource;
    * Bean implementation class for Enterprise Bean: SimuladorEJB
    public class SimuladorEJBBean implements javax.ejb.SessionBean {
         private javax.ejb.SessionContext mySessionCtx;
    private Context ctx;
    private DataSource ds;
    private static final int TCONSUMO = 4;
    private static final int CARACEQ = 6;
    private static final int PPRODUC = 9;
    private static final int PPUNTA = 12;
    private static final int UTONHR = 8;
    private static final int TPRODUCC = 3;
    private Vector val = null;
    private Vector vecArea = null;
    private String query;
    private Object[] params;
    private int numAreas;
    private int vSecDetHE;
    //All the prepared statements I'll use in my process
    private PreparedStatement pstmSelectSerial = null;
    private PreparedStatement pstmUpdateSerial = null;
    private PreparedStatement pstmgetPPEquipos = null;
    private PreparedStatement pstmgetTransfers = null;
    private PreparedStatement pstmaddRProduccion = null;
    private PreparedStatement pstmupdInventario = null;
    private PreparedStatement pstmgetServicios = null;
    private PreparedStatement pstmaddConsumo = null;
    private PreparedStatement pstmgetAreaEquipos = null;
    private PreparedStatement pstmfindCE = null;
    private PreparedStatement pstmcontEventoLogEq = null;
    private PreparedStatement pstmaddLog = null;
    private PreparedStatement pstmfindCaract = null;
    private PreparedStatement pstmfindComposicion = null;
    private PreparedStatement pstmfindCombAlt = null;
    private PreparedStatement pstmaddInventarioH = null;
    private PreparedStatement pstmgetAlmMatREM = null;
    private PreparedStatement pstmfindAlmacen = null;
    private PreparedStatement pstmcontEventoLogAlm = null;
    private PreparedStatement pstmgetAlmacenes = null;
    private PreparedStatement pstmfindInvHora = null;
    private PreparedStatement pstmgetPeriodoHorario = null;
    private PreparedStatement pstmgetProgramaCE = null;
    private PreparedStatement pstmgetProgramaPP = null;
    private PreparedStatement pstmgetProgramaParo = null;
    private PreparedStatement pstmgetPrograma = null;
         * getSessionContext
         public javax.ejb.SessionContext getSessionContext() {
              return mySessionCtx;
         * setSessionContext
         public void setSessionContext(javax.ejb.SessionContext ctx) {
              mySessionCtx = ctx;
         * ejbActivate
         public void ejbActivate() {
         * ejbCreate
         public void ejbCreate() throws javax.ejb.CreateException {
    System.out.println("ejbCreate()");
    try {
    Hashtable parms = new Hashtable();
    parms.put(Context.INITIAL_CONTEXT_FACTORY, "com.ibm.websphere.naming.WsnInitialContextFactory");
    ctx = new InitialContext(parms);
    ds = (DataSource)ctx.lookup("jdbc/datasource");
    }catch (Exception e){
    e.printStackTrace();
         * ejbPassivate
         public void ejbPassivate() {
         * ejbRemove
         public void ejbRemove() {
    System.out.println("ejbRemove()");
         pstmSelectSerial = null;
         pstmUpdateSerial = null;
         pstmgetPPEquipos = null;
         pstmgetTransfers = null;
         pstmaddRProduccion = null;
         pstmupdInventario = null;
         pstmgetServicios = null;
         pstmaddConsumo = null;
         pstmgetAreaEquipos = null;
         pstmfindCE = null;
         pstmcontEventoLogEq = null;
         pstmaddLog = null;
         pstmfindCaract = null;
         pstmfindComposicion = null;
         pstmfindCombAlt = null;
         pstmaddInventarioH = null;
         pstmgetAlmMatREM = null;
         pstmfindAlmacen = null;
         pstmcontEventoLogAlm = null;
         pstmgetAlmacenes = null;
         pstmfindInvHora = null;
         pstmgetPeriodoHorario = null;
         pstmgetProgramaCE = null;
         pstmgetProgramaPP = null;
         pstmgetProgramaParo = null;
         pstmgetPrograma = null;
    public void GenerarSimulacion(int pidSimulacion, String pfini, String pffin, int cveEntidad, int cveUsuario) throws Exception{
    System.out.println("GenerarSimulacion()");
    System.out.println("***Simulacion " + pidSimulacion + " en proceso...***");
    Calendar inicioProceso = Calendar.getInstance();//Tiempo en que empezo el Proceso
    Calendar finProceso = null;//Tiempo en que termino el Proceso
         Connection cnn = null;
    //boolean autoCommit = false;
         try{
         cnn = ds.getConnection();
    autoCommit = cnn.getAutoCommit();
    cnn.setAutoCommit(false);
         cnn.setTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED);
    pstmSelectSerial = cnn.prepareStatement("select iValor from CatConsecutivo where vcConsecutivo=?");
    pstmUpdateSerial = cnn.prepareStatement("update CatConsecutivo set iValor = iValor+1 where vcConsecutivo=?");
    pstmgetPPEquipos = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getPPEquipos"));
    pstmgetTransfers = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getTransfers"));
    pstmaddRProduccion = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.addRProduccion"));
    pstmupdInventario = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.updInventario"));
    pstmgetServicios = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getServicios"));
    pstmaddConsumo = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.addRConsumo"));
    pstmgetAreaEquipos = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getAreaEquipos"));
    pstmfindCE = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findCE"));
    pstmcontEventoLogEq = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.contEventoLogEq"));
    pstmaddLog = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.addLog"));
    pstmfindCaract = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findCaract"));
    pstmfindComposicion = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findComposicion"));
    pstmfindCombAlt = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findCombAlt"));
    pstmaddInventarioH = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.addInventarioH"));
    pstmgetAlmMatREM = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getAlmMatREM"));
    pstmfindAlmacen = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findAlmacen"));
    pstmcontEventoLogAlm = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.contEventoLogAlm"));
    pstmgetAlmacenes = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getAlmacenes"));
    pstmfindInvHora = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.findInvHora"));
    pstmgetPeriodoHorario = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getPeriodoHorario"));
    pstmgetProgramaCE = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getProgramaCE"));
    pstmgetProgramaPP = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getProgramaPP"));
    pstmgetProgramaParo = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getProgramaParo"));
    pstmgetPrograma = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getPrograma"));
    pstmgetAreaEquipos = cnn.prepareStatement(Manager.getParameter("cmx.admin.inicioSesion.getAreaEquipos"));
    Map hmEqMat = null;
    Iterator itEqMat = null;
    Map.Entry meEqMat = null;
    Map hmInvAlm = null;
    Iterator itInvAlm = null;
    Map.Entry meInvAlm = null;
    Map hmPunta = null;
    Iterator itPunta = null;
    Map.Entry mePunta = null;
    Iterator itPuntaEq = null;
    HashMap hmPuntaEq = null;
    Vector vecPuntaEq = null;
    Iterator itPPEq = null;
    HashMap hmPPEq = null;
    Vector vecPPEq = null;
    Iterator itCar = null;
    HashMap hmCar = null;
    Vector vecCar = null;
    Iterator itLog = null;
    HashMap hmLog = null;
    Vector vecLog = null;
    Iterator itCA = null;
    HashMap hmCA = null;
    Vector vecCA = null;
    Iterator itCom = null;
    HashMap hmCom = null;
    Vector vecCom = null;
    Iterator it = null;
    HashMap hm = null;
    Vector vecEv = null;
    Iterator itEq = null;
    HashMap hmEq = null;
    Vector vecEq = null;
    Vector vecSim = null;
    Date d;
    String sDSim = "";
    Date dDiaPrevio;
    String sDiaPrevio = "";
    String consulta;
    int vContador= 0;
    int hr=0;
    long vDiaPrevio = 0;
    Integer idInvH;
    Integer idProd;
    Integer idCons;
    Integer idLog;
    int vCont = 0;
    int vCiclo = 0;
    int vArea = 0;
    int vAreaAct = 0;
    int vPuntaEquipo = 0;
    // Periodo de Simulacion
    long fini = getCurrDate(pfini);
    long ffin = getCurrDate(pffin);
    // Variables Generales
    int vSecuencial = 0;
    int vEvento = 0;
    float vCostoE = 0;
    int vAlmacenREM = 0;
    // Variables de Transferencia
    float vCantidad = 0;
    int vTipoMov = 0;
    int vUMedida = 0;
    int vAlmacenTr = 0;
    float vNIni = 0;
    float vNMin = 0;
    float vNMax = 0;
    float vNAct = 0;
    // Variables de Equipos
    int vPPMaterial = 0;
    int vPPEquipo = 0;
    int vPPArea = 0;
    int vMaterial = 0;
    int vCaractEq = 0;
    int vParo = 0;
    int vEstatusParo = 0;
    int vEstatus = 0;
    float vMinPunta = 0;
    float vPorcPunta = 0;
    float vProporcion = 0;
    float vTPH = 0;
    float vGasto = 0;
    float vKwNoProd = 0;
    float vKwProd = 0;
    int vAlmacen = 0;
    // Variables de Composicion de Materiales
    int vMaterialCom = 0;
    float vPorcCom = 0;
    float vFactorCC = 0;
    int vTipoMovCom = 0;
    int vUMedidaCom = 0;
    int vAlmacenCom = 0;
    float vNIniCom = 0;
    float vNMinCom = 0;
    float vNMaxCom = 0;
    float vNActCom = 0;
    int vMaterialCA = 0;
    int vUMedidaCA = 0;
    int vAlmacenCA = 0;
    float vNIniCA = 0;
    float vNMinCA = 0;
    float vNMaxCA = 0;
    float vNActCA = 0;
    int vOk=0;
    int h=0;
    boolean vbOk=false;
    boolean swArea=true;
    Calendar dtH1;
    vecSim = new Vector();
    vecSim.add(new Integer(pidSimulacion));
    for (long ld=fini; ld<=ffin; ld=getNextDate(new Date(ld), 1))
    {   d = new Date(ld);
    //The process which calls find(), upd(), AplicaEvento() and GetCostoEnergia() methods several times.
    //The methods find() and upd() uses a util class (DataDB) which basically assigns the params to the PreparedStatement and executes it, returning the results in a Vector.
    } // for ld : Dia de Simulacion
    //Cerrar la transaccion
    }catch (Exception e){
              System.out.println("rollback...");
                   mySessionCtx.setRollbackOnly();
         System.out.println("rollback ok!");
    System.out.println(e.toString());
                   throw e;
    }finally{
    finProceso = Calendar.getInstance();
    finProceso.setTime(new java.util.Date(finProceso.getTime().getTime() - inicioProceso.getTime().getTime()));
    System.out.println("***Simulacion " + pidSimulacion + " procesada en: " + finProceso.get(Calendar.MINUTE) + ":" + finProceso.get(Calendar.SECOND) + "." + finProceso.get(Calendar.MILLISECOND) + ".***");
    try {
    if (cnn!=null && !cnn.isClosed()) {
              System.out.println("close ok?");
    cnn.close();
                   System.out.println("close ok!");
    }catch (SQLException sqle){
    sqle.printStackTrace();
    System.out.println("commit ok?");
    cnn.commit();
    System.out.println("commit ok!");
    }catch (Exception e){
    e.printStackTrace();
    System.out.println(e.toString());
    try {
    if (cnn!=null && !cnn.isClosed()) {
                   System.out.println("rollback ok?");
                             cnn.rollback();
              System.out.println("rollback ok!");
    }catch (SQLException sqle){
    sqle.printStackTrace();
    }finally{
    finProceso = Calendar.getInstance();
    finProceso.setTime(new java.util.Date(finProceso.getTime().getTime() - inicioProceso.getTime().getTime()));
    System.out.println("Simulacion procesada en: " + finProceso.get(Calendar.MINUTE) + ":" + finProceso.get(Calendar.SECOND) + "." + finProceso.get(Calendar.MILLISECOND) + ".***");
    try {
    if (cnn!=null && !cnn.isClosed()) {
                   System.out.println("autocommit ok?");
                   cnn.setAutoCommit(autoCommit);
              System.out.println("autocommit ok!");
              System.out.println("close ok?");
    cnn.close();
                   System.out.println("close ok!");
    }catch (SQLException sqle){
    sqle.printStackTrace();
    private float GetCostoEnergia(float pfKw, long plFecha, int piHora,int cveEntidad) throws Exception {
    float exito = -1;
    //calculations and has access to DB throught method find()
    return exito;
    private int AplicaEvento(int pidMaterial, int pidEvento, int pidSecuencial, int pidSimulacion, long plFecha, int piHora) throws Exception {
    int exito = -1;
    //calculations and has access to DB throught method find()
    return exito;
    private Iterator find(PreparedStatement pstm, Vector values) throws Exception {
    params = (values!=null)? values.toArray() : null;
    Vector data = DataDB.executeQuery(pstm, params); //This util class is in a external jar file, such util basically assigns the params to the PreparedStatement and executes it, returning the results in a Vector.
    return data.iterator();
    private int upd(PreparedStatement pstm, Vector values) throws Exception {
    params = values.toArray();
    return DataDB.executeUpdate(pstm, params); //This util class is in a external jar file, such util basically assigns the params to the PreparedStatement and executes it.
    Help will be REALLY appreciated!
    Thanks in advance.

    Thanks Paul for your comments.
    In fact, I call my EJB in the servlet just once. Im sure calling the same EJB. My project requieres it to be stateless.
    This is my last log
    1/2/03 13:15:00:481 CST] 17fac55b SystemOut U -ejbCreate()-
    [1/2/03 13:15:00:591 CST] 17fac55b SystemOut U jdbc/xa/oye
    [1/2/03 13:15:00:651 CST] 17fac55b SystemOut U -GenerarSimulacion()-
    [1/2/03 13:15:00:741 CST] 17fac55b SystemOut U ***Simulacion 32 en proceso...??***
    [1/2/03 13:15:01:012 CST] 17fac55b SystemOut U JSQLConnect(2.2721) Trial license - expires on:Tue Jan 07 13:01:32 CST 2003, unlimited connections
    [1/2/03 13:15:01:092 CST] 17fac55b SystemOut U Connection OK!
    [1/2/03 13:15:01:392 CST] 17fac55b SystemOut U PreparedStatements OK!
    [1/2/03 13:15:01:402 CST] 17fac55b SystemOut U Comenzando Sim...
    I forgot to mention that I create a connection (autocommit false) at the begining of my servlet, which I use throught all the servlet, then I call the EJB, and after the EJB succeds I also close the transaction in the Servlet (to commit what is on the servlet, not the EJB). Thats why I set the transaction in the EJB to requiresNew, so after the EJB ends it commits its own transaction, Am I right?.
    The Exception I get I think its because the connection used in the servlet timed out while waiting for the EJB to finish.
    This issue has become urgent, so please if you know why I have this problem reply ASAP.
    Thanks!

  • Missing cleanup() after second (local) transaction rollback

              I wrote a simple dummy ressource adapter with local and XA transaction support and
              discovered some problems when using this adapter within an stateless session bean
              that calls setRollbackOnly().
              If I configure the resource adapter for XATransaction support, everything runs fine:
              WebLogic (or its ConnectionManager) detects the transaction rollback calls my cleanup()
              method and delists the connection from the list of busy connections (so I can do
              my rollback test with this connection a often as I want).
              If I configure my resource adapter for LocalTransaction support, the connection also
              is delisted from the list of busy connections (my cleanup method also is called)
              but after a second rollback test the connection remains in the busy connection list
              (and the cleanup call is missing). So calling the rollback test a third time brings
              a ResourceAllocationException.
              I am wondering whether the "mysterious" java.lang.IllegalStateException: Cannot delist
              resource, transaction has been rolled back
              that comes within my server log has something to do with my problem.
              Attched is my server log that reflects the situation.
              Thanks for any hint,
              juergen
              [connectorlog.txt]
              

    Hi Neelam,
    I am sure what exactly your application needs for single-threaded process.
    If you have some thread context in a given thread that you need for correctly handle all message, then you may try to set max-free-pool-size to 1 on the MDB to force single threaded.
    You can find more information in MDB tuning doc at http://download.oracle.com/docs/cd/E17904_01/web.1111/e13814/mdbtuning.htm#PERFM271
    If all you need is to sequentially handle all messages and it does not matter if the processing is done in a particular thread, you could use a JMS feature called Unit-of-order (UOO) together with MDBs. JMS UOO gives you the capability of making sure all messages in one UOO group are processed sequentially and in the order that them are produced, even when there are multiple consumers or redelivery of messages due to fialures. Messages in different UOO groups can be processed in parallel.
    For more information about UOO can be found at http://download.oracle.com/docs/cd/E17904_01/web.1111/e13727/uoo.htm#JMSPG389
    The following link discusses how to process messages in order with MDBs. Re: Transaction-Rollback on foreign jms queue usin Singletonservice in weblogic
    Hope these links help you find the right solution for your application.
    Dongbo

  • How make a transaction rollback?

    Hello to everybody...
              hoew can I call a server transaction rollback ( Session Bean ,CMT ) by the client?

    Hi ,
    Call transaction SICF and Navigate to "webgui" service; then right-click and select option "Activate".transaction will work definitely.
    This should enable the WebGui functionality in your WAS.
    ITS WEBGUI in ECC6.0
    for more information , check below thread
    MY FEW QUESTIONS
    SSO with ITS & Webenabling WEBGui
    Koti Reddy

  • Transaction rollback or commit

    Hello to everybody...I'd need a solution for a probem that I 'm not able to resolve.I have a session bean on the server ( WeblogicServer 8.1 Sp3 ) and a Java Swing client.I need to break and rollback a long process on the server by client swing button pression.I have thought to create a user transaction (under a client thread process) on the client and I try to propagate it to the container ( Container Managed Transaction).Now I have to break the long time server operation at certain moment by make a rollback on the client trasaction,after the button pression.The problem is that the rollback DOES NOT ARRIVE to the server and the sever process continue to operate.How this is possible?I think that I make basic mistake,but which?Can Anyone help me please?
    thanks for help and sorry for bad english.

    whaqt I need to do is to break and rollback the transaction ( REQUIRED on the container ) by the client when I want....Whit this prototipe now I try to pass the transaction rollback operation from the client to the server,bt now the message on the server is the following:
    java.sql.SQLException: The transaction is no longer active - status: 'Marked rollback. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 33 seconds
    Xid=BEA1-00006D5145365E026810(6407574),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=1,seconds since begin=33,seconds left=30,activeThread=Thread[ExecuteThread: '23' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=started,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@f30862,re-Registered = false),SCInfo[mydomain+IRMA_Admin]=(state=active),properties=({weblogic.jdbc=t3://10.2.1.16:10004}),CoordinatorURL=IRMA_Admin+10.2.1.16:10004+mydomain+t3+)]'. No further JDBC access is allowed within this transaction.
    at weblogic.jdbc.wrapper.JTSConnection.checkIfRolledBack(JTSConnection.java:155)
    at weblogic.jdbc.wrapper.JTSConnection.checkConnection(JTSConnection.java:164)
    at weblogic.jdbc.wrapper.Statement.checkStatement(Statement.java:234)
    at weblogic.jdbc.wrapper.Statement.preInvocationHandler(Statement.java:83)
    at weblogic.jdbc.wrapper.Statement_oracle_jdbc_driver_T4CStatement.clearBatch(Unknown Source)
    at irma.utility.database.DataBaseUtility.executeBatchUpdate(DataBaseUtility.java:62)
    at irma.technology.IrmaTechno.updateDBData(IrmaTechno.java:1077)
    at irma.business.service.ImportService.importFileEricsson(ImportService.java:698)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at irma.business.Dispatcher.callService(Dispatcher.java:66)
    at irma.ejb.serviceSessionManager.ServiceSessionManagerBean.getService(ServiceSessionManagerBean.java:67)
    at irma.ejb.serviceSessionManager.ServiceSessionManager_b1engw_EOImpl.getService

  • Reg MDB transaction rollback

    i have an MDB deployed on weblogic 8.1 sp6 server. My confusion here is how the MDB handles transaction rollbacks. E.g suppose if the MDB is designed to do the below action.
    1) read an xml message from a jms queue
    2) insert some database records
    3) generate some xml message, post it to some other jms queue
    suppose if step 1 and 2 is completed, and its on step 3, at this point weblogic server shutdowns suddenly, once i restart the server, it reads the xml message again from the jms queue, but this time it errors out, because it finds the data already entered in step 2.
    My question is when the weblogic server shut down while the mdb was at step 3, why didnt it removed all the db entries it made in step 2. This behaviour apears to me as partial rollback. I have given the mdb descriptor below.
    <ejb-jar>
      <enterprise-beans>
        <message-driven>
          <ejb-name>CSS_Response</ejb-name>
          <ejb-class>com.bt.neo.core.utility.appcontroller.transport.mdb.JmsMessageReceiver</ejb-class>
          <transaction-type>Container</transaction-type>
          <acknowledge-mode>auto-acknowledge</acknowledge-mode>
          <message-driven-destination>
            <destination-type>javax.jms.Queue</destination-type>
          </message-driven-destination>
          <env-entry>
            <env-entry-name>ejb/BeanFactoryPath</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>core-css-response-inbound.xml</env-entry-value>
          </env-entry>
          <env-entry>
            <env-entry-name>ProcessorBeanName</env-entry-name>
            <env-entry-type>java.lang.String</env-entry-type>
            <env-entry-value>transportAdaptor</env-entry-value>
          </env-entry>
          <resource-ref>
            <res-ref-name>jms/faultTo</res-ref-name>
            <res-type>javax.jms.Destination</res-type>
            <res-auth>Container</res-auth>
          </resource-ref>
        </message-driven>
      </enterprise-beans>
      <assembly-descriptor>
        <container-transaction>
          <method>
            <ejb-name>CSS_Response</ejb-name>
            <method-name>onMessage</method-name>
            <method-params>
              <method-param>javax.jms.Message</method-param>
            </method-params>
          </method>
          <trans-attribute>Required</trans-attribute>
        </container-transaction>
      </assembly-descriptor>
    </ejb-jar>Please clear my doubt.
    Edited by: Deepak Dev on 19-Dec-2011 11:01

    General information on message-driven beans can be found here: http://docs.oracle.com/cd/E12840_01/wls/docs103/ejb/message_beans.html
    To transaction configuration is discussed here: http://docs.oracle.com/cd/E12840_01/wls/docs103/ejb/message_beans.html#wp1162058
    Looks like you have to set the transaction-type to Container and the trans-attribute to required. Also see the note:
    - However, if you make this configuration error, the MDB will not run transactionally—if a failure occurs mid-transaction, updates that occurred prior to the failure will not be rolled back.

  • SessionSynchronization methods in Stateless Bean with BMP

    Hi,
    Why cant we use SessionSynchronization methods in Stateless Bean with BMP?
    Just cos the bean has full control over the transactions and it doesnt make sense at all or there is something more to add to this.
    Thanks in advance,
    Seetesh

    Hi,
    Why cant we use SessionSynchronization methods in
    Stateless Bean with BMP?Stateless Session Bean does not miantain the state across the method call.And the Transaction control is lying within the method call.
    Just cos the bean has full control over the
    transactions and it doesnt make sense at all or there
    is something more to add to this.I dont understand what you are trying to say here.As stateful session bean maintains the state across the method calls and maintains the conversational state which lies is as cache.The Transaction can be aborted either by making the changes to old value and throwing the Exception to client indicating regarding the failure.But this will be great lost of work hence you make(find mechanism) a recovery from the old values which should be saved.
    It is for this the specification has come up with SessionSynchronization interface (useful for only Stateful) Session Bean and with (declarative Transaction) CMT.
    Regards
    Vicky

  • ExecutorService in Stateless bean

    Hi,
    I am worried about the EJB container's behavior when it is executing a ExecutorService. In short, the service is spawning threads to run a massive task concurrently and await the result of that. So, if the bean is waiting for result (FutureTask) can it be passivated by the container? And if so, what would that mean for the spawned threads? Will they be interrupted?
    Can someone explain to me what will happen and not?
    Thanks in advance,
    Mike

    Hello,
    If you are using the stateless session bean, then firstly it will never passivate. Secondly, if you are instantiating one or more threads from the stateless bean, then calling of your stateless session bean's method and further threads (from that method) would be in the same transaction, so your bean's intsance would remain active until the transaction completes. So nothing would be interupted.
    Hope this answers your question.
    Thanks
    Gaurav

  • EJB 3.0 Stateful bean not saving state while Stateless bean is !!!

    My Stateless bean is as follow:
    package test;
    import javax.ejb.Stateless;
    @Stateless(mappedName = "StatelessBean")
    public class StatelessBean implements StatelessBeanRemote {
         int counter;
         public void increment(){
              System.out.println("Stateless counter value:"+counter);
              counter++;
    My Stateful bean is as follow:
    package test;
    import javax.ejb.Stateful;
    @Stateful(mappedName = "StateFulBean")
    public class StateFulBean implements StateFulBeanRemote {
         int counter;
         public void increment(){
              System.out.println("Stateful counter value:"+counter);
    Client is as follows:
    package test;
    import java.util.Hashtable;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    public class TestClient {
         public static void main(String[] args) {
              Hashtable hashtable = new Hashtable();
              hashtable.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
              hashtable.put(Context.PROVIDER_URL, "t3://localhost:7001");
              InitialContext ic;
              try {
                   ic = new InitialContext(hashtable);
                   StateFulBeanRemote stateFulBeanRemote = (StateFulBeanRemote)ic.lookup("StateFulBean#test.StateFulBeanRemote");
                   stateFulBeanRemote.increment();
                   StatelessBeanRemote statelessBeanRemote = (StatelessBeanRemote)ic.lookup("StatelessBean#test.StatelessBeanRemote");
                   statelessBeanRemote.increment();
              } catch (Exception e) {
                   e.printStackTrace();
    The output i am getting after running the client twice is as follows:
    //first time
    Stateful counter value:0
    Stateless counter value:0
    //second time
    Stateful counter value:0
    Stateless counter value:1
    Shouldn't the counter values be incremented in case of Stateful bean and remain the same for Stateless bean. But the output that I am getting is the complete opposite !!!
    Can anyone please explain this confusing behavior of stateless and stateful ejb 3.0 beans.

    868664 wrote:
    Can anyone please explain this confusing behavior of stateless and stateful ejb 3.0 beans.It is very simple: a stateless bean is ASSUMED to be stateless; you cannot keep state in a stateless bean as a contractual rule. That doesn't mean that you will fail to keep state in them at least for a little while, they are still only Java objects. Generally stateless EJBs are pooled, so you may get the same instance each time you use such an EJB, but you may just get another one. It is not dependable and the rules say don't do it - so don't do it.
    A stateful bean is tied to a single client, and so can be used by a client to keep state in it. Since You are running the client application twice you are operating with two different clients and so you will get a new stateful bean each time and your code will keep printing 0. However there is also a bug in your code:
    public void increment(){
    System.out.println("Stateful counter value:"+counter);
    }You are not incrementing anything.

  • Possible Bug?  NullPointerException on Transaction rollback

    Hi,
    Not sure if this is a known bug or not. I am using SQL Server 2000,
    Microsoft's JDBC driver, JDK 1.4.1_01 on a Win2k platform. With Kodo
    2.3.3 I am getting the following exception when I call a
    transaction.rollback(). My update is failing because I am trying to
    insert too many characters into a varchar(255) field. Ah, the wonders
    of double-byte character sets and fixed width HTML text input fields.
    Khamsouk
    15:35:46,734 INFO [kodo] UPDATE GCGroup SET
    name='??????????????????????????????????????????????????????????????????????
    ??????????????????????', visibility=2, child_count=0, JDOLOCKX=1,
    description='', rank=1, global_write=0, user_count=0, global_read=0 WHERE
    (id = 170 AND JDO
    LOCKX = 0)
    15:35:46,750 INFO [kodo] [ C:
    15:35:46,750 INFO [kodo] 7795432
    15:35:46,750 INFO [kodo] ; T:
    15:35:46,750 INFO [kodo] 16900472
    15:35:46,750 INFO [kodo] ; D:
    15:35:46,750 INFO [kodo] 10/25/02 3:35 PM
    15:35:46,750 INFO [kodo] ]
    15:35:46,750 INFO [kodo] roll back data store transaction
    15:35:46,750 INFO [STDOUT] @@@ THE TRANSACTION IS
    com.solarmetric.kodo.ee.EEPersistenceManager@c954e
    15:35:46,750 ERROR [STDERR] javax.jdo.JDOException:
    java.lang.NullPointerException
    NestedThrowables:
    java.lang.NullPointerException
    15:35:46,765 ERROR [STDERR] at
    com.solarmetric.kodo.ee.EEPersistenceManager.rollback(EEPersistenceManager.java:169)
    15:35:46,765 ERROR [STDERR] at
    com.gulfnet.usermanager.UserManager.updateJobTitle(UserManager.java:1223)
    15:35:46,765 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.updateObject(JobTitleAction.java:115)
    15:35:46,828 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.doAction(JobTitleAction.java:65)
    15:35:46,828 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.processForm(JobTitleAction.java:44)
    15:35:46,828 ERROR [STDERR] at
    com.gulfnet.common.actions.GroupCastAction.perform(GroupCastAction.java:52)
    15:35:46,828 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1787)
    15:35:46,828 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
    15:35:46,828 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
    15:35:46,828 ERROR [STDERR] at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    15:35:46,828 ERROR [STDERR] at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    15:35:46,828 ERROR [STDERR] at
    com.gulfnet.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:142)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    15:35:46,828 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,843 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,937 ERROR [STDERR] at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    15:35:46,937 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,937 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,937 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,937 ERROR [STDERR] at
    org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    15:35:46,953 ERROR [STDERR] at
    org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    15:35:46,953 ERROR [STDERR] at java.lang.Thread.run(Thread.java:536)
    15:35:46,953 ERROR [STDERR] NestedThrowablesStackTrace:
    15:35:46,953 ERROR [STDERR] java.lang.NullPointerException
    15:35:46,953 ERROR [STDERR] at
    com.solarmetric.kodo.ee.EEPersistenceManager.rollback(EEPersistenceManager.java:161)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.usermanager.UserManager.updateJobTitle(UserManager.java:1223)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.updateObject(JobTitleAction.java:115)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.doAction(JobTitleAction.java:65)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.common.actions.JobTitleAction.processForm(JobTitleAction.java:44)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.common.actions.GroupCastAction.perform(GroupCastAction.java:52)
    15:35:46,953 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.processActionPerform(ActionServlet.java:1787)
    15:35:46,953 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1586)
    15:35:46,953 ERROR [STDERR] at
    org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:510)
    15:35:46,953 ERROR [STDERR] at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
    15:35:46,953 ERROR [STDERR] at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    15:35:46,953 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    15:35:46,953 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    15:35:46,953 ERROR [STDERR] at
    com.gulfnet.servlet.filter.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:142)
    15:35:46,953 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:46,968 ERROR [STDERR] at
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:469)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    15:35:47,078 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    15:35:47,093 ERROR [STDERR] at
    org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    15:35:47,093 ERROR [STDERR] at
    org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    15:35:47,093 ERROR [STDERR] at
    org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1040)
    15:35:47,093 ERROR [STDERR] at
    org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1151)
    15:35:47,093 ERROR [STDERR] at java.lang.Thread.run(Thread.java:536)

    When I encounter an RuntimeException I do a transaction rollback manually.
    my try/catch is like the following:
    try {
    } catch (JDOFatalException e) {
         throw new MyException();
    } catch (RuntimeException e) {
         trans.rollback();
         throw new MyException();
    I am using JBoss3.0.3 with kodo.rar, using JDO's transaction interface.
    Should i be doing a trans.rollback manually() when I get a
    JDOException thrown i.e. should I have a separate catch for
    JDOExceptions? A lot of examples I see look like the above code.
    Kam
    Abe White wrote:
    Can you give a little more information about the context of the rollback?
    Are you invoking trans.rollback() yourself, or is it happening
    automatically
    because of a SQL error? It looks like you're using managed transactions?
    Are you using them through the local JDO transaction interface?
    Through CMT?
    Thanks for the report, in any case...

  • CacheFullException with Stateless bean

    Hallo everbody,
    I have a problem with a Stateless bean the log file give me this error:
    javax.ejb.EJBException: Exception during transition from pooled to ready:
    - with nested exception:
    [weblogic.ejb20.cache.CacheFullException: Cache is at its limit of: '100' *active*
    beans.]
    I use this bean for several action, and just for an action I have this error.
    What I can't underastand that Stateless bean get with the session and as the user
    close the session the Bean have to expire, isn'it? So can't uderstand while 100
    Bean still on the cache.
    Could anyone help me?
    Thank's a lot
    Fausta

    1. check thread dump ... any threads actually still busy?
    2. is it stateful or is it stateless? I don't mean how do you deploy it, but
    I mean which is it really? does it have any state?
    3. always call remove() ... this isn't the problem (Weblogic doesn't require
    remove()) but you should do so anyway.
    Peace,
    Cameron Purdy
    Tangosol, Inc.
    Clustering Weblogic? You're either using Coherence, or you should be!
    Download a Tangosol Coherence eval today at http://www.tangosol.com/
    "Sachin Shah" <[email protected]> wrote in message
    news:[email protected]..
    >
    Hi,
    I have a statelesss session bean which i m using in the application.Initially
    this bean was stateful bean but due to problems of timeout it was changedto stateless
    bean. The problem is sometimes when i view the statistics from console, ifind
    that there are max 20 beans allowed and all 20 are in use. Because ofwhich no
    user can work further and i have to shutdown the server. I fail tounderstand
    this cause being a stateless session bean it should be released (returnedto free
    pool) as soon as the method is over. So why this behaviour. Any idea.
    Thanks in Advance

  • Stateless Bean - scope of instance variable in EJB Timer call back function

    Hi,
    I would like to know on the scope of an instance variable of a Stateless Bean object,
    when used in a EJB Timer call back.Let me explain this in more detail below.
    I have a requirement to use a EJB Timer.
    For this, I have created a stateless object since Timer creation needs to be done
    from a stateless bean. I have a member variable "count" of the stateless bean class.
    In the timer call back(ejbTimeout), I am able to use this count variable during
    each time of the call back, and the value of this variable is also updated properly.
    I have a few queries with respect to the above behaviour:
    1) Does stateless bean object not get destroyed once the Timer is created from the Bean?
    2) If the Bean object is not destroyed, then when does the bean object get destroyed?
    3) If both (1) and (2) are not true, then can anyone explain on how the above behaviour is possible?
    Thanks in advance,
    Ulrich

    Hi Ulrich,
    The ejb timer is associated with the stateless session bean component, not with a particular bean instance. There is no formal relationship between the bean instance that called createTimer() and the bean instance on which the timer callback happens. If they're the same in your test run that's just a coincidence and not something your application should be depending on.
    In the stateless session bean model, the container can create and destroy stateless session bean instances at any time. The container is free to pick any stateless session bean instance to service any client invocation or timer callback. If you need to pass context into a timer callback, one way to do it is via the timer "info" object. However, the info object is immutable so it wouldn't be a good match for a counter. You could of course always just use a database for any necessary coordinated state.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Stateless bean giving error when deployed through j2ee 1.3RI

    I have written a simple stateless bean and deployed through j2ee 1.3 RI
    Context initial = new InitialContext(h);
    Object obj = initial.lookup("SampleObject"); // SampleObject -jndi name
    SampleHome home = (SampleHome)PortableRemoteObject.narrow(obj, SampleHome.class);
    But when running the Client , getting the error
    java.lang.ClassCastException
    at com.sun.corba.se.internal.javax.rmi.PoartableRemoteObject.narrow(Unknown Source)
    at javax.rmi.PortableRemoteObject.narrow(Unknown Source)     at SampleClient.main(SampleClient.java:27)
    Is it a system error or what

    Hi sessionbean,
    The most common cause of this exception is when the RMI-IIOP stubs are not found within the client's classpath. The client stubs are returned from the deployment step.
    Also, it's better to use the no-arg initial context constructor "new InitialContext()" and let the J2EE 1.3 RI code bootstrap the correct naming service.
    --ken                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

Maybe you are looking for