JMS Transaction and differnt behavior of Autocommit (Java, WebLogic)

Hi all,
Behavior of Autocommit for JMS Tranasactions is different. JMS Modules are in webLogic Server and in Backend is Oracle DB (RAC) available.
A- autocommit is active (e.g. from Java code)
private static final String QUEUE_CONNECTION_FACTORY_JNDI_NAME = "java:comp/env/jms/defaultQueueConnectionFactory";
private static final String QUEUE_JNDI_NAME = "java:comp/env/jms/defaultQueue";
final QueueConnectionFactory connectionFactory = (QueueConnectionFactory) jndiContext.lookup(QUEUE_CONNECTION_FACTORY_JNDI_NAME);
final Queue destination = (Queue) jndiContext.lookup(QUEUE_JNDI_NAME);
B- autocommit is NOT active (e.g. from Java code)
private static final String QUEUE_CONNECTION_FACTORY_JNDI_NAME = "jms/QueueConnectionFactories/MYQUEUECF";
private static final String QUEUE_JNDI_NAME = "jms/Queues/MYQUEUE";
(That means "java:comp/env" is not defined...)
C- Now, autocommit is active again (e.g. from Java code)
@Resource(name = JNDINames.MYQUEUE_CONNECTIONFACTORY_NAME, mappedName = JNDINames.MYQUEUE_CONNECTIONFACTORY_JNDI_NAME)
private QueueConnectionFactory connectionFactory;
@Resource(name = JNDINames.MYQUEUE_NAME, mappedName = JNDINames.MYQUEUE_NAME)
private Queue destination;
public static final String MYQUEUE_CONNECTIONFACTORY_JNDI_NAME = "jms/QueueConnectionFactories/MYQUEUECF";
public static final String MYQUEUE_CONNECTIONFACTORY_NAME = "jms/defaultQueueConnectionFactory";
public static final String MYQUEUE_JNDI_NAME = "jms/Queues/MYQUEUE";
public static final String MYQUEUE_NAME = "jms/defaultQueue";
Can some body explain me, why the statements have different behavior?
Regards,
Moh

@Resource(name = JNDINames.MYQUEUE_NAME, mappedName = JNDINames.MYQUEUE_NAME)did you intend the mappedName there to be MYQUEUE_JNDI_NAME?

Similar Messages

  • Can I include MQSeires JMS XADataSource and Oracle JDBC XADataSource in one transaction?

              When I try to use a XADataSource (using Oracle 8.1.6 XA JDBC driver) to update
              a table in onMessage() of a MDB (Message Driven Bean) using container managed
              transaction, an exception occured like this:
              java.sql.SQLException: ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START'
              ????? ORA-06550: ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 ) at
              oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja va:1313)
              at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav a:1232)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement .java:1353)
              at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176 0) at
              oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1805)
              at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar edStatement.java:322)
              at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat ement.java:366)
              at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10 2) at
              weblogic.transaction.internal.ServerResourceInfo.start(ServerResource Info.java:994)
              at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour ceInfo.java:947)
              at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc eInfo.java:206)
              at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se rverTransactionImpl.java:316)
              at weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:6 51) at
              weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator. java:444)
              at weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator. java:379)
              at weblogic.common.internal.ResourceAllocator.reserveWaitSecs(ResourceAl locator.java:369)
              at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j ava:167)
              at weblogic.jdbc.common.internal.ConnectionPool.reserveWaitSecs(Connecti onPool.java:121)
              at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java: 861)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 43) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355) java.sql.SQLException:
              ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START' ????? ORA-06550:
              ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 ) at
              oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja va:1313)
              at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav a:1232)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement .java:1353)
              at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176 0) at
              oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1805)
              at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar edStatement.java:322)
              at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat ement.java:366)
              at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10 2) at
              weblogic.jdbc.jta.DataSource.start(DataSource.java:324) at weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              Info.java:994) at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              ceInfo.java:947) at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              eInfo.java:206) at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:316) at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:817)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 88) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355) java.sql.SQLException:
              XA error: XAER_RMERR : A resource manager error has occur ed in the transaction
              branch start() failed on resource 'jtaXAPool' null at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:822)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 88) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              Does that mean WLS 6.0 SP1 can not include JMS XADataSource and JDBC XADataSource
              in one distributed transaction managed by container?
              

              It should work. Check out the documentation on our developer center for
              more information. Developer.BEA.com
              Michael Girdley
              BEA Systems
              Learning WebLogic? http://learnweblogic.com
              "Sam Ni" <[email protected]> wrote in message
              news:[email protected]...
              >
              > When I try to use a XADataSource (using Oracle 8.1.6 XA JDBC driver) to
              update
              > a table in onMessage() of a MDB (Message Driven Bean) using container
              managed
              > transaction, an exception occured like this:
              >
              > java.sql.SQLException: ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ???
              'JAVA_XA.XA_START'
              > ????? ORA-06550: ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              >
              > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at
              oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              > at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at
              oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              > at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 )
              at
              > oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja
              va:1313)
              > at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav
              a:1232)
              > at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement
              .java:1353)
              > at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176
              0) at
              > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
              nt.java:1805)
              > at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
              edStatement.java:322)
              > at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat
              ement.java:366)
              > at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10
              2) at
              > weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              Info.java:994)
              > at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              ceInfo.java:947)
              > at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              eInfo.java:206)
              > at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:316)
              > at weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:6
              51) at
              > weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator.
              java:444)
              > at weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator.
              java:379)
              > at weblogic.common.internal.ResourceAllocator.reserveWaitSecs(ResourceAl
              locator.java:369)
              > at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j
              ava:167)
              > at weblogic.jdbc.common.internal.ConnectionPool.reserveWaitSecs(Connecti
              onPool.java:121)
              > at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java:
              861)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              43) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              java.sql.SQLException:
              > ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START' ?????
              ORA-06550:
              > ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              >
              > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at
              oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              > at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at
              oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              > at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 )
              at
              > oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja
              va:1313)
              > at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav
              a:1232)
              > at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement
              .java:1353)
              > at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176
              0) at
              > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
              nt.java:1805)
              > at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
              edStatement.java:322)
              > at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat
              ement.java:366)
              > at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10
              2) at
              > weblogic.jdbc.jta.DataSource.start(DataSource.java:324) at
              weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              > Info.java:994) at
              weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              > ceInfo.java:947) at
              weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              > eInfo.java:206) at
              weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              > rverTransactionImpl.java:316) at
              weblogic.jdbc.jta.DataSource.enlist(DataSource.java:817)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              88) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              java.sql.SQLException:
              > XA error: XAER_RMERR : A resource manager error has occur ed in the
              transaction
              > branch start() failed on resource 'jtaXAPool' null at
              weblogic.jdbc.jta.DataSource.enlist(DataSource.java:822)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              88) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              >
              >
              > Does that mean WLS 6.0 SP1 can not include JMS XADataSource and JDBC
              XADataSource
              > in one distributed transaction managed by container?
              >
              >
              

  • Transaction with third party JMS providers and ejb

              I am using a container managed stateless session bean to send messages to an ibm
              mqseries running on the same computer. The EJB is deployed on weblogic 7.0. It
              seems that sending JMS messages do not participate in the transaction and that
              I have to call queueSession.commit() explicity every time. However, receiving
              messages via Message Driven Beans in a transaction is not a problem. Any clue
              how to resolve this or what is happening?
              

    To do this today, you'd have to get the "XAResource" object from your JMS
              provider's XASession object, and register it with JTA. I know this has come
              up before, and you should be able to find more about this on the newsgroup.
              Basically, every time you send a message, you need to do something like
              this:
              import javax.jms.*;
              import javax.transaction.*;
              XASession xaSession; // This is your vendor's XASession object
              XAResource xaResource = xaSession.getXAResource();
              Transaction tran = weblogic.transaction.TxHelper.getTransaction();
              tran.enlistResource(xaResource);
              // Now send your message!
              You need to call "enlistResource" every time you send a message, or it won't
              work.
              WebLogic Server 8.1 will be able to do this automatically as long as you're
              inside an EJB or a servlet.
              greg
              "raj" <[email protected]> wrote in message
              news:[email protected]..
              >
              > I am using a container managed stateless session bean to send messages to
              an ibm
              > mqseries running on the same computer. The EJB is deployed on weblogic
              7.0. It
              > seems that sending JMS messages do not participate in the transaction and
              that
              > I have to call queueSession.commit() explicity every time. However,
              receiving
              > messages via Message Driven Beans in a transaction is not a problem. Any
              clue
              > how to resolve this or what is happening?
              

  • Sending message to a JMS queue and making DB update through a single container managed transaction

    Can we use container managed transactions to send message to JMS queue and make DB updates in a sigle transaction. If yes then do we need 2pC license. I am using weblogic 6.0 SP2 and my database driver do not supports XA

    If your JMS provider is XA compliant, you can.
    If you are using WebLogic 6.0 JMS, it supports 2PC.
    The JDBC resource that does not support XA can participate in the global transaction
    creating a TXDataSource and setting "enable two-phase commit"=true in the Configuration
    panel.
    About the JMSConnectionFactory, on the console, in WebLogic 6.0, in the "Transaction"
    tab folder, set "User Transactions Enabled"=true.
    In your code, use non-transacted sessions.
    For 2pc protocol, you need a license or you'll get an exception.
    Sergi
    Manoj Bansal <[email protected]> wrote:
    Can we use container managed transactions to send message to JMS queue and
    make DB updates in a sigle transaction. If yes then do we need 2pC license.
    I am using weblogic 6.0 SP2 and my database driver do not supports XA

  • Transactions and database locks

    Hi,
                   We use Weblogic 4.5.1 on Windows NT 4.0 with Oracle 8.0.5. Our database
              isolation is set to TRANSACTION_READ_COMMITTED. I have an entity bean with
              TX_REQUIRED & TRANSACTION_READ_COMMITTED settings. If my client creates a
              transaction, and starts calling methods on this entity bean, is the
              corresponding database row locked for the duration of the transaction? We
              have concurrent SQl-plus sessions going on and we want make sure there is
              no data corruption. If the row is not locked, is it ok for me to explicitly
              lock it from inside my entity bean?
              Thanks,
              Srini.
              

    Hi. This should have been posted to the EJB or JDBC group, but I'll take it.
              This is an Oracle question. If you have a transaction as you've described,
              then the behavior will be exactly as if you had multiple SQL-PLUS sessions,
              and in one of them, you did:
              SQL> BEGIN;
              -- do what your bean would do;
              SQL> COMMIT;
              You can test this there. In general, you'll find that Oracle's optimistic locking
              will allow any number of simutaneous transactions to access a given row
              at one time. Oracle does not lock the real data while a transaction is ongoing,
              instead making a copy for the client to work off of. At commit time, depending
              on the isolation level semantics, some or all of the transactions may fail when
              Oracle tries to update the real data from the per-session private data.
              I would council against running with SERIALIZABLE mode because there
              is a serious bug in Oracle, where serializable transactions may fail silently.
              Details on request.
              Joe
              Srini wrote:
              > Hi,
              > We use Weblogic 4.5.1 on Windows NT 4.0 with Oracle 8.0.5. Our database
              > isolation is set to TRANSACTION_READ_COMMITTED. I have an entity bean with
              > TX_REQUIRED & TRANSACTION_READ_COMMITTED settings. If my client creates a
              > transaction, and starts calling methods on this entity bean, is the
              > corresponding database row locked for the duration of the transaction? We
              > have concurrent SQl-plus sessions going on and we want make sure there is
              > no data corruption. If the row is not locked, is it ok for me to explicitly
              > lock it from inside my entity bean?
              >
              > Thanks,
              > Srini.
              PS: Folks: BEA WebLogic is in S.F., and now has some entry-level positions for
              people who want to work with Java and E-Commerce infrastructure products. Send
              resumes to [email protected]
              The Weblogic Application Server from BEA
              JavaWorld Editor's Choice Award: Best Web Application Server
              Java Developer's Journal Editor's Choice Award: Best Web Application Server
              Crossroads A-List Award: Rapid Application Development Tools for Java
              Intelligent Enterprise RealWare: Best Application Using a Component Architecture
              http://weblogic.beasys.com/press/awards/index.htm
              

  • Bean Managed Transactions and rollback

    Hi Everybody,
    I am using Bean Managed Transactions in a Message Bean which is called every some time by an EJB3 timer. This Message Bean subsequently calls a Session Bean which uses Container Managed Transactions and uses the default transaction attribute which is SUPPORTS. The Session Bean methods might sometime throw a System Exception(inheriting from RuntimeException) which will rollback the Bean Managed Transaction which was started from the Message Bean.
    When this happens and I try to invoke userTransaction.rollback() I get invalid transaction state exception and I suppose this means that is already rolled back.
    Is there a way to get another transaction or set the transaction back to a valid state so I can carry on with some persistence tasks or the only way to do that is by suppressing the RuntimeException and throwing an Application Exception having the *@ApplicationException(rollback=false)* annotation? Can I suppress a System Exception though?
    Thank you in advance!

    Saroj wrote:
    Hi All,
    I would like to know whether we can use JDBC Connection Object's commit and rollback
    methods to control Transaction in Bean Managed Transactions or not.You may use the JDBC connection's transaction support from an EJB. That being said, you
    need to understand that it won't be the transaction that started declaratively by the
    EJB container nor would it be a bean-managed transaction started through
    UserTransaction.
    FWIW, I question why you'd want to do this though. I'd use container-managed
    transactions and let the container handle this for you. The transaction manager
    includes a 1PC optimization so it's not going to do an XA/2PC tx if you only have a
    single resource in the tx. Also, the EJB container includes all the logic to properly
    handle rollbacks when exceptions are thrown etc.
    Finally, your code will more maintainable and reusable if you use the container-managed
    tx + JTA resources. If I later wanted to call another EJB or another JTA resource (eg
    JMS perhaps) I could do it without having to rewrite all of your code.
    -- Rob
    >
    >
    Why is it required that we should use Java Transaction API to control the Transaction
    in Our Beans?
    I understand that if we are using Multiple Resources and need to use Transaction
    then going for JTA makes sense. If I am using only Resource,for example, Only One
    Connection then we should be able to use Connection's Transaction control.
    I understand that other way to do the transaction is to use Container's transaction
    services.
    Please respond at the earliest.
    Thanks in Advance,
    Saroj

  • 1 "simple" JMS topic and 2 cluster elements with OSB

    Hi,
    I have 1 simple jms topic (not distributed, not on migratable target) and cluster with 2 members - OSB as main application. My OSB proxy service reads from this topic and saves data to file.
    The problem is that reading from topic appears twice - once by each cluster member. How to configure topic or proxy service for only one reading?

    FYI - At this year's Oracle OpenWorld, which is being held in conjunction with this year's JavaOne, Oracle will be announcing a set of enhancements that are designed to cover this exact use case.
    Tom Barnes
    Session ID: S317469
    Title: New Service-Oriented Architecture Patterns with Enterprise Grid Messaging
    Abstract: Messaging systems are essential in enabling the flexibility and loosely coupled nature of a service-oriented architecture (SOA). Oracle WebLogic Java Message Service (JMS) includes new pub-sub capabilities that make architectures more adaptable, allowing message producers to be ignorant of who is the consumer of a message or how many consumers there are. It also enables easy scale out and dynamic adaptability through clustering and message-driven bean (MDB) enhancements, all while still guaranteeing strict message ordering. This session will outline new JMS capabilities and show how they enable new designs with Oracle WebLogic Server and Oracle Service Bus.
    Speaker(s): Dongbo Xiao, Oracle, Principal Member of Technical Staff
    Biography not available.
    David Cabelus, Oracle USA, Senior Principal Product Manager
    Dave Cabelus is a Senior Principal Product Manager in the WebLogic Server group at Oracle. Dave's responsibilities include product strategy and direction for various pieces of WebLogic Server, including Java Messaging, Operations and Management, Diagnostics, and various other initiatives, and previously included database connectivity, transactions, and Web tier integration. In the industry since 1996 and involved in Java since 1999, Dave worked at various software companies including Logic Works, Platinum Software, Kana, and a few startups before coming to Oracle (BEA) in 2001.
    Event: JavaOne and Oracle Develop
    Stream(s): ORACLE DEVELOP, DEVELOP
    Track(s): Application Grid and Oracle WebLogic
    Tags: Add
    Session Type: Conference Session
    Session Category: Features
    Duration: 60 min.
    Schedule: Thursday, September 23, 11:00AM | Hotel Nikko, Nikko Ballroom II Available
    Edited by: TomB on Aug 12, 2010 1:21 PM

  • JMS Transaction problem

    Hi
    I am using JBoss 3.2.3 and I have a MDB which calls up some entity beans Home and Business methods.
    onMessage use both JMS and JDBC transactions and I have configured my Oracle-XA-Ds to handle transactions.
    10:22:32,415 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [Fo
    rmatId=257, GlobalId=sanjeewad//33, BranchQual=] errorCode=XAER_RMERR
    oracle.jdbc.xa.OracleXAException
    at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1157
    at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:29
    5)

    Are you using Container Managed Transactions or Bean Manager Transactions? If CMT, what is the type set to 'Required'? You need Required in a CMT MDB to enable an XA transaction to be created /joined/rolled back.
    Scott
    http://www.swiftradius.com

  • JMS bridge and MQSeries. looking for statistics

              Hi !
              I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
              I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
              on each instance of the server).
              I'm looking for statistics about how often a message can be treated 2 (or more)
              times.
              Thanks a lot for any help !
              Florent
              

    Hi Florent,
              Since these are MQ messages, it might be possible to find
              such statistics in MQ. Also, I think that MQ stores a
              redelivery count in their messages - so you can likely
              instrument your application code to get at the count.
              Note that 7.0 actually does support exactly once with WL MDBs driven
              by MQ. If you use transactions you can infer some stats on redeliveries
              by checking the relevant transaction statistics for rollback counts.
              I'm attaching some notes on JMS integration for your
              convenience.
              Tom
              florent wrote:
              > Hi !
              >
              > I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
              > I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
              > on each instance of the server).
              >
              > I'm looking for statistics about how often a message can be treated 2 (or more)
              > times.
              >
              > Thanks a lot for any help !
              >
              > Florent
              JMS Integration of Foreign Vendors with BEA WebLogic Server
              The following notes are derived mostly from "http://dev2dev.bea.com/technologies/jms/index.jsp".
              For additional questions, a good forum for WebLogic questions in general is "newsgroups.bea.com". These can be mined for information by using Google's newsgroup search function.
              JMS Integration Overview
              - For integration with "non-Java" and/or "non-JMS" platforms, see "Non-Java Integration Options" below.
              - For a foreign JMS vendor to participate in a WL transaction it must support XA. Specifically, it must support the javax.jms.XA* interfaces.
              - In WL versions 6.0 and up it is possible to make synchronous calls to foreign JMS vendors participate in a WL transaction as long as the foreign vendor supports XA.
              - WL 6.0 and 6.1 MDBs can be driven by foreign vendors non-transactionally. They can be driven transactionally by a select few foreign vendors (MQ is not part of the select few)
              - WL 7.0 and later, MDBs can be driven by foreign vendors transactionally and non-transationally.
              - WL 6.1 and later WL provides a messaging bridge feature. Messaging bridges forward messages between any two JMS destinations, including foreign destinations, and can transfer messages transactionally or non-transactionally.
              - WL 8.1 JMS provides additional features that simplify transactional and JNDI integration of foreign vendors. See http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              Integration with 8.1 Details
              A good overview of 8.1 JMS interop capability is the presentation "Integrating Foreign JMS Providers with BEA WebLogic Server" here:
              http://www.bea.com/content/files/eworld/presentations/Wed_03_05_03/Application_Servers/1097-Foreign_JMS_Providers_WLS.pdf
              This document refers to helpful new 8.1 features, which simplify integration. These include:
              http://edocs.bea.com/wls/docs81/ConsoleHelp/jms_config.html#accessing_foreign_providers
              http://edocs.bea.com/wls/docs81/jms/j2ee_components.html#1033768
              And are also summarized here (under interoperability):
              http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              Also read the extensive MDB documentation, which extensively covers integrating foreign vendors:
              http://edocs.bea.com/wls/docs81/ejb/message_beans.html
              The 8.1 features are likely sufficient for most 8.1 integration needs, and you may not need to refer "Using Foreign JMS Providers With WLS" white-paper mentioned below.
              Integration with 6.1 and 7.0 Details
              Read the "Using Foreign JMS Providers With WLS" white-paper:
              http://dev2dev.bea.com/products/wlserver/whitepapers/jmsproviders.jsp
              Note that this white-paper does not take into account 8.1 features.
              For 7.0 read the extensive 8.1 MDB documentation, which largely also applies to 7.0:
              http://edocs.bea.com/wls/docs81/ejb/message_beans.html
              Non-Java Integration Options
              - WL JMS has a JNI based C client which is available for Windows and some UNIX platforms. This C client supports 7.0 and up, and will be officially packaged with WLS in 9.0 (virtually unchanged). The C API is currently only supported through the jms newsgroup. See "JMS C API", here:
              http://dev2dev.bea.com/technologies/jms/index.jsp
              - WL supports direct Windows COM access through its "JCOM" feature. This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
              http://e-docs.bea.com/wls/docs61/jcom.html
              http://e-docs.bea.com/wls/docs70/jcom/
              http://e-docs.bea.com/wls/docs81/jcom/
              - Similar to JCOM, but more advanced, WL supports IIOP standard based access on multiple platforms. You can use the BEA Tuxedo C client for this purpose (no license fee). This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
              http://e-docs.bea.com/wls/docs81/rmi_iiop/
              http://e-docs.bea.com/wls/docs70/rmi_iiop/
              http://e-docs.bea.com/wls/docs61/rmi_iiop/
              Unlike most other approaches, the IIOP client approach also allows the client to begin and commit user (JTA) transactions (not configured).
              - If you already have a BEA Tuxedo license, one option is communicate through BEA Tuxedo (which has various APIs on Windows) and configure a WebLogic Server to respond to these requests via the WTC bridge. Search for "WTC" in the BEA docs. Unlike most other approaches, the Tuxedo API approach also allows the client to begin and commit user (JTA) transactions.
              - Another approach is to interop via web-service standards. Or even to simply to invoke a servlet on the WL server using a basic HTTP call from Windows. These in turn can invoke the JMS API. There is a white-paper on "Interoperability Study of BEA WebLogic Workshop 8.1 and Microsoft .NET 1.1 Web Services", that demonstrates web-services here:
              http://ftpna2.bea.com/pub/downloads/WebLogic-DotNet-Interop.pdf
              - Yet another approach is to use a third party product that is designed to wrap any JMS vendor. There are even open source versions. In no particular order, here are some examples: Open3 WinJMS, CodeMesh, Active JMS, SpiritSoft
              - Finally, there are .NET/C/C++ integration libraries that not specific to JMS, some examples are JNBridge, Jace, and CodeMesh.
              Notes on MQ Remote Capable XA Clients
              Until recently, IBM MQ JMS clients could not work transactionally unless they were running on the same host as their MQ server. This is a limitation unique to MQ that was relaxed with the introduction of IBM's new "WebSphere MQ Extended Transactional Client". See:
              http://publibfp.boulder.ibm.com/epubs/pdf/csqzar00.pdf
              The product is new, and for some reason, configuration of this client seems to be tricky, even when WebLogic is not involved at all. Oddly, the main sticking point seems to be simply making sure that class paths refer to the required IBM jars:
              - Required on WLS where MQ objects are bound into JNDI:
              com.ibm.mq.jar, com.ibm.mqjms.jar
              - Required only if MQ objects are bound into JNDI on a different server:
              com.ibm.mq.jar
              If there are problems when using this client, first get it to work using a pure IBM client without any BEA classes involved. Once that is working, search the WL JMS newsgroup for answers and/or contact BEA customer support.
              Notes on Oracle AQ Integration
              If problems are encountered integrating Oracle's built-in queuing (Oracle AQ) JMS client, there is publicly available wrapper code that can aid integrating AQ directly into MDBs, JMS, or the messaging bridge. The solution is titled "Startup class to bind AQ/Referenceable objects to WLS JNDI", is not supported by BEA, and is posted to:
              http://dev2dev.bea.com/codelibrary/code/startupclass.jsp
              Caveats:
              The solution doesn't directly support concurrent consumers. Perhaps Oracle requires that concurrent consumers each have a unique JMS connection? As a work-around, parallel message processing can be achieved indirectly by forwarding AQ messages into a WL JMS destination - which do support concurrent processing.
              Up-to-date versions of Oracle may be required. For more information, google search the weblogic.developer.interest.jms newsgroup for "Oracle" and "AQ".
              The solution doesn't seem to support transactions, it may be possible to extend it to do so.
              MDB Thread Pool Notes
              WL7.0SP? and WL8.1 and later support the "dispatch-policy" field to specify which thread pool an MDB uses to run its instances. In most cases this field should be configured to help address potential performance issues and/or dead-locks:
              http://edocs.bea.com/wls/docs81/ejb/DDreference-ejb-jar.html#dispatch-policy
              (Note that "dispatch-policy" is ignored for non-transactional foreign vendors; in this case, the MDB "onMessage" callback runs in the foreign vendor's thread.)
              MDB Concurrency Notes
              Queue MDBs driven by foreign providers can run multiple instances concurrently. Topic MDBs driven by foreign providers are limited to one instance (not sure, but transactional foreign driven topic MDBs may not have this limitation). The size of the thread pool that the MDB runs in and the "max-beans-in-free-pool" descriptor limit how many instances run concurrently.
              Design Guide-Lines and Performance Tuning Notes
              The "WebLogic JMS Performance Guide" white-paper contains detailed design, performance, and tuning information for Clustering, Messaging Bridge, JMS, and MDBs.
              http://dev2dev.bea.com/products/wlserver/whitepapers/WL_JMS_Perform_GD.jsp
              

  • JMS Server and MySQL Persistent Store

              I set up a JDBC connection pool in Weblogic 8.1 with MySQL dbms. When I tried to
              create a JMS server and use the connection pool as the Persistent Store, then
              try to target the JMS to a managed server. I got the following error, any idea
              what the problem is?
              weblogic.management.DistributedManagementException: Distributed Management [1
              exceptions]
              JMS JDBC store, connection pool = , prefix = : unsupported DBMS
                   at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:1133)
                   at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:462)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
                   at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
                   at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
                   at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
                   at weblogic.management.configuration.ServerMBean_Stub.addDeployment(ServerMBean_Stub.java:7929)
                   at weblogic.management.internal.DynamicMBeanImpl.unprotectedUpdateDeployments(DynamicMBeanImpl.java:1795)
                   at weblogic.management.internal.DynamicMBeanImpl.access$100(DynamicMBeanImpl.java:95)
                   at weblogic.management.internal.DynamicMBeanImpl$2.run(DynamicMBeanImpl.java:1708)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1704)
                   at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:1128)
                   at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:311)
                   at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1358)
                   at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1333)
                   at weblogic.management.internal.RemoteMBeanServerImpl.setAttribute(RemoteMBeanServerImpl.java:367)
                   at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:741)
                   at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
                   at weblogic.management.configuration.JMSServerMBean_Stub.setTargets(JMSServerMBean_Stub.java:1247)
                   at weblogic.management.console.webapp._domain.__jmsserver$ServerAndMigratableTargetAttribute.doSet(__jmsserver.java:109)
                   at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:256)
                   at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
                   at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                   at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
                   at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              java.io.IOException: JMS JDBC store, connection pool = , prefix = : unsupported
              DBMS
                   at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:359)
                   at weblogic.jms.store.JDBCIOStream.rebuildTables(JDBCIOStream.java:1613)
                   at weblogic.jms.store.JDBCIOStream.open(JDBCIOStream.java:426)
                   at weblogic.jms.store.JMSStore.open(JMSStore.java:224)
                   at weblogic.jms.backend.BEStore.open(BEStore.java:262)
                   at weblogic.jms.backend.BEStore.start(BEStore.java:151)
                   at weblogic.jms.backend.BackEnd.openStores(BackEnd.java:1171)
                   at weblogic.jms.backend.BackEnd.resume(BackEnd.java:1287)
                   at weblogic.jms.JMSService.addJMSServer(JMSService.java:2167)
                   at weblogic.jms.JMSService.addDeployment(JMSService.java:1938)
                   at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:330)
                   at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:201)
                   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 weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:747)
                   at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:726)
                   at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:458)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
                   at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
                   at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
                   at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
                   at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                   at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
                   at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              --------------- nested within: ------------------
              weblogic.management.console.utils.SetException: An error occurred while updating
              MigratableTarget on [Caching Stub]Proxy for dotnet:Name=CSJMSServer,Type=JMSServer
              - with nested exception:
              [weblogic.management.DistributedManagementException: Distributed Management [1
              exceptions]
              JMS JDBC store, connection pool = , prefix = : unsupported DBMS]
                   at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:311)
                   at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
                   at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                   at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
                   at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              Console Release Build8.1.1.0Server Release Build8.1.1.0Server BuildWebLogic Server
              8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 All Server Product VersionsWebLogic
              Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic XMLX Module 8.1 SP1
              Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40
              PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic
              Portal 8.1 Thu Jul 10 20:09:22 PDT 2003 84868
              

    Exactly what it says: unsupported DBMS.
              But but but...
              OK, I'll be nice (just couldn't resist).
              The next 8.1 SP will contain the DDL for MySQL, but for
              now you can run it manually. Prepend your catalog,
              schema, and prefix before JMSState and JMSStore to
              match what you configured as a prefix in your
              JMS JDBC store, and run the commands:
              CREATE TABLE JMSState (recordHandle int, recordState int,
              recordGeneration int);
              CREATE TABLE JMSStore (recordHandle int, recordState int, record longblob);
              CREATE INDEX JMSMSG_X ON JMSState (recordHandle);
              CREATE INDEX JMSMSGQ_X ON JMSStore (recordHandle);
              COMMIT;
              Note that a file store may be preferable instead
              of using a database store, there is
              likely no performance advantage to MySQL (in fact
              there is likely a significant performance penalty), and a file
              store is just as transactionally safe as a database
              store.
              Tom
              dahan wrote:
              > I set up a JDBC connection pool in Weblogic 8.1 with MySQL dbms. When I tried to
              > create a JMS server and use the connection pool as the Persistent Store, then
              > try to target the JMS to a managed server. I got the following error, any idea
              > what the problem is?
              >
              > weblogic.management.DistributedManagementException: Distributed Management [1
              > exceptions]
              > JMS JDBC store, connection pool = , prefix = : unsupported DBMS
              >      at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:1133)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:462)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
              >      at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
              >      at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
              >      at weblogic.management.configuration.ServerMBean_Stub.addDeployment(ServerMBean_Stub.java:7929)
              >      at weblogic.management.internal.DynamicMBeanImpl.unprotectedUpdateDeployments(DynamicMBeanImpl.java:1795)
              >      at weblogic.management.internal.DynamicMBeanImpl.access$100(DynamicMBeanImpl.java:95)
              >      at weblogic.management.internal.DynamicMBeanImpl$2.run(DynamicMBeanImpl.java:1708)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1704)
              >      at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:1128)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:311)
              >      at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1358)
              >      at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1333)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.setAttribute(RemoteMBeanServerImpl.java:367)
              >      at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:741)
              >      at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
              >      at weblogic.management.configuration.JMSServerMBean_Stub.setTargets(JMSServerMBean_Stub.java:1247)
              >      at weblogic.management.console.webapp._domain.__jmsserver$ServerAndMigratableTargetAttribute.doSet(__jmsserver.java:109)
              >      at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:256)
              >      at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
              >      at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              >      at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
              >      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
              >      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > java.io.IOException: JMS JDBC store, connection pool = , prefix = : unsupported
              > DBMS
              >      at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:359)
              >      at weblogic.jms.store.JDBCIOStream.rebuildTables(JDBCIOStream.java:1613)
              >      at weblogic.jms.store.JDBCIOStream.open(JDBCIOStream.java:426)
              >      at weblogic.jms.store.JMSStore.open(JMSStore.java:224)
              >      at weblogic.jms.backend.BEStore.open(BEStore.java:262)
              >      at weblogic.jms.backend.BEStore.start(BEStore.java:151)
              >      at weblogic.jms.backend.BackEnd.openStores(BackEnd.java:1171)
              >      at weblogic.jms.backend.BackEnd.resume(BackEnd.java:1287)
              >      at weblogic.jms.JMSService.addJMSServer(JMSService.java:2167)
              >      at weblogic.jms.JMSService.addDeployment(JMSService.java:1938)
              >      at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:330)
              >      at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:201)
              >      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 weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:747)
              >      at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:726)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:458)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
              >      at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
              >      at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
              >      at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
              >      at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
              >      at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > --------------- nested within: ------------------
              > weblogic.management.console.utils.SetException: An error occurred while updating
              > MigratableTarget on [Caching Stub]Proxy for dotnet:Name=CSJMSServer,Type=JMSServer
              > - with nested exception:
              > [weblogic.management.DistributedManagementException: Distributed Management [1
              > exceptions]
              > JMS JDBC store, connection pool = , prefix = : unsupported DBMS]
              >      at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:311)
              >      at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
              >      at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              >      at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
              >      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
              >      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              >
              >
              >
              > --------------------------------------------------------------------------------
              >
              > Console Release Build8.1.1.0Server Release Build8.1.1.0Server BuildWebLogic Server
              > 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 All Server Product VersionsWebLogic
              > Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic XMLX Module 8.1 SP1
              > Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40
              > PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic
              > Portal 8.1 Thu Jul 10 20:09:22 PDT 2003 84868
              >
              

  • JMS proxy and XA connection factory

    Hi all,
    I would like to ask you what is the best practice to adopt about the scenario described below.
    A JMS proxy retrieves a message and processes it.
    Any error could occurr during processing it and, in case of errors, the JMS proxy error handler publishes the message on ad hoc recovery destination D.
    (later another app will check failed messages for fixing & republishing them into ALSB).
    In that scenario we have the JMS proxy and the jms business service that, in case of errors, publishes on destination D.
    Should the JMS proxy and the business service use both a XA connection factory in order to perform all the above steps in one transaction ?
    Otherwise if the business service itself fails publishing on destination D, the message retrieved by the JMS proxy is lost and not re-delivered to the JMS proxy.
    Or XA connection factory is not needed and could I use
    Routing Options with exactly once or both are needed ?
    Thanks
    ferp

    Hi all,
    I did some tests and follow what I've achieved.
    Scenario 1.
    - Precondition
    -- A JMS proxy with XA factory + Error Destination (MyRecoveryQueue)
    -- A business service BS with XA factory that publishes into MyOutboundQueue
    -- No "exactly once" routing option used calling BS
    -- an error is forced in the pipeline
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- an error is forced in the pipeline:
    --- transaction is rolled back, message redelivered to proxy
    --- the message is posted to the error destination after all the retries failed
    Scenario 2.
    - Precondition
    -- As 1. but no error is forced in the pipeline
    -- the MyOutboundQueue destination queue is paused
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- BS fails to publish it on MyOutboundQueue (because it is paused)
    --- transaction is rolled back, message redelivered to proxy
    --- the message is posted to the error destination after all the retries failed
    Scenario 2A.
    - Precondition
    -- As 2. with MyOutboundQueue paused and resumed
    - Flow:
    -- proxy retrieves a message and try to publish it using BS
    -- BS fails to publish it on MyOutboundQueue (because it is paused)
    --- transaction is rolled back, message redelivered to proxy
    --- before all the retries failed the queue is resumed
    --- BS succeeds to publish the message
    Scenario 3.
    - Precondition
    -- A JMS proxy with NO XA factory + Error Destination
    -- A business service BS with NO XA factory
    -- No "exactly once" routing option used calling BS
    -- an error is forced in the pipeline
    - Flow
    -- proxy retrieves a message and try to publish it using BS
    -- an error is forced in the pipeline:
    --- transaction is NOT rolled back, message NOT redelivered to proxy
    -- so
    --- no message delivered to MyOutboundQueue2 destination
    --- no message delivered to MyRecoveryQueue2 destination
    --- message consumed from MyQueue2 and now is lost!
    To publish message into MyRecoveryQueue2 a proxy error handler has to be added and here added explicit publish to MyRecoveryQueue2.
    But naturally in that case if in the proxy error handler, the explicit publish fails or any error occurrs no message is delivered to recovery queue.
    So if I'm not using an XAFactory the message is auto-acknowledged as soon as it is read and I've to use XA factory if I want the message to be put back in the queue in case of errors and the retry to happen.
    So both my proxy service and business service use an XA factory.
    Regards
    ferp

  • Distributed transactions and 2-phase commit in a SAP Netweaver environment

    Hello,
    I am a Java architect., I don't know very much the SAP technologies. I tried to found on forums or technical papers if SAP does support distributed transactions and two-phase commit, it's not clear. I found something on SAP WAS but my project is using a  SAP PI 7.0 and I cannot find anything on the subject.
    My goal is to include a SAP server (via PI 7.0) in a distributed transaction handled by a J2EE ESB (Oracle, ex-BEA Aqualogic) based on XA capabilities.
    Does anyone have experience or feedback on this topic ?
    Thanks.

    Hi,
    Do you know this white paper ?
    [Distributed Transaction and 2 phase commit|https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3732d690-0201-0010-a993-b92aab79701f]
    Regards,
    Olivier

  • JMS error- Exception in thread "Main Thread" java.lang.NoClassDefFoundError

    Hi guys,
    I am new to JMS programming and i'm have the following error...I have set up a simple weblogic server on my local machine and i am trying to send a message to a queue i've created on a JMS server. I am trying to manually run an example provided by BEA WebLogic... the code follows.
    //package examples.jms.queue;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.Hashtable;
    import javax.jms.*;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    /** This example shows how to establish a connection
    * and send messages to the JMS queue. The classes in this
    * package operate on the same JMS queue. Run the classes together to
    * witness messages being sent and received, and to browse the queue
    * for messages. The class is used to send messages to the queue.
    * @author Copyright (c) 1999-2006 by BEA Systems, Inc. All Rights Reserved.
    public class QueueSend
      // Defines the JNDI context factory.
      public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
      // Defines the JMS context factory.
      public final static String JMS_FACTORY="weblogic.examples.jms.QueueConnectionFactory";
      // Defines the queue.
      public final static String QUEUE="weblogic.examples.jms.exampleQueue";
      private QueueConnectionFactory qconFactory;
      private QueueConnection qcon;
      private QueueSession qsession;
      private QueueSender qsender;
      private Queue queue;
      private TextMessage msg;
       * Creates all the necessary objects for sending
       * messages to a JMS queue.
       * @param ctx JNDI initial context
       * @param queueName name of queue
       * @exception NamingException if operation cannot be performed
       * @exception JMSException if JMS fails to initialize due to internal error
      public void init(Context ctx, String queueName)
        throws NamingException, JMSException
        qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY);
        qcon = qconFactory.createQueueConnection();
        qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
        queue = (Queue) ctx.lookup(queueName);
        qsender = qsession.createSender(queue);
        msg = qsession.createTextMessage();
        qcon.start();
       * Sends a message to a JMS queue.
       * @param message  message to be sent
       * @exception JMSException if JMS fails to send message due to internal error
      public void send(String message) throws JMSException {
        msg.setText(message);
        qsender.send(msg);
       * Closes JMS objects.
       * @exception JMSException if JMS fails to close objects due to internal error
      public void close() throws JMSException {
        qsender.close();
        qsession.close();
        qcon.close();
    /** main() method.
      * @param args WebLogic Server URL
      * @exception Exception if operation fails
      public static void main(String[] args) throws Exception {
        if (args.length != 1) {
          System.out.println("Usage: java examples.jms.queue.QueueSend WebLogicURL");
          return;
        System.out.println(args[0]);
        InitialContext ic = getInitialContext(args[0]);
        QueueSend qs = new QueueSend();
        qs.init(ic, QUEUE);
        readAndSend(qs);
        qs.close();
      private static void readAndSend(QueueSend qs)
        throws IOException, JMSException
        BufferedReader msgStream = new BufferedReader(new InputStreamReader(System.in));
        String line=null;
        boolean quitNow = false;
        do {
          System.out.print("Enter message (\"quit\" to quit): \n");
          line = msgStream.readLine();
          if (line != null && line.trim().length() != 0) {
            qs.send(line);
            System.out.println("JMS Message Sent: "+line+"\n");
            quitNow = line.equalsIgnoreCase("quit");
        } while (! quitNow);
      private static InitialContext getInitialContext(String url)
        throws NamingException
        Hashtable<String,String> env = new Hashtable<String,String>();
        env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
        env.put(Context.PROVIDER_URL, url);
        return new InitialContext(env);
    }when i run the main method with args[0] = "t3://localhost:7001", i get the following errors:
    Exception in thread "Main Thread" java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)
    at QueueSend.getInitialContext(QueueSend.java:122)
    at QueueSend.main(QueueSend.java:91)
    Could someone please help. thanks.

    when i run the main method with args[0] = "t3://localhost:7001", i get the following errors:
    Exception in thread "Main Thread" java.lang.NoClassDefFoundError: weblogic/security/subject/AbstractSubject
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:117)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
    at javax.naming.InitialContext.init(InitialContext.java:223)
    at javax.naming.InitialContext.<init>(InitialContext.java:197)
    at QueueSend.getInitialContext(QueueSend.java:122)
    at QueueSend.main(QueueSend.java:91)
    Could someone please help. thanks.This is Java 101:
    http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rtrb_classload_viewer.html
    You've got to have the WebLogic JAR that contains the necessary .class files in your CLASSPATH when you run.
    Don't use a CLASSPATH environment variable; use the -classpath option when you run.
    %

  • About Container-managed Transactions and Bean-managed Transactions

    as the document of weblogic7.0 describe the differents of Container-managed
              Transactions and Bean-managed Transactions,and in the document,It tell us
              details of using Bean-managed Transactions,such as \:
              import javax.naming.*;import javax.transaction.UserTransaction;.....
              import java.sql.*;import java.util.*;
              UserTransaction tx = (UserTransaction)
              ctx.lookup("javax.transaction.UserTransaction");tx.begin();
              tx.commit() //or tx.rollback
              but how to use Container-managed Transactions?
              what is EJB's deployment descriptor? can someone tell me?
              i wonder someone will show me an example of how to use Container-managed
              Transactions.
              thanks
              fish
              

    Many if not all of the WLS EJB examples use container-managed
              transactions. That's a good place to start.
              I'd also recommend that you pick up a decent EJB book. There's several
              on the market right now.
              -- Rob
              fish wrote:
              > <ejb-jar>
              > <enterprise-beans>
              > <session>
              > <ejb-name>testbean</ejb-name>
              > <home>test.test.TestHome</home>
              > <remote>test.test.Test</remote>
              > <ejb-class>test.test.TestBean</ejb-class>
              > <session-type>Stateful</session-type>
              > <transaction-type>Container</transaction-type>
              > </session>
              > </enterprise-beans>
              >
              > <assembly-descriptor>
              > <container-transaction>
              > <method>
              > <ejb-name>EmployeeRecord</ejb-name>
              > <method-name>*</method-name>
              > </method>
              > <trans-attribute>Required</trans-attribute>
              > </container-transaction>
              > </assembly-descriptor>
              > </ejb-jar>
              > ----------------------------------------------
              > seems i have to write ejb-jar.xml like this,am i right?
              > what about <ejb-client-jar>? is it needed in this xml file?
              >
              > thanks
              >
              > fish
              >
              >
              

  • Can we handle various other kind of transactions in JMS transaction?

    I know we can handle heterogenous transactions like JDBC Transactions, JMS transactions, etc from JTA.
    Can we similarly handle such various txns in JMS transactions also?
    SO say when I get a message, I need to send another message, and update some 2-3 DB instances. If any of latter 2 fails whole JMS txn should rollback.
    Is it possible in JMS?
    Please point me some online docs if available.
    Thanks in advance

    Yes it is. Use 2 Phase commit,(these are this X... Classes)
    Edited by: lieni on Jan 9, 2008 10:42 PM

Maybe you are looking for

  • How can i stream live from my mac

    I am trying to stream a live feed of a game from my mac to a streaming site such as Twitch.com. However all the software i have found for this is only avalible for windows. Are there any mac versions? Thank you

  • JCO - RFC_ERROR_SYSTEM_FAILURE: com/sap/mw/jco/JCO$Server

    Hi, I call from Java an ABAP RFC and this RFC in turn call back the Java stack and it fails. At Java side I get: #1#com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: com/sap/mw/jco/JCO$Server      at com.sap.mw.jco.MiddlewareJRfc.generate

  • What is the best way to execute immediate particular sql stored in a table

    I have a string variable containing row_ids eg "12,24,35,23" and a table row_id, sql 1 , "insert into some_table values(23,'Happy');" 6 , "insert into some_other_table values(24,'Sad');" 12 , "insert into some_table values(23,'Crazzzy');" 15 , "inser

  • ITEM CATEGORY GROUP VS GENERAL ITEM CATEGORY GROUP

    Hi Gurus, In material master,there are two fields, General Item categary group and Item categary group, what is the significant usage of these two fields, In F1 I'm getting same description, With Regards, J.SRUTHI

  • Activating Scripting on the Web Server

    I found this, but can not locate Scripting on the Web Server: Configuration page Activating Scripting on the Web Server To use scripting with a Web service, you must activate the functionality on the LabVIEW Web Server. In LabVIEW, select Scripting o