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

Similar Messages

  • Recovering Inactive JMS Transactions

    I'm running WL server 10.3.3 with "plain old" JMS transactions (no JTA), run from a WL JMS 'C' interface based client.
    Occasionally I see the following JMS error returned in place of a transaction timeout. I.e. this happens at the time a transaction should have timed out:
    'Attempt to resume an inactive transaction: BEA1-075EEE16749AF9834384:error resuming transacted session's internal transaction'
    Once this happens, the transaction appears to be "frozen". It cannot be committed or rolled back, since it keeps generating that same inactive transaction error. The messages associated with that transaction are "stuck" inside the application until they're committed using another session / transaction. So far, the messages read with the transaction that turns inactive don't reappear on the queue until the application exits; this means that the messages would reappear on the queue after exit, and presumably be processed a second time once the application starts again.
    Is there any way to recover/commit/rollback an inactive transaction without quitting the application that started it?
    Thanks for your help.

    I haven't tried that. However, that's a manual operation, which isn't practical to do on a customer site. I'm looking for a way to recover inactive transactions programatically.
    BTW, I found out that most of these inactive transactions are caused by the JTA transaction timeout value being set lower than the Connection Factory transaction timeout value. While that doesn't solve the problem completely, it does allow us to remove the most common source of inactive transactions by co-ordinating the timeout values.

  • 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

  • OSB 10.3 JMS queue problem: JMSCorrelationID is null

    Hi everybody,
    I am new to OSB/ALSB, and need some help regarding JMS message handling. I am trying to put some input data into a JMS queue( say, reqQueue) and to get the response from another JMS queue(say resQueue). My architecture is:
    OSB proxy service->OSB business service->JMS queue(reqQueue)->BPEL process(through JMS adapter) ->JMS queue(resQueue)->OSB business service->OSB proxy service.
    I have used JMSCorrelationID for response correlation. but my problem is that when I am trying to test the service from proxy service, I am getting the JMSCorrelationId as null in BPEL process as well as in the weblogic server JMS log, and as I am getting the CorrelationId as null, I am unable to correlate the response, so I am not getting any response.
    This is urgent, please help me as soon as possible as possible.
    Thanks in advance.
    Joy

    Sovled it..
    OSB 10.3 JMS queue problem: JMSCorrelationID is null

  • A Major Transaction Problem!

    "A" is a record which has already been inserted into a table(TBL).
    "insert(Y)" is a method that inserts a given record -Y- into TBL.
    "foo(X)" is a method that takes a record as a parameter and queries it on a view(VIEW). This view is a
    huge select statement that selects from TBL.
    Here is the problem:
    insert(B);
    foo( A ); /* returns true */
    but
    insert(B); /* B does not exist in TBL */
    foo(B); /* returns false and catches an exception that "A" is not found! */
    insert(Y) method is a CMP EJB method but foo(X) uses JDBC to access DBMS.
    so what can cause this transaction problem?
    thanks in advance,
    -selcuk

    Hi,
    Maybe foo is running in a different transaction than insert?
    Some possible causes:
    -you are starting a new transaction for foo, either via the UserTransaction or via REQUIRES_NEW
    -you are using a regular JDBC driver for foo instead of an XADataSource.
    Did you try to set foo's transaction attribute to REQUIRED?
    Best,
    Guy
    http://www.atomikos.com

  • Weblogic jms connection problem

    Hi All,
    My jms bpel process listening on jms Queue. If I deploy bpel process first time I am not getting any jms connection problem with weblogic , but if redploy I am getting jms conneciton problem. saying
    Adapter_start: Jms Adapter started
    <2005-12-07 10:19:20,044> <ERROR> <default.collaxa.cube.activation> <JMSAdapter::Inbound> Error whil
    e creating managed connection:
    <2005-12-07 10:19:20,044> <ERROR> <default.collaxa.cube.activation> <JMSAdapter::Inbound>
    ORABPEL-12141
    ERRJMS_CONN_FAC_NOT_FOUND.
    Unable to instantiate connection factory. JMS adapter was unable to look up the connection factor BP
    ELJMS neither through JNDI nor instantiate it as a Java class
    Please examine the log file to determine the problem.
    at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getConnectionFactory(JMSConnection
    FactoryFactory.java:156)
    at oracle.tip.adapter.jms.JMS.JMSConnectionFactoryFactory.getQueueConnectionFactory(JMSConne
    ctionFactoryFactory.java:95)
    at oracle.tip.adapter.jms.JMS.JMSConnection.init(JMSConnection.java:143)
    at oracle.tip.adapter.jms.JMS.JMSConnection.<init>(JMSConnection.java:102)
    at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionF
    actory.java:355)
    at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createDefaultConnection(JmsManagedConn
    ectionFactory.java:346)
    at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionF
    actory.java:309)
    at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConn
    ectionFactory.java:99)
    at com.evermind.server.connector.ApplicationConnectionManager.createManagedConnection(Applic
    ationConnectionManager.java:564)
    at oracle.j2ee.connector.ConnectionPoolImpl.createManagedConnection(ConnectionPoolImpl.java:
    Work around is I need to restart the BPEL server.
    Is there any permanant solution for this, Please suggest.
    Thanks,
    Srini

    srini,
    see this thread
    JMS Connection
    thanks,
    -Ng.

  • Transaction problems

    If anyone can help point me in the right direction of what I should be looking for in my configuration files for the following transaction problem. It looks like the delete is being committed one entity at a time instead of at the ened of the transaction.
    I'm using OC4J, eclipselink and Spring.
    I have two entities that I am trying to delete. They have a OneToOne relationship which in the underlying database (Oracle) has a deferred foreign key integrity constraint. I believe that this means that if the intities are delted in the same transaction everything should work, but if they are deleted in seperate transactions then the constraint should kick in and disallow the delete. I am using code similar to below to attempt to delete in one transaction. I am using Spring to inject an EntityManager and to control the transaction handling.
    @Transactional(readOnly=true)
    public class ProductServiceImpl implements ProductService{ 
      @PersistenceContext(type = PersistenceContextType.TRANSACTION)
      private EntityManager emp;
      @Transactional(readOnly=false, propagation=Propagation.REQUIRES_NEW)
      public void deleteProduct(Product prod){
          Object managedEntity = em.find(product.getClass(), prod.getId);
          em.remove(managedEntity);
    }Spring configuration xml file
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:jee="http://www.springframework.org/schema/jee"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="
            http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
      <jee:jndi-lookup id="myEmf" jndi-name="persistence/JPA"/>
      <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
      <bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="myEmf"/>
      </bean>
      <tx:annotation-driven transaction-manager="txManager"/>
      <bean id="ProductService" class="ProductServiceImpl"/>
    </beans>On calling the delete I get the following error message
    org.springframework.transaction.TransactionSystemException -
        Could not commit JPA transaction; nested exception is
        javax.persistence.RollbackException: Exception [EclipseLink-4002]
            (Eclipse Persistence Services - 1.0 (Build SNAPSHOT - 20080508)):
        org.eclipse.persistence.exceptions.DatabaseException Internal Exception:
        java.sql.SQLException: ORA-02091: transaction rolled back ORA-02292:
        integrity constraint (RVEL_FK) violated - child record found Error Code: 2091 Call:
        DELETE FROM RVEL_REVENUE_ELEMENT WHERE (ID = ?) bind => [6594]
        Query: DeleteObjectQuery(RevenueElement@1eafdce)I have also tried doing all this programatically, using a jndi lookup as follows
    EntityManager em = null;
    try{
      Context ctxt = new InitialContext();
      emf = (EntityManagerFactory)ctxt.lookup("jpaTest/ServerJPA");
      em = emf.createEntityManager();
      EntityTransaction et = em.getTransaction();
      try{
        et.begin();
        em.remove(managedEntity);
        et.commit();
      } finally{
        if(et != null && et.isActive()){
          et.rollback();
    } catch(NamingException nme) {
    } finally{
      if(em != null && em.isOpen()){
        em.close();
    } When debugging the error is thrown on the line
    em.remove(managedEntity);before the transaction commit is called.

    Thanks for the reply.
    The managed entity being deleted in the call to the delete method has one to many relationship with one of the entities in the one to one relationship which then has a reference to the second entity. These references are annotated with cascade ALL.
    A --> B --> C. The error is referring to entity C and its relationship back to B. The error is being thrown before the transaction is being committed.
    After doing a bit more research I believe that it is caused by the lack of the following property in my persistence.xml.
    <property name="eclipselink.target-server" value="OC4J_10_1_3"/>But if I put this property in then I get the errorException creating EntityManagerFactory using PersistenceProvider class org.eclipse.persistence.jpa.PersistenceProvider for persistence unit ServerJPA.

  • JMS (Transaction ???) problem, consumer receives all messages at once.

    Hallo, I have an application which implements asynch communication between the web and business layer using JMS.
    On a page a user can upload files, which are processed by the backend. For large files this can be a long running process, thats why we use JMS to send the file asynchronously and use JMS to update progress information on the page.
    The application works fine on JBoss 6 with HornetMQ.
    After porting to Weblogic I see consistently a strange phenomenon. The update messages from the processing backend logic are send as expected. But the receiver does not receive one message after another but receives all the messsages almost at once after only the producer has sent the last message.
    For me this is totally unexpected behavior and of course our progress bar on the page does not work properly, but merely jumps from 0 to 100% after the data has been processed.
    It looks like the consumer waits until the producer has finished its transaction. But how can this be possibly? I have learned that transaction never span producer - messagesystem - consumer.
    Example Code:
    Producer:
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import javax.annotation.Resource;
    import javax.ejb.EJB;
    import javax.ejb.Stateless;
    import javax.interceptor.Interceptors;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.DeliveryMode;
    import javax.jms.Destination;
    import javax.jms.JMSException;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import org.apache.log4j.Logger;
    import com.sun.tools.ws.wsdl.document.jaxws.Exception;
    import dsde.core.aspects.DsdeException;
    import dsde.core.aspects.ExceptionHandler;
    import dsde.core.entity.Data;
    @Stateless
    @Interceptors(ExceptionHandler.class)
    public class ParserBean implements Parser {
         private Logger log = Logger.getLogger(this.getClass());
         @EJB
         private DataDAO dataDAO;
         //Weblogic
         @Resource(mappedName="jms.BackQueue")
         //Jboss
         //@Resource(mappedName="queue/dsdeBackQueue")
         private Destination backQueue;
         //Weblogic
         @Resource(mappedName="jms.dsdeConnectionFactory")
         //JBoss
         //@Resource(mappedName="XAConnectionFactory")
         private ConnectionFactory connectionFactory;
         private Connection connection;
         @Override
         public void parse(String text, String description, String sessionId) throws DsdeException{
              double percentDone = 0;
              double j = 0.0;
              //Simuliere was langdauerndes, schwieriges
              for (int i=0; i < text.length(); i++) {
                   j = i;
                   percentDone = j / text.length() * 100;
                   try {
                        Thread.sleep(1000);
                   } catch (InterruptedException e) {
                        log.error(e);
                   if (i % 2 == 0) {
                        //periodisch das Frontend mit dem Fortschritt updaten
                        sendFeedback((int)percentDone, sessionId);
              //Zum Schluss noch senden dass wir fertig sind
              //Sonst wird der Send Button nicht wieder aktiv
              percentDone=100;
              sendFeedback((int)percentDone, sessionId);
              //Jetzt wird noch richtig geparsed :-)
              String[] words = text.split(" ");
              //Entity konstruieren
              Data data = new Data(description, words);
              //Das Ergebnis in die Datenbank schreiben
              dataDAO.saveData(data);
         private void sendFeedback(int percentDone, String sessionId) {
              Session session = null;
              try {
                   session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                   MessageProducer producer = session.createProducer(backQueue);
                   producer.setTimeToLive(50000);
                   producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                   TextMessage message = session.createTextMessage();
                   message.setJMSCorrelationID(sessionId);
                   message.setText("" + percentDone);
                   producer.send(message);
                   log.info("ParserBean has sent " + percentDone);
              } catch (JMSException e) {
                   log.error(e);
              } finally {
                   if (session != null) {
                        try {
                             session.close();
                        } catch (JMSException e) {
                             log.error(e);
         @PostConstruct
         public void init(){
              try {
                   connection = connectionFactory.createConnection();
              } catch (JMSException e) {
                   log.error(e);
         @PreDestroy
         public void close() {
              try {
                   connection.close();
              } catch (JMSException e) {
                   log.error(e);
    }Consumer:
    import javax.annotation.ManagedBean;
    import javax.annotation.PostConstruct;
    import javax.annotation.PreDestroy;
    import javax.faces.bean.SessionScoped;
    import javax.faces.context.FacesContext;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Queue;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    import javax.servlet.http.HttpSession;
    import org.apache.log4j.Logger;
    @ManagedBean
    @SessionScoped
    public class FeedbackReceiverBean implements MessageListener {
         private Logger log = Logger.getLogger(this.getClass());
         //jndi names of managed objects
         private String connectionFactoryName;
         private String queueName;
         private Connection connection;
         private Session session;
         private int percent;
         private boolean disabled;
         public boolean isDisabled() {
              return disabled;
         public void setDisabled(boolean disabled) {
              this.disabled = disabled;
         public int getPercent() {
              return percent;
         public void setPercent(int percent) {
              this.percent = percent;
         public void setConnectionFactoryName(String connectionFactoryName) {
              this.connectionFactoryName = connectionFactoryName;
         public void setQueueName(String queueName) {
              this.queueName = queueName;
         @PostConstruct
         public void init() throws NamingException, JMSException {
              FacesContext facesContext = FacesContext.getCurrentInstance();
              HttpSession httpSession = (HttpSession) facesContext.getExternalContext().getSession(false);
              String sessionId = httpSession.getId();
              Context context = new InitialContext();
              ConnectionFactory connectionFactory = (ConnectionFactory) context.lookup(this.connectionFactoryName);
              Queue queue = (Queue) context.lookup(this.queueName);
              this.connection = connectionFactory.createConnection();
              this.session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
              String filter = "JMSCorrelationID = '" + sessionId + "'";
              MessageConsumer consumer = session.createConsumer(queue, filter);
              consumer.setMessageListener(this);
              connection.start();
         @PreDestroy
         public void close() throws JMSException {
              this.session.close();
              this.connection.close();
         @Override
         public void onMessage(Message message) {
              if (message instanceof TextMessage) {
                   TextMessage textMessage = (TextMessage) message;
                   try {
                        this.percent = Integer.parseInt(textMessage.getText());
                        if (percent >= 100) {
                             this.disabled = false;
                        log.info("Prozent " + percent);
                   } catch (JMSException e) {
                        log.error(e);
              else {
                   log.error(message.toString() + " is no TextMessage");
         public void disable() {
              this.disabled = true;
    }Configuration:
    <?xml version='1.0' encoding='UTF-8'?>
    <weblogic-jms xmlns="http://xmlns.oracle.com/weblogic/weblogic-jms" xmlns:sec="http://xmlns.oracle.com/weblogic/security" xmlns:wls="http://xmlns.oracle.com/weblogic/security/wls" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-jms http://xmlns.oracle.com/weblogic/weblogic-jms/1.1/weblogic-jms.xsd">
      <connection-factory name="dsdeConnectionFcatory">
        <default-targeting-enabled>true</default-targeting-enabled>
        <jndi-name>jms/dsdeConnectionFactory</jndi-name>
        <default-delivery-params>
          <default-delivery-mode>Persistent</default-delivery-mode>
          <default-time-to-deliver>0</default-time-to-deliver>
          <default-time-to-live>100</default-time-to-live>
          <default-priority>4</default-priority>
          <default-redelivery-delay>0</default-redelivery-delay>
          <send-timeout>10</send-timeout>
          <default-compression-threshold>2147483647</default-compression-threshold>
        </default-delivery-params>
        <client-params>
          <client-id-policy>Restricted</client-id-policy>
          <subscription-sharing-policy>Exclusive</subscription-sharing-policy>
          <messages-maximum>10</messages-maximum>
        </client-params>
        <transaction-params>
          <xa-connection-factory-enabled>true</xa-connection-factory-enabled>
        </transaction-params>
        <security-params>
          <attach-jmsx-user-id>false</attach-jmsx-user-id>
        </security-params>
      </connection-factory>
      <queue name="dsdeQueue">
        <sub-deployment-name>dsdeQueue</sub-deployment-name>
        <jndi-name>jms/dsdeQueue</jndi-name>
      </queue>
      <queue name="dsdeFeedbackQueue">
        <sub-deployment-name>dsdeFeedbackQueue</sub-deployment-name>
        <jndi-name>jms/dsdeFeedbackQueue</jndi-name>
      </queue>
      <queue name="dsdeBackQueue">
        <sub-deployment-name>dsdeBackQueue</sub-deployment-name>
        <jndi-name>jms/BackQueue</jndi-name>
      </queue>
    </weblogic-jms>Any help would be greatly appreciated.
    Thanks,
    Hans

    Thanks for posting your analysis!
    I think your solution is probably best.
    FYI: Your JMS session was never a "transacted" session. It's definitely confusing, but the term "transacted session" has a special meaning in JMS, it actually refers to a session that is not XA/JTA aware and instead maintains an internal local transaction that's scoped only to the current JMS session's operations. A transacted session is created by passing "true" to the first parameter of createSession, and such a session's local transaction is committed by calling session.commit() (which starts a new transaction). To further add to the confusion, I think that JEE servers are actually obligated to ignore requests to set the transacted flag to true -- WebLogic does this trick by secretly wrapping access to the JMS API when applications lookup JMS connection factories via a resource reference.
    Regards,
    Tom

  • Integration Sap PI - JCAPS through JMS queue problem

    Hi to all,
    we have to send data through Sap PI 7.1 to an application server Sun Seebeyond JCAPS via JNDI JMS.
    We created a Simple Java Test Class that sends data to Jcaps Queues using stcms libraries suggested from Sun.
    I already tested this code on Eclipse, and it works fine. (Jcaps receive correctly messages sent from Java Class)
    Using JMS Communication Channel on Sap PI with same settings used on Java Class (Queue Connection Factory, Initial Context Factory, URL, Queue Name) and deployed the same stcms libraries on PI,
    Jcaps doesn't receive any message. In ABAP Monitor and Communication Channel Monitor we don't check any error: infact in CC Monitor a "Succesfully Connected to Queue" is displayed.
    During our tests on Java Class, we tried to change CreateQueueSession istruction ( qsession = qcon.createQueueSession( false, javax.jms.Session.CLIENT_ACKNOWLEDGE ));
    we checked that any other setting (changing parameters required from Java Method), different from setting just exposed,
    messages are not received from Jcaps and we don't have any error during sending operation (like happens in Sap PI).
    So correct setting to send message to JCAPS are:
    Transacted = False;
    acknowledgeMode = CLIENT_ACKNOWLEDGE;
    How we can set this parameter in JMS Communication Channel on Sap PI?
    If the CC configuration is correct, where we can find the problem and what kind of issue could be? On client side (Sap PI) or on Server side (JCAPS)?
    Thanks

    In order to set Transacted = false, uncheck "Transactional JMS Session" in the Processing Tab of JMS adapter. Keep in mind that the message delivery is NOT guaranteed in such a scenario. It is recommended to use transactional sessions in JMS scenarios.
    The JMS sessions created by JMS adapter are of type "AUTO_ACKNOWLEDGE".
    Regards,
    TK
    Edited by: Sameej T.K. on Oct 20, 2010 10:47 PM

  • JMS Queue problems causing EJB to rollback....

              We recently purchased WLS 6.1 and we have been using the product for the last few
              months. I am having a problem which I have detailed below. I have provided as much
              information as possible. If you need additional information, please let me know.
              Server A Config:
              Pentium III, 1000Mhz
              Windows 2000, SP2
              WLS WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
              Server B Config:
              SunBlade 100
              Solaris 5.8
              WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
              Server A contains a session EJB called GoalManager. This EJB has a method named cancel().
              The transactional attribute for all methods supported by this bean is REQUIRED. GoalManager
              uses a transactional data source deployed on Server A named "goal". There is nothing
              special about this data source aside from the fact that I have enabled two phase
              commit for it because a previous error was indicating that this was a required setting
              for the pool. A JMS server exists on Server B. A queue named "emailQueue" is set
              up as a destination on this JMS server. I also have a MDB on Server B that listens
              for messages on this queue. When a message is received, the MDB's onMessage() method
              extracts some properties from the message and sends an email to the specified recipient
              in the message. I have confirmed that this queue and MDB are working properly because
              I ran a small test program from the command prompt which creates a message and sends
              it to the queue on Server B. The MDB gets the message and sends the email to the
              correct recipient, so I am sure there are no misconfigurations on the server.
              The problem is as follows: The cancel() method in the GoalManager EJB on Server A
              performs some database work. If no exceptions are raised, the last task in the method
              attempts to access the queue on Server B and send a message to the queue. Here is
              the code that I am using to access the queue:
              QueueConnectionFactory queueFactory = (QueueConnectionFactory)context.lookup( "javax.jms.QueueConnectionFactory");
              QueueConnection queueConnection = queueFactory.createQueueConnection();
              Queue queue = (Queue)context.lookup( "emailQueue");
              QueueSession queueSession = queueConnection.createQueueSession( false, Session.AUTO_ACKNOWLEDGE);
              QueueSender queueSender = queueSession.createSender( queue);
              The cancel() method executes without error, but when the EJB container on Server
              A attempts to commit the transaction at the end of the cancel() method, I am receiving
              the following error on Server A's log:
              <Error> <EJB> <Exception during commit of transaction Name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
              Xid=0:7c2dda32cf39a36e(6911242),
              Status=Rolled back. [Reason=javax.transaction.xa.XAException],
              numRepliesOwedMe=0,
              numRepliesOwedOthers=0,
              seconds since begin=2,
              seconds left=10,
              ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=rolledback,assigned=server1),
              ServerResourceInfo[JMS_EMailServer_NotDurable]=(state=rolledback,assigned=server1),
              SCInfo[FRX+server1]=(state=rolledback),
              SCInfo[frxnet+wlsvr1]=(state=rolledback),
              properties=({weblogic.transaction.name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
              weblogic.jdbc=t3://172.16.200.9:9005}),
              OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=server1+172.16.200.9:9005+FRX+,
              Resources={})],
              CoordinatorURL=server1+172.16.200.9:9005+FRX+): javax.transaction.xa.XAException
              at weblogic.jms.backend.BEXAResource.prepare(BEXAResource.java:853)
              at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:1124)
              at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:370)
              at weblogic.transaction.internal.ServerSCInfo.startPrepare(ServerSCInfo.java:186)
              at weblogic.transaction.internal.ServerTransactionImpl.localPrepare(ServerTransactionImpl.java:1822)
              at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1607)
              at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:218)
              at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
              at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
              at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
              at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
              at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
              at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
              at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              --------------- nested within: ------------------
              weblogic.transaction.RollbackException: Could not prepare resource 'JMS_EMailServer_NotDurable
              - with nested exception:
              [javax.transaction.xa.XAException]
              at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1475)
              at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:263)
              at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
              at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
              at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
              at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
              at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
              at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
              at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              Just a quick note, I tried to change the following line to specify a "transacted"
              JMS session by passing "true" to the statement below. When I tested this, the cancel()
              method raised no exceptions, but the MDB on Server B is never invoked and the email
              is never sent. Strange.
              QueueSession queueSession = queueConnection.createQueueSession( true, Session.AUTO_ACKNOWLEDGE);
              If you need more info, let me know. I thank you for your help.
              

    Correct. According to the trace you have it set at 10 seconds, while the default is 30 seconds.
              Tom
              SAF wrote:
              > Thanks for the reply.
              >
              > Increase the trx time? You mean JTA, right?
              >
              > I already opened a case with BEA, so I'm waiting to get a response from them.
              >
              > Thanks again,
              >
              > Raffi
              >
              > Tom Barnes <[email protected]> wrote:
              > >Hi,
              > >
              > >I looked at the BEXAResource.java source code which the stack trace points
              > >at. It seems that from the
              > >JMS server's resource manager's point of view, it never heard of the transaction
              > >before, indicating
              > >that the transaction may have already rolled back. I think this could
              > >happen if the transaction
              > >times out before commit() is called, but I'm not sure what is wrong in your
              > >case -- as according
              > >to the trace you provided, your tx is 2 seconds old and your tx-timout is
              > >10 seconds.
              > >
              > >In any case, it looks like the culprit may be in the transaction code and
              > >not the JMS code...
              > >
              > >I suggest:
              > > A) increasing your tx timeout (what the heck give it a try)
              > > B) could it somehow be a clock synchronization problem? are multiple
              > >servers involved?
              > > C) posting to the transaction newsgroup
              > > D) contacting customer support
              > >
              > >Tom
              > >
              > >SAF wrote:
              > >
              > >> We recently purchased WLS 6.1 and we have been using the product for the
              > >last few
              > >> months. I am having a problem which I have detailed below. I have provided
              > >as much
              > >> information as possible. If you need additional information, please let
              > >me know.
              > >>
              > >> Server A Config:
              > >> Pentium III, 1000Mhz
              > >> Windows 2000, SP2
              > >> WLS WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
              > >>
              > >> Server B Config:
              > >> SunBlade 100
              > >> Solaris 5.8
              > >> WebLogic Server 6.1 SP2 12/18/2001 11:13:46 #154529
              > >>
              > >> Server A contains a session EJB called GoalManager. This EJB has a method
              > >named cancel().
              > >> The transactional attribute for all methods supported by this bean is
              > >REQUIRED. GoalManager
              > >> uses a transactional data source deployed on Server A named "goal". There
              > >is nothing
              > >> special about this data source aside from the fact that I have enabled
              > >two phase
              > >> commit for it because a previous error was indicating that this was a
              > >required setting
              > >> for the pool. A JMS server exists on Server B. A queue named "emailQueue"
              > >is set
              > >> up as a destination on this JMS server. I also have a MDB on Server B
              > >that listens
              > >> for messages on this queue. When a message is received, the MDB's onMessage()
              > >method
              > >> extracts some properties from the message and sends an email to the specified
              > >recipient
              > >> in the message. I have confirmed that this queue and MDB are working properly
              > >because
              > >> I ran a small test program from the command prompt which creates a message
              > >and sends
              > >> it to the queue on Server B. The MDB gets the message and sends the email
              > >to the
              > >> correct recipient, so I am sure there are no misconfigurations on the
              > >server.
              > >>
              > >> The problem is as follows: The cancel() method in the GoalManager EJB
              > >on Server A
              > >> performs some database work. If no exceptions are raised, the last task
              > >in the method
              > >> attempts to access the queue on Server B and send a message to the queue.
              > >Here is
              > >> the code that I am using to access the queue:
              > >>
              > >> QueueConnectionFactory queueFactory = (QueueConnectionFactory)context.lookup(
              > >"javax.jms.QueueConnectionFactory");
              > >> QueueConnection queueConnection = queueFactory.createQueueConnection();
              > >> Queue queue = (Queue)context.lookup( "emailQueue");
              > >> QueueSession queueSession = queueConnection.createQueueSession( false,
              > >Session.AUTO_ACKNOWLEDGE);
              > >> QueueSender queueSender = queueSession.createSender( queue);
              > >>
              > >> The cancel() method executes without error, but when the EJB container
              > >on Server
              > >> A attempts to commit the transaction at the end of the cancel() method,
              > >I am receiving
              > >> the following error on Server A's log:
              > >>
              > >> <Error> <EJB> <Exception during commit of transaction Name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
              > >> Xid=0:7c2dda32cf39a36e(6911242),
              > >> Status=Rolled back. [Reason=javax.transaction.xa.XAException],
              > >> numRepliesOwedMe=0,
              > >> numRepliesOwedOthers=0,
              > >> seconds since begin=2,
              > >> seconds left=10,
              > >> ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=rolledback,assigned=server1),
              > >> ServerResourceInfo[JMS_EMailServer_NotDurable]=(state=rolledback,assigned=server1),
              > >> SCInfo[FRX+server1]=(state=rolledback),
              > >> SCInfo[frxnet+wlsvr1]=(state=rolledback),
              > >> properties=({weblogic.transaction.name=[EJB com.frx.emp.go.ejb.session.goal.GoalManagerBean.cancelGoal(com.frx.emp.entity.Employee,com.frx.emp.go.entity.Goal)],
              > >>
              > >> weblogic.jdbc=t3://172.16.200.9:9005}),
              > >> OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=server1+172.16.200.9:9005+FRX+,
              > >> Resources={})],
              > >> CoordinatorURL=server1+172.16.200.9:9005+FRX+): javax.transaction.xa.XAException
              > >> at weblogic.jms.backend.BEXAResource.prepare(BEXAResource.java:853)
              > >> at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:1124)
              > >> at weblogic.transaction.internal.ServerResourceInfo.prepare(ServerResourceInfo.java:370)
              > >> at weblogic.transaction.internal.ServerSCInfo.startPrepare(ServerSCInfo.java:186)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.localPrepare(ServerTransactionImpl.java:1822)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:1607)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:218)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
              > >> at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
              > >> at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
              > >> at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
              > >> at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
              > >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              > >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
              > >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
              > >> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
              > >> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
              > >> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              > >> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              > >> --------------- nested within: ------------------
              > >> weblogic.transaction.RollbackException: Could not prepare resource 'JMS_EMailServer_NotDurable
              > >> - with nested exception:
              > >> [javax.transaction.xa.XAException]
              > >> at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1475)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:263)
              > >> at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:190)
              > >> at weblogic.ejb20.internal.BaseEJBObject.postInvoke(BaseEJBObject.java:231)
              > >> at com.frx.emp.go.ejb.session.goal.GoalManagerBean_e3dvd2_EOImpl.cancelGoal(GoalManagerBean_e3dvd2_EOImpl.java:459)
              > >> at com.frx.emp.go.web.handler.UpdateGoalHandler.handleRequest(UpdateGoalHandler.java:55)
              > >> at com.frx.emp.web.mvc.HandlerMappedController.service(HandlerMappedController.java:115)
              > >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              > >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:265)
              > >> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:200)
              > >> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:2495)
              > >> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2204)
              > >> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
              > >> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              > >>
              > >> Just a quick note, I tried to change the following line to specify a "transacted"
              > >> JMS session by passing "true" to the statement below. When I tested this,
              > >the cancel()
              > >> method raised no exceptions, but the MDB on Server B is never invoked
              > >and the email
              > >> is never sent. Strange.
              > >>
              > >> QueueSession queueSession = queueConnection.createQueueSession( true,
              > >Session.AUTO_ACKNOWLEDGE);
              > >>
              > >> If you need more info, let me know. I thank you for your help.
              > >
              

  • JMS  publsig problem

    Hi,
    I am trying to develope a BPEL process which publish jms topic to oc4j jms jms/demoTopic.there I am getting error over there. Below is the error msg
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [ Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - WSIF JCA Execute of operation 'Produce_Message' failed due to: ERRJMS_MSGPROD_CONSTR_ERR. Unable to construct MessageProducer. ; nested exception is: ORABPEL-12164 ERRJMS_MSGPROD_CONSTR_ERR. Unable to construct MessageProducer. Please examine the log file to determine the problem.
    below is the log
    com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is 2e6d902e744f9cf2:2f48d2:108e104ba20:-7ffa. Please check the process instance for detail.
         at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:108)
         at IDeliveryBean_StatelessSessionBeanWrapper22.request(IDeliveryBean_StatelessSessionBeanWrapper22.java:288)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:101)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:65)
         at ngDoInitiate.jspService(_ngDoInitiate.java:255)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:121)
         at com.evermind.server.http.EvermindPageContext.include(EvermindPageContext.java:267)
         at displayProcess.jspService(_displayProcess.java:658)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:220)
         at com.collaxa.cube.fe.DomainFilter.doFilter(DomainFilter.java:138)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:649)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
         at java.lang.Thread.run(Thread.java:534)
    Caused by: com.oracle.bpel.client.delivery.ReceiveTimeOutException: Waiting for response has timed out. The conversation id is 2e6d902e744f9cf2:2f48d2:108e104ba20:-7ffa. Please check the process instance for detail.
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:523)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:425)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:132)
         at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:93)
         ... 29 more
    oc4j-ra.xml entry is below
    <connector-factory location="eis/Jms/JmsPublishAdapter" connector-name="Jms Adapter">
              <config-property name="connectionFactoryLocation" value="jms/TopicConnectionFactory"/>
              <config-property name="factoryProperties" value=""/>
              <config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
              <config-property name="isTopic" value="true"/>
              <config-property name="isTransacted" value="false"/>
              <config-property name="username" value="admin"/>
              <config-property name="password" value="welcome"/>
         </connector-factory>
    your help to find a soln will be higly appreciated.

    Hi,
    Below is the log you have requested for
    <2006-01-20 10:01:09,673> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> registered wsdl at
    http://TCS052539:9700/orabpel/default/JMSTest1/1.0/_JMSTest1.wsdl
    <2006-01-20 10:01:09,673> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> got wsdl at:
    http://TCS052539:9700/orabpel/default/JMSTest1/1.0/_JMSTest1.wsdl
    <2006-01-20 10:01:09,773> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> registered wsdl at
    C:\OraBPELPM_1\integration\orabpel\domains\default\tmp\.bpel_JMSTest1_1.0.jar\JMSTest1.wsdl
    <2006-01-20 10:01:09,773> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> got wsdl at:
    C:\OraBPELPM_1\integration\orabpel\domains\default\tmp\.bpel_JMSTest1_1.0.jar\JMSTest1.wsdl
    <2006-01-20 10:01:09,843> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> registered wsdl at
    C:\OraBPELPM_1\integration\orabpel\domains\default\tmp\.bpel_JMSTest1_1.0.jar\JMSSrv.wsdl
    <2006-01-20 10:01:09,843> <DEBUG> <default.collaxa.cube.ws> <WSDLManager::getWSDL> got wsdl at:
    C:\OraBPELPM_1\integration\orabpel\domains\default\tmp\.bpel_JMSTest1_1.0.jar\JMSSrv.wsdl
    <2006-01-20 10:01:15,491> <DEBUG> <default.collaxa.cube.ws> <WSInvocationManager::invoke> operation: Produce_Message,
    partnerLink: <partnerLink name="JMSPartner"
    partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/}Produce_Message_plt">
    <myRole name="null">
    <ServiceName>null</ServiceName>
    <PortType>null</PortType>
    <Address>null</Address>
    </myRole>
    <partnerRole
    name="Produce_Message_role">
    <ServiceName>null</ServiceName>
    <PortType>{http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/}Produce_Message_ptt</PortType>
    <Address>null</Address>
    </partnerRole>
    <conversationId>bpel://localhost/default/JMSTest1~1.0/801-BpInv0-BpSeq0.3-3</conversationId>
    <properties>{}</properties>
    </partnerLink>
    <2006-01-20 10:01:15,491> <DEBUG> <default.collaxa.cube.ws> <WSInvocationManager::invoke> def is
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl
    <2006-01-20 10:01:15,501> <DEBUG> <default.collaxa.cube.ws> <WSIFInvocationHandler::invoke> opName=Produce_Message,
    parnterLink=<partnerLink name="JMSPartner"
    partnerLinkType="{http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/}Produce_Message_plt">
    <myRole name="null">
    <ServiceName>null</ServiceName>
    <PortType>null</PortType>
    <Address>null</Address>
    </myRole>
    <partnerRole
    name="Produce_Message_role">
    <ServiceName>{http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/}JMSSrv</ServiceName>
    <PortType>{http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/}Produce_Message_ptt</PortType>
    <Address>null</Address>
    </partnerRole>
    <conversationId>bpel://localhost/default/JMSTest1~1.0/801-BpInv0-BpSeq0.3-3</conversationId>
    <properties>{}</properties>
    </partnerLink>
    <2006-01-20 10:01:15,662> <INFO> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Using JCA Connection Pool - max size = <unbounded>
    <2006-01-20 10:01:15,672> <DEBUG> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Looking up Resource Adapter JDNI location
    'eis/Jms/JmsPublishAdapter'
    <2006-01-20 10:01:15,672> <DEBUG> <default.collaxa.cube.ws> <JMSAdapter::Outbound>
    JMSConnectionFactoryFactory_getConnectionFactory: looking up 'jms/TopicConnectionFactory'
    <2006-01-20 10:01:15,982> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> Created new managed connection for JMS user
    admin
    <2006-01-20 10:01:15,982> <DEBUG> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JmsSpiLocalTransactionImpl_<init>: Not
    transacted
    <2006-01-20 10:01:16,012> <DEBUG> <default.collaxa.cube.ws> <AdapterFramework::Outbound> Instantiating outbound JCA
    interactionSpec oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec
    <2006-01-20 10:01:16,012> <DEBUG> <default.collaxa.cube.ws> <AdapterFramework::Outbound> Populating outbound JCA
    interactionSpec oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec with properties: {OpaqueSchema=false, TimeToLive=0,
    DeliveryMode=Non-Persistent, PayloadType=TextMessage, DestinationName=jms/demoQueue}
    <2006-01-20 10:01:16,082> <WARN> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - The jca:header element
    oracle.tip.adapter.fw.wsif.jca.JCAHeader@27de24<jca:header message=null:OutboundHeader_msgoutboundHeader/> does not match the
    outbound headers provided in {}
    <2006-01-20 10:01:16,142> <DEBUG> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JmsCciLocalTransactionImpl_<init>: Not
    transacted
    <2006-01-20 10:01:16,142> <DEBUG> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Starting JCA LocalTransaction
    <2006-01-20 10:01:16,142> <DEBUG> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Invoking JCA outbound Interaction
    <2006-01-20 10:01:16,152> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JMSMessageProducer_ctor: Constructed
    MessageProducer for destination jms/demoQueue (payload = 1)
    <2006-01-20 10:01:16,152> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JMSMessageProducer_init: Creating
    MessageProducer for destination jms/demoQueue (payload = 1)
    <2006-01-20 10:01:16,152> <ERROR> <default.collaxa.cube.ws> <JMSAdapter::Outbound> Nested Exception
    <2006-01-20 10:01:16,152> <ERROR> <default.collaxa.cube.ws> <JMSAdapter::Outbound>
    ORABPEL-12143
    ERRJMS_DEST_NOT_TOPIC.
    Destination "jms/demoQueue" is not a topic.
    Please examine the log file to determine the problem.
         at oracle.tip.adapter.jms.JMS.JMSDestination.getTopic(JMSDestination.java:99)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createProducer(JMSConnection.java:344)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createProducer(JMSConnection.java:328)
         at oracle.tip.adapter.jms.JMS.JMSMessageProducer.createProducer(JMSMessageProducer.java:157)
         at oracle.tip.adapter.jms.JMS.JMSMessageProducer.init(JMSMessageProducer.java:126)
         at oracle.tip.adapter.jms.outbound.JmsProducer.init(JmsProducer.java:94)
         at oracle.tip.adapter.jms.outbound.JmsProducerManager.getProducer(JmsProducerManager.java:64)
         at oracle.tip.adapter.jms.JmsInteraction.executeProduce(JmsInteraction.java:178)
         at oracle.tip.adapter.jms.JmsInteraction.execute(JmsInteraction.java:146)
         at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:463)
         at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeInputOnlyOperation(WSIFOperation_JCA.java:653)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:439)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:310)
         at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:184)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:601)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:316)
         at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:179)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3396)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1905)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:100)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:185)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5408)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1300)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:117)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:146)
         at
    ICubeEngineLocalBean_StatelessSessionBeanWrapper0.syncCreateAndInvoke(ICubeEngineLocalBean_StatelessSessionBeanWrapper0.java:
    483)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:492)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:425)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:132)
         at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:93)
         at IDeliveryBean_StatelessSessionBeanWrapper22.request(IDeliveryBean_StatelessSessionBeanWrapper22.java:288)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:101)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:65)
         at ngDoInitiate.jspService(_ngDoInitiate.java:255)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:121)
         at com.evermind.server.http.EvermindPageContext.include(EvermindPageContext.java:267)
         at displayProcess.jspService(_displayProcess.java:658)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:220)
         at com.collaxa.cube.fe.DomainFilter.doFilter(DomainFilter.java:138)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:649)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
         at java.lang.Thread.run(Thread.java:534)
    <2006-01-20 10:01:16,162> <ERROR> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Could not invoke operation 'Produce_Message' against the
    'JMSAdapter' due to:
    ORABPEL-12164
    ERRJMS_MSGPROD_CONSTR_ERR.
    Unable to construct MessageProducer.
    Please examine the log
    file to determine the problem.
         at oracle.tip.adapter.jms.JMS.JMSMessageProducer.init(JMSMessageProducer.java:132)
         at oracle.tip.adapter.jms.outbound.JmsProducer.init(JmsProducer.java:94)
         at oracle.tip.adapter.jms.outbound.JmsProducerManager.getProducer(JmsProducerManager.java:64)
         at oracle.tip.adapter.jms.JmsInteraction.executeProduce(JmsInteraction.java:178)
         at oracle.tip.adapter.jms.JmsInteraction.execute(JmsInteraction.java:146)
         at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeRequestResponseOperation(WSIFOperation_JCA.java:463)
         at oracle.tip.adapter.fw.wsif.jca.WSIFOperation_JCA.executeInputOnlyOperation(WSIFOperation_JCA.java:653)
         at com.collaxa.cube.ws.WSIFInvocationHandler.invoke(WSIFInvocationHandler.java:439)
         at com.collaxa.cube.ws.WSInvocationManager.invoke2(WSInvocationManager.java:310)
         at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:184)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__invoke(BPELInvokeWMP.java:601)
         at com.collaxa.cube.engine.ext.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:316)
         at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:179)
         at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3396)
         at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1905)
         at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:100)
         at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:185)
         at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5408)
         at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1300)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.createAndInvoke(CubeEngineBean.java:117)
         at com.collaxa.cube.engine.ejb.impl.CubeEngineBean.syncCreateAndInvoke(CubeEngineBean.java:146)
         at
    ICubeEngineLocalBean_StatelessSessionBeanWrapper0.syncCreateAndInvoke(ICubeEngineLocalBean_StatelessSessionBeanWrapper0.java:
    483)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequestAnyType(DeliveryHandler.java:492)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.initialRequest(DeliveryHandler.java:425)
         at com.collaxa.cube.engine.delivery.DeliveryHandler.request(DeliveryHandler.java:132)
         at com.collaxa.cube.ejb.impl.DeliveryBean.request(DeliveryBean.java:93)
         at IDeliveryBean_StatelessSessionBeanWrapper22.request(IDeliveryBean_StatelessSessionBeanWrapper22.java:288)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:101)
         at com.oracle.bpel.client.delivery.DeliveryService.request(DeliveryService.java:65)
         at ngDoInitiate.jspService(_ngDoInitiate.java:255)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.include(ServletRequestDispatcher.java:121)
         at com.evermind.server.http.EvermindPageContext.include(EvermindPageContext.java:267)
         at displayProcess.jspService(_displayProcess.java:658)
         at com.orionserver.http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
         at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:347)
         at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
         at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:810)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:220)
         at com.collaxa.cube.fe.DomainFilter.doFilter(DomainFilter.java:138)
         at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:649)
         at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:322)
         at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
         at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
         at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
         at java.lang.Thread.run(Thread.java:534)
    Caused by: ORABPEL-12143
    ERRJMS_DEST_NOT_TOPIC.
    Destination "jms/demoQueue" is not a topic.
    Please examine the log file to
    determine the problem.
         at oracle.tip.adapter.jms.JMS.JMSDestination.getTopic(JMSDestination.java:99)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createProducer(JMSConnection.java:344)
         at oracle.tip.adapter.jms.JMS.JMSConnection.createProducer(JMSConnection.java:328)
         at oracle.tip.adapter.jms.JMS.JMSMessageProducer.createProducer(JMSMessageProducer.java:157)
         at oracle.tip.adapter.jms.JMS.JMSMessageProducer.init(JMSMessageProducer.java:126)
         ... 55 more
    <2006-01-20 10:01:16,162> <ERROR> <default.collaxa.cube.ws> <AdapterFramework::Outbound>
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - Rolling back JCA LocalTransaction
    <2006-01-20 10:01:16,162> <DEBUG> <default.collaxa.cube.ws> <WSIFInvocationHandler::invoke> Fault happened:
    file:/C:/OraBPELPM_1/integration/orabpel/domains/default/tmp/.bpel_JMSTest1_1.0.jar/JMSSrv.wsdl [
    Produce_Message_ptt::Produce_Message(JMSTest1ProcessRequest) ] - WSIF JCA Execute of operation 'Produce_Message' failed due
    to: ERRJMS_MSGPROD_CONSTR_ERR.
    Unable to construct MessageProducer.
    ; nested exception is:
         ORABPEL-12164
    ERRJMS_MSGPROD_CONSTR_ERR.
    Unable to construct MessageProducer.
    Please examine the log file to determine the problem.
    Below is the JMS Adapter wsdl(JMSSrv.wsdl)
    <definitions
    name="JMSSrv"
    targetNamespace="http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/jms/JMSSrv/"
    xmlns:plt="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:jca="http://xmlns.oracle.com/pcbpel/wsdl/jca/"
    xmlns:imp1="http://xmlns.oracle.com/JMSTest1"
    xmlns:hdr="http://xmlns.oracle.com/pcbpel/adapter/jms/"
    >
    <import namespace="http://xmlns.oracle.com/JMSTest1" location="JMSTest1.wsdl"/>
    <import namespace="http://xmlns.oracle.com/pcbpel/adapter/jms/" location="jmsAdapterOutboundHeader.wsdl"/>
    <message name="JMSTest1ProcessRequest_msg">
    <part name="JMSTest1ProcessRequest" element="imp1:JMSTest1ProcessRequest"/>
    </message>
    <portType name="Produce_Message_ptt">
    <operation name="Produce_Message">
    <input message="tns:JMSTest1ProcessRequest_msg"/>
    </operation>
    </portType>
    <binding name="Produce_Message_binding" type="tns:Produce_Message_ptt">
    <jca:binding />
    <operation name="Produce_Message">
    <jca:operation
    InteractionSpec="oracle.tip.adapter.jms.outbound.JmsProduceInteractionSpec"
    DestinationName="jms/demoQueue"
    DeliveryMode="Non-Persistent"
    TimeToLive="0"
    PayloadType="TextMessage"
    OpaqueSchema="false" >
    </jca:operation>
    <input>
    <jca:header message="hdr:OutboundHeader_msg" part="outboundHeader"/>
    </input>
    </operation>
    </binding>
    <service name="JMSSrv">
    <port name="Produce_Message_pt" binding="tns:Produce_Message_binding">
    <jca:address location="eis/Jms/JmsPublishAdapter" />
    </port>
    </service>
    <plt:partnerLinkType name="Produce_Message_plt" >
    <plt:role name="Produce_Message_role" >
    <plt:portType name="tns:Produce_Message_ptt" />
    </plt:role>
    </plt:partnerLinkType>
    </definitions>
    Thaking youn for your cooperation.
    Regards
    Moni

  • JMS transaction between two queues

    Hi there,
              I have been asked to build some code that will act as an adapter
              between two legacy systems. Basically I will have to read from a
              queue, transform the information and write it to the other, then
              receive the response, transform it, and put it again back to the
              "caller" system.
              There are 4 queues implicated in this task.
              I will to use JMS Api in my code but I have found a problem. The way
              of performing a transaction in JMS is this:
              QueueSession queueSession = queueConnection.createQueueSession(true,
              0);
              "Here, the first argument means that the session is transacted; the
              second indicates that message acknowledgment is not specified for
              transacted sessions."
              As queueConnection is a connection to ONE queue, I can only perform
              transactions to ONE queue! But I don´t want to consume a message till
              I know it has been sent correctly to the other side.
              I have also read that some JMS providers support JTA transactions.
              But I don´t know if this is the right way to go.
              Can anybody bring some light to this issue.
              Thaks al lot for your attention!!
              

              This post has blossomed into several threads. I'm going to
              attempt a shot-gun approach to answer all questions.
              On MQSeries:
              See "How to use IBM MQ as a JMS Provider?" posts for more info.
              On transacted sessions:
              If this is ALL MQSeries, then it is up to MQSeries if a transacted
              session can span multiple queues and/or servers. WL supports this.
              MQSeries may simply prevent a session from
              spanning multiple servers and/or queues. Note that other vendors,
              that do not have their own TX monitor, very very likely do
              not have a 2PC in a transacted session that spans multiple servers
              (meaning it is not truly transactional).
              On JTA and multiple queues:
              The whole reason for being for JTA is to be able to span multiple
              operations. Yes, this is supported in WL.
              On the manuals:
              These issues are covered in great detail in the WL JMS developer's
              guide in the transactions chapter.
              On bridging:
              You do not have to write your own bridge.
              WL supplies a bridge to greatly simplify the work involved.
              WL 7.0 can even bridge two XA compliant JMS implementations transactionally.
              (Neither has to be WL JMS.) WL 6.1SP3 will have this same feature, now
              avialable as alpha code in 6.1. See "How to use IBM MQ as a JMS Provider?" posts for more
              info.
              On queuing and transactions:
              One can not include a request and its response in the same transaction. Period.
              This is the nature of queueing. One can dequeue from one queue and
              enqueue to another. I think you understand this, but it bears repeating.
              Tom
              Mac wrote:
              > I know that a recieve will not remove a message and a send will not
              > send it until the transaction is commited.
              >
              > In fact I want to do 2 transactions one for each receive-send.
              >
              > graphic again! ;)
              >
              > queue1 queue3
              > ======> =====>
              > legacy 1 Java Adapter legacy 2
              > queue2 queue4
              > <====== <=====
              >
              > In the period of time between reading from queue1 and writing to
              > queue3 the adapter could fail thus a message will be lost. The same
              > happens with queue4 and 2. Maybe this could be solved with a
              > transaction over queue1 and another one over queue4, but I'm not sure.
              >
              > I will have to decide if I use JMS or MQSeries API. MQ allows you to
              > wrap more than one queue in the same transaction if they are in the
              > same Queue Manager. So I wanted to know if JMS also allows to make a
              > transation over more than one queue and how is it done. only JTA?
              > QueueSession? impossible?
              >
              > tnx really for your help!
              >
              > "Raja Mukherjee" <[email protected]> wrote in message news:<[email protected]>...
              > > You can not. Even if you could, it's at least have to be 2 transactions.
              > > Because, if all of your work is in one transaction you will never send or
              > > receive messages, you would be blocking for ever. In order to send the
              > > message you will have to commit the transaction on the first place.
              > >
              > > .raja
              > >
              > > "Mac" <[email protected]> wrote in message
              > > news:[email protected]...
              > > > Sorry Tom, I think that I have not explained well my problem.
              > > >
              > > > The following extrange symbols are supposed to be an explaining
              > > > graphic!! ;)
              > > >
              > > >
              > > > queue1 queue3
              > > > ======> =====>
              > > > legacy 1 Java Adapter legacy 2
              > > > queue2 queue4
              > > > <====== <=====
              > > >
              > > > Legacy System 1 wants to call a service of legacy system 2, but they
              > > > can not communicate directly so we will use MQ Series as both them
              > > > support it.
              > > > For that purpose Legacy1 puts a message in queue1. The Java Adapter
              > > > transforms the message and puts it in queue3. Legacy2 processes the
              > > > request and replies with a message in queue4. The Java Adapter gets
              > > > it, transforms it and puts it in queue2. As a result legacy1 obtains
              > > > the information it was asking for.
              > > >
              > > > I'm using MQ Series 5.2 as middleware. I will not use Message Driven
              > > > Beans so I won´t have an EJB container to perform distributed
              > > > transactions.
              > > >
              > > > The question is: How can I put and get messages in the 4 queues
              > > > using de same transaction?? Can I do it somehow with JMS session or I
              > > > must use a JTA transaction?
              > > >
              > > > Thanks again for your help, and forgive me for being so insistent!
              > > > :)
              [att1.html]
              

  • BPM for WebLogic 10.3 JMS listener problem: SecurityException

    Hi!
    I have a BPM 10.3 engine running on WebLogic 10.3 and a BPM process that uses JMS listener global automatic activity. The JMS queue is located in a WebLogic 8.1 server.
    The global activity receives a message and tries to create a new process instance. At runtime a strange error occurs (see below). If I just log the message and comment the process creation out, the message is successfully consumed, but with the creation part it is not. The process creation itself is not the problem because other message listeners that call other process activities fail with similar errors.
    Btw, it's working in Studio, but not in WL10.
    Could someone explain me what happens and how to fix it?
    Have I misconfigured something?
    Thanks in advance,
    Jaanus
    The BPM engine log:
    The task could not be successfully executed.
    Reason: 'fuego.papi.exception.ActivityFailedException: Activity '/MyProcess#Default-1.0/Begin[Begin]' task 'BeginIn' could not execute successfully.
    Detail:Method: 'BeginIn', Exception: 'Process execution engine execution error.'
    Caused by: Activity '/MyProcess#Default-1.0/Begin[Begin]' task 'BeginIn' could not execute successfully.
    Detail:Method: 'BeginIn', Exception: 'Process execution engine execution error.'
    Caused by: Process execution engine execution error.
    Caused by: Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
    Detail:Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
    Caused by: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]
    fuego.lang.ComponentExecutionException: The task could not be successfully executed.
    Reason: 'fuego.papi.exception.ActivityFailedException: Activity '/MyProcess#Default-1.0/Begin[Begin]' task 'BeginIn' could not execute successfully.
    Detail:Method: 'BeginIn', Exception: 'Process execution engine execution error.'
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1094)
         at fuego.server.execution.EngineExecutionContext.runCil(EngineExecutionContext.java:1280)
         at fuego.server.execution.GlobalAutomaticJMSListeningHelper.executeJmsListener(GlobalAutomaticJMSListeningHelper.java:94)
         at fuego.server.AbstractProcessBean$45.execute(AbstractProcessBean.java:3017)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
         at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
         at fuego.server.AbstractProcessBean.runGlobalJmsActivity(AbstractProcessBean.java:3023)
         at fuego.server.execution.GlobalJMSExecutor$1.run(GlobalJMSExecutor.java:113)
         at fuego.ejbengine.EJBProcessBean.executeTask(EJBProcessBean.java:147)
         at fuego.server.execution.GlobalJMSExecutor.execute(GlobalJMSExecutor.java:105)
         at fuego.ejbengine.EJBGlobalJMSExecutor.access$400(EJBGlobalJMSExecutor.java:43)
         at fuego.ejbengine.EJBGlobalJMSExecutor$JMSExecutorWorker.run(EJBGlobalJMSExecutor.java:213)
         at java.lang.Thread.run(Thread.java:619)
    Caused by: fuego.papi.exception.ActivityFailedException: Activity '/MyProcess#Default-1.0/Begin[Begin]' task 'BeginIn' could not execute successfully.
    Detail:Method: 'BeginIn', Exception: 'Process execution engine execution error.'
         at fuego.papi.exception.ActivityFailedException.create(ActivityFailedException.java:66)
         at fuego.server.AbstractProcessBean.createActivityFailedException(AbstractProcessBean.java:3690)
         at fuego.server.AbstractProcessBean.internalCreateInstance(AbstractProcessBean.java:4326)
         at fuego.server.AbstractProcessBean._doCreateInstance(AbstractProcessBean.java:3650)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:665)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:736)
         at fuego.components.Process.createInstance(Process.java:106)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:392)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:503)
         at oracle.MyProcess.Default_1_0.Instance.CIL_ootaJMSSonumit(Instance.xcdl:12)
         at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1085)
         ... 16 more
    Caused by: fuego.papi.impl.EngineExecutionException: Process execution engine execution error.
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:139)
         at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
         at fuego.server.AbstractProcessBean.internalCreateInstance(AbstractProcessBean.java:4320)
         ... 27 more
    Caused by: class fuego.lang.RuntimeExceptionShell ->> fuego.connector.ConnectorException: Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
    Detail:Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
         at fuego.server.service.EngineConnectorService.getConnection(EngineConnectorService.java:581)
         at fuego.server.service.EngineConnectorService.getEngineConnection(EngineConnectorService.java:300)
         at fuego.transaction.TransactionAction.getEngineHandle(TransactionAction.java:179)
         at fuego.server.execution.EngineExecutionContext.getEngineHandle(EngineExecutionContext.java:443)
         at fuego.server.AbstractInstanceService.create(AbstractInstanceService.java:302)
         at fuego.server.execution.microactivity.BeginMicroActivity.createInstance(BeginMicroActivity.java:95)
         at fuego.server.AbstractProcessBean$53.execute(AbstractProcessBean.java:3642)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startNestedTransaction(TransactionAction.java:527)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:548)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:213)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:125)
         at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
         at fuego.server.AbstractProcessBean.internalCreateInstance(AbstractProcessBean.java:4320)
         at fuego.server.AbstractProcessBean._doCreateInstance(AbstractProcessBean.java:3650)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:665)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:736)
         at fuego.components.Process.createInstance(Process.java:106)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:392)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:503)
         at oracle.MyProcess.Default_1_0.Instance.CIL_ootaJMSSonumit(Instance.xcdl:12)
         at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1085)
         at fuego.server.execution.EngineExecutionContext.runCil(EngineExecutionContext.java:1280)
         at fuego.server.execution.GlobalAutomaticJMSListeningHelper.executeJmsListener(GlobalAutomaticJMSListeningHelper.java:94)
         at fuego.server.AbstractProcessBean$45.execute(AbstractProcessBean.java:3017)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:472)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:213)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:125)
         ... 8 more
    Caused by: fuego.connector.ConnectorException: Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
    Detail:Connector [TrinityEngine_J2EE_RUNTIME_FUEGOLABS_ARG:SQL:REMOTE_JDBC] caused an exception when getting a resource of type [0].
         at fuego.connector.ConnectorException.exceptionOnGetResource(ConnectorException.java:95)
         at fuego.connector.ConnectorTransaction.getResource(ConnectorTransaction.java:324)
         at fuego.connector.ConnectorTransaction.getResource(ConnectorTransaction.java:298)
         at fuego.connector.JDBCHelper.getConnection(JDBCHelper.java:41)
         at fuego.server.service.EngineConnectorService.getConnection(EngineConnectorService.java:578)
         at fuego.server.service.EngineConnectorService.getEngineConnection(EngineConnectorService.java:300)
         at fuego.transaction.TransactionAction.getEngineHandle(TransactionAction.java:179)
         at fuego.server.execution.EngineExecutionContext.getEngineHandle(EngineExecutionContext.java:443)
         at fuego.server.AbstractInstanceService.create(AbstractInstanceService.java:302)
         at fuego.server.execution.microactivity.BeginMicroActivity.createInstance(BeginMicroActivity.java:91)
         at fuego.server.AbstractProcessBean$53.execute(AbstractProcessBean.java:3642)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startNestedTransaction(TransactionAction.java:527)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:548)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
         at fuego.server.execution.EngineExecution.executeImmediate(EngineExecution.java:66)
         at fuego.server.AbstractProcessBean.internalCreateInstance(AbstractProcessBean.java:4320)
         at fuego.server.AbstractProcessBean._doCreateInstance(AbstractProcessBean.java:3650)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:665)
         at fuego.server.AbstractProcessBean.createInstance(AbstractProcessBean.java:736)
         at fuego.components.Process.createInstance(Process.java:106)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:392)
         at fuego.components.ProcessInstance.create(ProcessInstance.java:503)
         at oracle.MyProcess.Default_1_0.Instance.CIL_ootaJMSSonumit(Instance.xcdl:12)
         at sun.reflect.GeneratedMethodAccessor132.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:597)
         at fuego.server.execution.EngineExecutionContext.invokeMethodAsCil(EngineExecutionContext.java:1085)
         at fuego.server.execution.EngineExecutionContext.runCil(EngineExecutionContext.java:1280)
         at fuego.server.execution.GlobalAutomaticJMSListeningHelper.executeJmsListener(GlobalAutomaticJMSListeningHelper.java:94)
         at fuego.server.AbstractProcessBean$45.execute(AbstractProcessBean.java:3017)
         at fuego.server.execution.DefaultEngineExecution$AtomicExecutionTA.runTransaction(DefaultEngineExecution.java:304)
         at fuego.transaction.TransactionAction.startBaseTransaction(TransactionAction.java:470)
         at fuego.transaction.TransactionAction.startTransaction(TransactionAction.java:551)
         at fuego.transaction.TransactionAction.start(TransactionAction.java:212)
         at fuego.server.execution.DefaultEngineExecution.executeImmediate(DefaultEngineExecution.java:123)
         ... 8 more
    Caused by: java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[weblogic, Administrators]
         at weblogic.security.service.SecurityServiceManager.seal(Unknown Source)
         at weblogic.security.service.IdentityUtility.authenticatedSubjectToIdentity(Unknown Source)
         at weblogic.security.service.RoleManager.getRoles(Unknown Source)
         at weblogic.security.service.AuthorizationManager.isAccessAllowed(Unknown Source)
         at weblogic.jndi.internal.ServerNamingNode.checkPermission(ServerNamingNode.java:442)
         at weblogic.jndi.internal.ServerNamingNode.checkLookup(ServerNamingNode.java:423)
         at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:180)
         at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206)
         at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254)
         at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:380)
         at javax.naming.InitialContext.lookup(InitialContext.java:392)
         at fuego.connector.impl.BaseRemoteConnector.getReferencedObject(BaseRemoteConnector.java:116)
         at fuego.connector.impl.BaseRemoteConnector.getReferencedObject(BaseRemoteConnector.java:107)
         at fuego.connector.impl.RemoteJDBCConnector.getConnection(RemoteJDBCConnector.java:75)
         at fuego.connector.impl.RemoteJDBCConnector.getConnection(RemoteJDBCConnector.java:64)
         at fuego.connector.impl.RemoteJDBCConnector.getResource(RemoteJDBCConnector.java:147)
         at fuego.connector.ConnectorTransaction.getResource(ConnectorTransaction.java:319)
         ... 43 more

    I managed to solve the problem by configuring the domain's security settings on both WebLogic servers as follows:
    *) checked "Anonymous Admin Lookup Enabled",
    *) entered the same value to Advanced->Credential on both WLs.

  • Stored procedure in a transaction problem

    hello to everybody
    I have an application under weblogic8.1 sp3.
    I have to call an Oracle stored procedure that populate a table and I have to see the new record anly at the end of the ejb service transaction ( a Container transaction ).When the procedure terminate I see the db data before the transaction end.So I have created a XA DataSource and changed the oracle 9.2 thin drivers in oracle 9.2 thin drivers XA.But Now I receive this Oracle Error:
    ORA-02089: COMMIT is not allowed in a subordinate session
    Why?How Can I resolve my problem?Can Anyone Help Me?Thanks...

    giorgio giustiniani wrote:
    hello to everybody
    I have an application under weblogic8.1 sp3.
    I have to call an Oracle stored procedure that populate a table and I have to see the new record anly at the end of the ejb service transaction ( a Container transaction ).When the procedure terminate I see the db data before the transaction end.So I have created a XA DataSource and changed the oracle 9.2 thin drivers in oracle 9.2 thin drivers XA.But Now I receive this Oracle Error:
    ORA-02089: COMMIT is not allowed in a subordinate session
    Why?How Can I resolve my problem?Can Anyone Help Me?Thanks...It sounds like you have transactional syntax embedded in your
    procedure. You can't do that and still include it in an XA
    transaction.
    Joe

  • How to prevent users from creating transactional problems?

    Dear Sirs...
    Using JDeveloper 10.1.2 and ADF UIX technology. If i created a web application that contains many pages. Assume the application contains pages A,B,C,D.
    The end user should access the pages A then B then C then D to get the transaction executed and commited correctly.
    the problem is:
    1- if a user navigates from A to B to C then he press the Back button to A then he commits the transaction, the data would be stored in correctly.
    2- if page C requires some preparations in page B (initalization of session variables) and the user enters page A then he changes the URL to C, then this would cause inproper execution of application and so the data would be stored incorrectly.
    so how can i prevent the user from pressing the back button of the browser (which i do not think is possible) or how can i prevent him from making any errors by inproper page navigation?
    thanks for any help in advance and best regards

    I really don't know if this is the correct way of doing it, but we prevent navigation directly to any page within our application if the HTTP Referer header is null. If it's null, we redirect to a page that says the user should use the navigation buttons provided and not enter the page via bookmarks, history, or direct navigation via a typed in URL.

Maybe you are looking for

  • How do I view the transaction log in SQL Server 2008?

    Hello, I want to know how to view all the transactions taken during a particular period of time. I know there is a log file, ending with .ldf, created for each database. But how do I view this file? Is there any tool in the SQL Server studio that can

  • BI Scheduler Issue

    We have BI servers (Primary & Secondary) and both are on cluster (Load Balancing). Users are able to connect both servers without any issues. Primary server Scheduler is Active and Secondary scheduler one is Inactive all the time. If I make Secondary

  • FCP 7 and FCP-X on same partition:  what problems are caused?

    I'm trying to figure out if the performance issues I'm having with FCP-X can be remedied, or if the problem is just buggy software.  Apparently, even a newer, faster, more powerful Mac is not the answer, as I read complaints from people with new, sup

  • My Firefox comes up with a Google search bar - how can I delete it and replace with something more ethical?

    I'm concerned that Google are avoiding paying UK tax and would rather use a search engine that's non-profit or at least pays tax! Any suggestions?

  • Validation Rules in SRM

    Hello Gurus, I am a new to SRM.  I needed to understand if we could set up any CO validation rules in SRM.   For e.g.  in R/3 we use transaction GGB0 to set up FI and CO validation rules.  1.  Is there any transaction to set up validation rules in SR