JMS BC & BPEL Transaction Scope

Hi,
I'm trying to use Open ESB with BPEL SE JMS BC and HTTP BC to create a store and forward layer in a integration architecture. The idea is that messages that are used to update a slow external system (or one that is often down) are put in a JMS queue and then the JMS BC picks them up and passes them to a BPEL process via NMR. The BPEL process then calls the external system. If the external system is down, or some other system related error occurs, then I want the transaction to roll back andthe message remain on the queue to be retried later.
My issue is that when the JMS BC picks up the message, it sends it to BPEL via NMR and as soon as it gets the "Done" response, it commits the associated XA transaction and the message is permanently off the JMS queue. But the "done" response is sent by the BPEL SE as soon as it gets the message, as opposed to only once it has called the external system successfully. This breaks the model as any failures are not retried... Is there a way around this? Am I doing something wrong? How can I get the transaction context to span the entire call flow from JMS BC to BPEL and back with failures resulting in the message remaining in the JMS queue to be retried later
Thanks
Paul

Paul,
The reason for the current behavior of BPEL SE (sending DONE as soon as reeve completes) is by design to support asynchronous message communications and long running processes. We do not want to keep the transaction open for the life of process instance as the transaction may timeout (for long running processes). If you want to override this behavior you can do so by setting the Business Process as Atomic (Atomic attribute of business process as true), but the effect of this would be that all the operations in bpel engine and also outbound invocations would use the same (received) transaction context. Note that some of these features are still under development. I understand that this still might not solve your use case where the best solution would be reties. This work is underway and should be available in next release.
Just to give you heads up; retry support is being provided as part of Systemic Qualities initiative which is underway and is targeted to provide support like wire qualities (throttling/reties), fault and security propagation among others across open-esb components. The particular solution to you interest would be wire quality initiative. Once implemented this would allow configurable number of reties a specified intervals.
Regards,
Malkit

Similar Messages

  • BPEL TRANSACTION ROLLBACK

    I've just tested the standart samples
    integration\orabpel\samples\demos\BankTransferDemo\BankTransferFlow\
    BankTransferFlow
    and
    BankTransferFlowWithCompensation
    Rollback was not executed. Why????????????????????????

    Ok i set set the env. var.
    OPATCH_QUOTE_PERL_CMD = TRUE
    ACTIVE_STATE_PERL = TRUE
    i find it in c:\OraBPELPM\OPatch\docs\FAQ
    so the result is changed but still gets error....
    can u advice me what i must to do now .....
    **************** commad line **********************
    C:\Documents and Settings\DoroshenkoOleg>c:\Perl\bin\perl5.6.1.exe C:\OraBPELPM\
    OPatch\opatch.pl apply c:\Install\Oracle\Bpel\patch\1\4343748
    Oracle Interim Patch Installer version 1.0.0.0.52
    Copyright (c) 2005 Oracle Corporation. All Rights Reserved..
    We recommend you refer to the OPatch documentation under
    OPatch/docs for usage reference. We also recommend using
    the latest OPatch version. For the latest OPatch version
    and other support related issues, please refer to document
    293369.1 which is viewable from metalink.oracle.com
    Oracle Home = c:\OraBPELPM
    Location of Oracle Universal Installer components = C:\OraBPELPM\oui
    Location of OraInstaller.jar = "C:\OraBPELPM\oui\jlib"
    Oracle Universal Installer shared library = C:\OraBPELPM\oui\lib\win32\oraInstal
    ler.dll
    Location of Oracle Inventory Pointer = N/A
    Location of Oracle Inventory = C:\OraBPELPM\inventory
    Path to Java = "C:\OraBPELPM\jdk\jre\bin\java.exe"
    Log file = c:\OraBPELPM/.patch_storage/<patch ID>/*.log
    Remove extra quote surrounding system commands on Windows...
    Remove extra quote surrounding system commands on Windows...
    Remove extra quote surrounding system commands on Windows...
    MISSING_COMPONENT : oracle.j2ee, 10.1.2.0.0
    This Oracle Home does not have components/versions required by the patch.
    ERROR: OPatch failed during pre-reqs check.
    **************** log file **********************
    Starting OPatch Apply session at 06-27-2006_12-13-23.
    Command arguments are: apply c:\Install\Oracle\Bpel\patch\1\4343748
    OPatch version is: 1.0.0.0.52
    Remove extra quote surrounding system commands on Windows...
    Performing RAC pre-req. check...
    Accessing inventory ... (retry 10 times, delay 30 seconds each time)
    System Command: "C:\OraBPELPM\jdk\jre\bin\java.exe" -Dopatch.retry=10 -Dopatch.delay=30 -classpath "C:\OraBPELPM\oui\jlib\OraInstaller.jar;C:\OraBPELPM\oui\jlib\srvm.jar;C:\OraBPELPM\OPatch\jlib\opatch.jar;C:\orabpelpm\oui\jlib\xmlparserv2.jar;C:\orabpelpm\oui\jlib\share.jar;C:\orabpelpm\jlib\srvm.jar" opatch/O2O "c:\orabpelpm" "C:\OraBPELPM\oui" opatch.pl 1.0.0.0.52
    Result:
    output to OPatch:
    NODE_LIST=NULL
    NODE_COUNT=0
    LOCAL_NODE=NULL
    IS_CFS=0
    RAC_CODE=0
    HOME_INDEX=2
    This is not a RAC system
    Interim Patch ID: 4343748
    Checking the patch inventory.
    Component Name: oracle.j2ee
    Component Version: 10.1.2.0.0
    Bugs fixed by this patch 4343748:
    4343748 : MPSE ON 10.1.2 FOR MLR BUGS 4338987 AND 4298949
    4167846 : CTX.LOOKUP(JAVA-COMP/ENV/EJB/EJBNAME); IN EJBCREATE METHOD
    4298949 : MLR ON 10.1.2 FOR BUGS 4212066,4043715,4021903,4135569,4167846,4186614,4113514
    4338987 : MLR ON 10.1.2 FOR BUGS 4043715, 4327193
    4327193 : STRESS BPEL-TRANSACTION BECOMES NULL CAUSING - CMT TRANSACTION ERROR
    4135569 : HTTPSESSION IS LOST DURING OCCASIONALLY DURING APPLICATION DEPLOYMENT
    4021903 : USER INTERFERENCE WITH CMP TRANSACTION (ILLEGAL TERMINATION OF TRANSACTION)
    4113514 : OC4J CONTAINER HANGS DURING RE-DEPLOYMENT
    4043715 : CALL TO SESSION BEAN FAILS WITH USER INTERFERENCE WITH CMP TRANSACTION ERROR
    4212066 : STRESS- RESTRICTS MAXIMUM CONCURRENT CONNECTIONS IN AJP LISTENER
    3562466 : PERF- MDB OC4J-JMS SINGLE-USER TEST SHOWS INCREASING ART OVER TIME
    Reading patch XML files and doing sanity checks.
    Read the command to action file map.
    Performing initial safety check.
    Checking active processes:
    Remove extra quote surrounding system commands on Windows...
    Accessing inventory ... (retry 10 times, delay 30 seconds each time)
    System Command: "C:\OraBPELPM\jdk\jre\bin\java.exe" -Dopatch.retry=10 -Dopatch.delay=30 -classpath "C:\OraBPELPM\oui\jlib\OraInstaller.jar;C:\OraBPELPM\oui\jlib\srvm.jar;C:\OraBPELPM\OPatch\jlib\opatch.jar;C:\orabpelpm\oui\jlib\xmlparserv2.jar;C:\orabpelpm\oui\jlib\share.jar" opatch/CheckConflict "C:\OraBPELPM\oui" "c:\orabpelpm" opatch.pl 1.0.0.0.52 4343748 "3562466 4212066 4043715 4113514 4021903 4135569 4327193 4338987 4298949 4167846 4343748 " C:\Install\Oracle\Bpel\patch\1\4343748\etc\config\actions
    Result:
    MISSING_COMPONENT : oracle.j2ee, 10.1.2.0.0
    MISSING_COMPONENT : oracle.j2ee, 10.1.2.0.0
    MISSING_COMPONENT : oracle.j2ee, 10.1.2.0.0
    This Oracle Home does not have components/versions required by the patch.
    ERROR: OPatch failed during pre-reqs check.
    *****************************************************************

  • Need info regarding BPEL Transaction Management

    Hi All,
    Can anybody gives me information regarding how much BPEL support for transaction Management.
    Up to what level transactional behaviours can now BPEL (10.1.3.3) offer so far.WS-Transaction still can be expected from this current version. If somebody gives me the link of any document link that will be much fruitful to me.
    Thanks in advance

    Refer to the link :-http://download.oracle.com/technology/tech/soa/soa_best_practices_1013x_drop3.pdf
    Under the section transaction you'll get an overview of BPEL transaction management.
    Rgdrs
    Mandrita.

  • Using Transaction Scope in Oracle

    Following is my code to call a transaction using .NET transaction scope:
    using (TransactionScope sc = new TransactionScope())
    try
    OracleConnection c = new OracleConnection(ConfigurationManager.ConnectionStrings["oConn"].ConnectionString);
    c.Open();
    OracleCommand oc = c.CreateCommand();
    oc.CommandText = "delete from test where issue_id=:issue_id";
    oc.Parameters.Add("issue_id", OracleDbType.Int32).Value = 64;
    var rowdelete = oc.ExecuteNonQuery();
    c.Close();
    OracleConnection c2 = new OracleConnection(ConfigurationManager.ConnectionStrings["oConn"].ConnectionString);
    c2.Open();
    OracleCommand oc2 = c2.CreateCommand();
    oc2.CommandText = "delete from issue_no where issue_id=:issue_id";
    oc2.Parameters.Add("issue_id", OracleDbType.Int32).Value = 64;
    rowdelete = oc2.ExecuteNonQuery();
    c2.Close();
    sc.Complete();
    catch (Exception ex)
    throw ex;
    It always throws exception: Data provider internal error(-3000)
    It works fine when I remove transactions, what will be the cause for this? I cannot find related information about this error.

    What version of ODP are you using? Does the behavior occur on current versions?
    What is your connection string. That is to say, what format is it? I recall a known issue where using a fully qualified alias ( (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=...etc...) caused issues. Using a tnsnames.ora , or the instant client connect string (//host:port/service_name) did not have the problem.
    Greg

  • Using OEMS/JMS with BPEL

    I'm trying to do some experimental communication between a BPEL process and OEMS. I'm producing a JMS message and dropping it into a queue by invoking a JMS service, then from the same process I'm doing a receive from the same queue. The receive is timing out, so either the message never got into the queue or is stuck in there somewhere.
    Maybe this is not strictly a BPEL question but how can I view messages in the JMS queues in EM?
    Thanks,
    Bret

    Once I faced problem that I needed very urgently check what is in queues at customer side, so I decided to write very simple swing client to send and receive messages from queues. You might find it usefull. Two classes JmsClient.java and MessageHelper.java, make sure that your JDeveloper project has following libraries Oracle9 iAS and J2EE
    JmsClient.java:
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import javax.swing.UIManager;
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import java.awt.Rectangle;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.Label;
    import java.awt.Font;
    public class JmsClient extends JFrame {
    private JButton sendMsgBtn = new JButton();
    private JButton jButton2 = new JButton();
    private JTextArea output = new JTextArea();
    public static JTextArea outputWindow;
    private JButton msgBtn = new JButton();
    private JButton clrBtn = new JButton();
    private JTextField password = new JTextField();
    private JTextField username = new JTextField();
    private JTextField hostName = new JTextField();
    private Label usrText = new Label();
    private Label pswdText = new Label();
    private Label hostText = new Label();
    private JTextField queueName = new JTextField();
    private Label queueText = new Label();
    private JTextField queueCF = new JTextField();
    private Label cfText = new Label();
    private MessageHelper connection = null;
    private MessageHelper connection1 = null;
    private Label statusTxt = new Label();
    private JTextArea msgBody = new JTextArea();
    private JTextField username1 = new JTextField();
    private JTextField password1 = new JTextField();
    private JTextField hostName1 = new JTextField();
    private JTextField queueName1 = new JTextField();
    private JTextField queueCF1 = new JTextField();
    private Label statusTxt1 = new Label();
    private JButton msgBtn1 = new JButton();
    private JTextArea msgBody1 = new JTextArea();
    private Label usrText1 = new Label();
    private Label pswdText1 = new Label();
    private Label hostText1 = new Label();
    private Label queueText1 = new Label();
    private Label cfText1 = new Label();
    private JButton sendMsgBtn1 = new JButton();
    public JmsClient() {
    try {
    jbInit();
    } catch(Exception e) {
    e.printStackTrace();
    outputWindow = output;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = this.getSize();
    if (frameSize.height > screenSize.height) {
    frameSize.height = screenSize.height;
    if (frameSize.width > screenSize.width) {
    frameSize.width = screenSize.width;
    this.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    this.addWindowListener(new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    this.setVisible(true);
    private void jbInit() throws Exception {
    this.getContentPane().setLayout(null);
    this.setSize(new Dimension(1009, 625));
    this.setTitle("Test Frame");
    this.setFont(new Font("Tahoma", 0, 15));
    sendMsgBtn.setText("Send Message");
    sendMsgBtn.setBounds(new Rectangle(5, 220, 115, 30));
    sendMsgBtn.setEnabled(false);
    sendMsgBtn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    jButton1_actionPerformed(e);
    jButton2.setText("Quit");
    jButton2.setBounds(new Rectangle(915, 550, 75, 30));
    jButton2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    jButton2_actionPerformed(e);
    output.setBounds(new Rectangle(5, 465, 840, 125));
    output.setLineWrap(true);
    msgBtn.setText("Connect");
    msgBtn.setBounds(new Rectangle(130, 220, 125, 30));
    msgBtn.setActionCommand("msgBtn");
    msgBtn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    jButton3_actionPerformed(e);
    clrBtn.setText("Clear Output Window");
    clrBtn.setBounds(new Rectangle(850, 465, 145, 30));
    clrBtn.setActionCommand("CLEAR");
    clrBtn.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    clrBtn_actionPerformed(e);
    password.setText("welcome");
    password.setBounds(new Rectangle(135, 60, 290, 25));
    username.setText("admin");
    username.setBounds(new Rectangle(135, 20, 290, 25));
    hostName.setText("opmn:ormi://bam:OC4J_BPEL/orabpel");
    hostName.setBounds(new Rectangle(135, 95, 290, 25));
    usrText.setText("User Name");
    usrText.setBounds(new Rectangle(20, 20, 75, 25));
    usrText.setFont(new Font("Tahoma", 0, 15));
    pswdText.setText("Password");
    pswdText.setBounds(new Rectangle(20, 60, 75, 25));
    pswdText.setFont(new Font("Tahoma", 0, 15));
    hostText.setText("Hostname");
    hostText.setBounds(new Rectangle(20, 95, 75, 25));
    hostText.setFont(new Font("Tahoma", 0, 15));
    queueName.setText("java:comp/resource/oraclejms/Queues/ErrorMessageQueue");
    queueName.setBounds(new Rectangle(135, 135, 290, 25));
    queueName.setToolTipText("null");
    queueText.setText("Queue Name");
    queueText.setBounds(new Rectangle(20, 135, 90, 25));
    queueText.setFont(new Font("Tahoma", 0, 15));
    queueCF.setText("java:comp/resource/oraclejms/QueueConnectionFactories/RPTable");
    queueCF.setBounds(new Rectangle(135, 175, 290, 25));
    cfText.setText("CF Name");
    cfText.setBounds(new Rectangle(20, 180, 70, 25));
    cfText.setFont(new Font("Tahoma", 0, 15));
    statusTxt.setBounds(new Rectangle(265, 225, 130, 25));
    statusTxt.setFont(new Font("Tahoma", 0, 15));
    statusTxt.setText("Not Connected");
    msgBody.setBounds(new Rectangle(5, 260, 415, 195));
    msgBody.setEditable(false);
    msgBody.setText("<?xml version=\"1.0\" ?>\n<ErrorMessage xmlns=\"http://www.turkcell.com.tr/ErrorMessage\">\n" + "<correlationId>1</correlationId>\n<transactionId>2</transactionId>\n" + "<groupId>3</groupId>\n<action>4</action>\n<errorDescription>5</errorDescription>\n" + "<uri>6</uri>\n<maxRetries>7</maxRetries>\n<timeSlice>8</timeSlice>\n" + "<resubmitSystem>BPEL</resubmitSystem>\n</ErrorMessage>\n");
    username1.setText("admin");
    username1.setBounds(new Rectangle(560, 20, 290, 25));
    password1.setText("welcome");
    password1.setBounds(new Rectangle(560, 60, 290, 25));
    hostName1.setText("opmn:ormi://bam:OC4J_BPEL/orabpel");
    hostName1.setBounds(new Rectangle(560, 95, 290, 25));
    queueName1.setText("java:comp/resource/oraclejms/Queues/ErrorMessageQueue");
    queueName1.setBounds(new Rectangle(560, 135, 290, 25));
    queueCF1.setText("java:comp/resource/oraclejms/QueueConnectionFactories/RPTable");
    queueCF1.setBounds(new Rectangle(560, 175, 290, 25));
    statusTxt1.setBounds(new Rectangle(720, 220, 130, 25));
    statusTxt1.setFont(new Font("Tahoma", 0, 15));
    statusTxt1.setText("Not Connected");
    msgBtn1.setText("Connect");
    msgBtn1.setBounds(new Rectangle(585, 220, 125, 30));
    msgBtn1.setActionCommand("msgBtn");
    msgBtn1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    jButton4_actionPerformed(e);
    msgBody1.setBounds(new Rectangle(440, 260, 415, 195));
    msgBody1.setEditable(false);
    usrText1.setText("User Name");
    usrText1.setBounds(new Rectangle(450, 20, 75, 25));
    usrText1.setFont(new Font("Tahoma", 0, 15));
    pswdText1.setText("Password");
    pswdText1.setBounds(new Rectangle(450, 65, 75, 25));
    pswdText1.setFont(new Font("Tahoma", 0, 15));
    hostText1.setText("Hostname");
    hostText1.setBounds(new Rectangle(450, 105, 75, 25));
    hostText1.setFont(new Font("Tahoma", 0, 15));
    queueText1.setText("Queue Name");
    queueText1.setBounds(new Rectangle(450, 145, 90, 25));
    queueText1.setFont(new Font("Tahoma", 0, 15));
    cfText1.setText("CF Name");
    cfText1.setBounds(new Rectangle(450, 180, 70, 25));
    cfText1.setFont(new Font("Tahoma", 0, 15));
    sendMsgBtn1.setText("Receive Message");
    sendMsgBtn1.setBounds(new Rectangle(440, 220, 135, 30));
    sendMsgBtn1.setEnabled(false);
    sendMsgBtn1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    jButtonReceive_actionPerformed(e);
    this.getContentPane().add(sendMsgBtn1, null);
    this.getContentPane().add(cfText1, null);
    this.getContentPane().add(queueText1, null);
    this.getContentPane().add(hostText1, null);
    this.getContentPane().add(pswdText1, null);
    this.getContentPane().add(usrText1, null);
    this.getContentPane().add(msgBody1, null);
    this.getContentPane().add(msgBtn1, null);
    this.getContentPane().add(statusTxt1, null);
    this.getContentPane().add(queueCF1, null);
    this.getContentPane().add(queueName1, null);
    this.getContentPane().add(hostName1, null);
    this.getContentPane().add(password1, null);
    this.getContentPane().add(username1, null);
    this.getContentPane().add(msgBody, null);
    this.getContentPane().add(statusTxt, null);
    this.getContentPane().add(cfText, null);
    this.getContentPane().add(queueCF, null);
    this.getContentPane().add(queueText, null);
    this.getContentPane().add(queueName, null);
    this.getContentPane().add(hostText, null);
    this.getContentPane().add(pswdText, null);
    this.getContentPane().add(usrText, null);
    this.getContentPane().add(hostName, null);
    this.getContentPane().add(username, null);
    this.getContentPane().add(password, null);
    this.getContentPane().add(clrBtn, null);
    this.getContentPane().add(msgBtn, null);
    this.getContentPane().add(output, null);
    this.getContentPane().add(jButton2, null);
    this.getContentPane().add(sendMsgBtn, null);
    * @param args
    public static void main(String[] args) {
    try {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch(Exception e) {
    e.printStackTrace();
    new JmsClient();
    private void jButton2_actionPerformed(ActionEvent e) {
    System.exit(0);
    private void jButton1_actionPerformed(ActionEvent e) {
    if (connection.sendMessage(msgBody.getText()))
    output.append("Message sent\n");
    private void jButtonReceive_actionPerformed(ActionEvent e) {
    String message = connection1.receiveMessage();
    if (message != null) {
    output.append("Message received\n");
    msgBody1.setText(message);
    private void jButton3_actionPerformed(ActionEvent e) {
    if (connection == null) {
    connection = new MessageHelper();
    connection.connectQueue(queueName.getText(), hostName.getText() , username.getText(), password.getText(), queueCF.getText());
    msgBtn.setText("Disconnect");
    statusTxt.setText("Connected");
    password.setEditable(false);
    username.setEditable(false);
    hostName.setEditable(false);
    queueName.setEditable(false);
    queueCF.setEditable(false);
    sendMsgBtn.setEnabled(true);
    msgBody.setEditable(true);
    } else {
    connection.disconnectQueue();
    connection = null;
    msgBtn.setText("Connect");
    statusTxt.setText("Not Connected");
    password.setEditable(true);
    username.setEditable(true);
    hostName.setEditable(true);
    queueName.setEditable(true);
    queueCF.setEditable(true);
    sendMsgBtn.setEnabled(false);
    msgBody.setEditable(false);
    private void jButton4_actionPerformed(ActionEvent e) {
    if (connection1 == null) {
    connection1 = new MessageHelper();
    connection1.connectQueue(queueName1.getText(), hostName1.getText() , username1.getText(), password1.getText(), queueCF1.getText());
    msgBtn1.setText("Disconnect");
    statusTxt1.setText("Connected");
    password1.setEditable(false);
    username1.setEditable(false);
    hostName1.setEditable(false);
    queueName1.setEditable(false);
    queueCF1.setEditable(false);
    sendMsgBtn1.setEnabled(true);
    msgBody1.setEditable(true);
    } else {
    connection1.disconnectQueue();
    connection1 = null;
    msgBtn1.setText("Connect");
    statusTxt1.setText("Not Connected");
    password1.setEditable(true);
    username1.setEditable(true);
    hostName1.setEditable(true);
    queueName1.setEditable(true);
    queueCF1.setEditable(true);
    sendMsgBtn1.setEnabled(false);
    msgBody1.setEditable(false);
    private void clrBtn_actionPerformed(ActionEvent e) {
    output.setText("");
    MessageHelper.java:
    import javax.jms.*;
    import javax.naming.*;
    import java.util.Hashtable;
    import java.util.Enumeration;
    public class MessageHelper {
    private Context jndiContext = null;
    private QueueConnectionFactory queueConnectionFactory = null;
    private QueueConnection queueConnection = null;
    private QueueSession queueSession = null;
    private Queue queue = null;
    private QueueSender queueSender = null;
    private TextMessage message = null;
    private QueueReceiver queueReceiver = null;
    public MessageHelper() {
    public void disconnectQueue() {
    try {
    jndiContext.close();
    } catch (Exception exc) {}
    jndiContext = null;
    queueConnectionFactory = null;
    queueConnection = null;
    queueSession = null;
    queue = null;
    queueSender = null;
    message = null;
    public boolean connectQueue(String queueName, String hostName, String username, String password, String queueCF) {
    * Create a JNDI API InitialContext object if none exists
    * yet.
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.evermind.server.rmi.RMIInitialContextFactory");
    env.put(Context.SECURITY_PRINCIPAL, username);
    env.put(Context.SECURITY_CREDENTIALS, password);
    env.put(Context.PROVIDER_URL, hostName);
    try {
    jndiContext = new InitialContext(env);
    } catch (NamingException e) {
    JmsClient.outputWindow.append("Could not create JNDI API context: " + e.toString() + "\n");
    return false;
    * Look up connection factory and queue. If either does
    * not exist, exit.
    try {
    queueConnectionFactory = (QueueConnectionFactory) jndiContext.lookup(queueCF);
    queue = (Queue) jndiContext.lookup(queueName);
    * Create connection.
    * Create session from connection; false means session is
    * not transacted.
    * Create sender and text message.
    * Send messages, varying text slightly.
    * Send end-of-messages message.
    * Finally, close connection.
    queueConnection = queueConnectionFactory.createQueueConnection();
    queueSession = queueConnection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
    queueSender = queueSession.createSender(queue);
    queueReceiver = queueSession.createReceiver(queue);
    queueConnection.start();
    } catch (JMSException e) {
    JmsClient.outputWindow.append("Exception occurred: " + e.toString() + "\n");
    disconnectQueue();
    return false;
    } catch (NamingException e) {
    JmsClient.outputWindow.append("JNDI API lookup failed: " + e.toString() + "\n");
    disconnectQueue();
    return false;
    return true;
    public boolean sendMessage(String msg) {
    try {
    message = queueSession.createTextMessage();
    message.setText(msg);
    queueSender.send(message);
    * Send a non-text control message indicating end of
    * messages.
    // queueSender.send(queueSession.createMessage());
    } catch (JMSException e) {
    JmsClient.outputWindow.append("Exception occurred: " + e.toString() + "\n");
    return false;
    return true;
    public String receiveMessage() {
    message = null;
    String result = null;
    try {
    Message m = queueReceiver.receive(100);
    if (m != null) {
    if (m instanceof TextMessage) {
    message = (TextMessage) m;
    result = message.getText() + "\n";
    else result = "Non Text message\n";
    else JmsClient.outputWindow.append("No message from the queue.\n");
    catch (Exception e) {
    JmsClient.outputWindow.append("Receive failed: " + e.toString() + "\n");
    return null;
    QueueBrowser queueBrowser = null;
    int count = 0;
    try {
    queueBrowser = queueSession.createBrowser(queue);
    queueConnection.start();
    Enumeration enum = queueBrowser.getEnumeration();
    while (enum.hasMoreElements()) {
    count++;
    enum.nextElement();
    JmsClient.outputWindow.append("There are "+count+" messages in the queue\n");
    } catch (Exception e) {
    JmsClient.outputWindow.append("Browse failed: " + e.toString() + "\n");
    return null;
    return result;
    }

  • Oracle BPEL Transaction Attribute

    Hello,
    We have a scenario to handle Transactions using three parallel sequences those invoke stored procedures. The stored procedure would return success/failure on the out parameter.
    Based on the failure (out parameter), we would like to do a rollback all the stored procedures inserts/updates. In my scenario, the 3rd procedure would send failure.
    I tried using participate attribute as follows,
    <?xml version = '1.0' encoding = 'UTF-8'?>
    <BPELSuitcase>
    <BPELProcess id="ParalleFlow" src="ParalleFlow.bpel">
    <partnerLinkBindings>
    <partnerLinkBinding name="client">
    <property name="wsdlLocation">ParalleFlow.wsdl</property>
    <property name="transaction">participate</property>
    </partnerLinkBinding>
    <partnerLinkBinding name="Temp1DB">
    <property name="wsdlLocation">Temp1DB.wsdl</property>
    <property name="retryInterval">60</property>
    <property name="transaction">participate</property>
    </partnerLinkBinding>
    <partnerLinkBinding name="Temp2DB">
    <property name="wsdlLocation">Temp2DB.wsdl</property>
    <property name="retryInterval">60</property>
    <property name="transaction">participate</property>
    </partnerLinkBinding>
    <partnerLinkBinding name="Temp3DB">
    <property name="wsdlLocation">Temp3DB.wsdl</property>
    <property name="retryInterval">60</property>
    <property name="transaction">participate</property>
    </partnerLinkBinding>
    </partnerLinkBindings>
    <configurations>
    <property name="transaction" encryption="plaintext">participate</property>
    </configurations>
    </BPELProcess>
    </BPELSuitcase>
    But I have observed that inserts/updates have happened in the first and second tables.
    Note: 1 )Stored procedure do not have any commit statement.
    2) Each stored procedure is called by DB adapter (separately).
    3) Each sequence has a throw logic with BPELX:rollback on the condition of failure from stored procedure.
    4) All the three sequences have been enclosed in a single scope that has a catchall block that throws the BPELX:rollback as well.
    Thanks
    Nags.

    Hi,
    I'm trying to employ the transaction property like this but it's not working:
    <partnerLinkBinding name="GetPartyID">
    <property name="wsdlLocation">GetPartyID.wsdl</property>
    <property name="retryInterval">60</property>
    <property name="idempotent">false</property>
    *<property name="transaction">participate</property>*
    </partnerLinkBinding>
    <partnerLinkBinding name="GetPartyAcctSiteInfo">
    <property name="wsdlLocation">GetPartyAcctSiteInfo.wsdl</property>
    <property name="retryInterval">60</property>
    *<property name="transaction">participate</property>*
    </partnerLinkBinding>
    <partnerLinkBinding name="UpdateShiptoUse">
    <property name="wsdlLocation">UpdateShiptoUse.wsdl</property>
    <property name="retryInterval">60</property>
    *<property name="transaction">participate</property>*
    </partnerLinkBinding>
    to ensure that all database transaction within this BPEL process will be within the same session.
    However, I’m not sure if this property can be used along with “idempotent” which I think initiates a new transaction as well (anyways I tried without the “idempotent” property and does not seem to work either). Also, I’m not sure if I should apply this property to the partnerlink that invokes this process that contains the above database/EBS partnerlinks. Any help is greatly appreciated.
    Thanks,
    Y.Ali

  • JMS and XA Transaction

              Hy,
              I see that the JMS is integrated as XA Transaction directly from the container management
              on the Weblogic version 7.0.
              I test the same testcase on the Weblogic 6.0 but it didn't work automatically (the
              publish never commit).
              Starting from wich version of Weblogic the JMS-XA Transaction is integrated ?
              Thank you.
              Luigi
              

              Hy,
              I see that the JMS is integrated as XA Transaction directly from the container management
              on the Weblogic version 7.0.
              I test the same testcase on the Weblogic 6.0 but it didn't work automatically (the
              publish never commit).
              Starting from wich version of Weblogic the JMS-XA Transaction is integrated ?
              Thank you.
              Luigi
              

  • OSB JMS Proxy XA Transaction Rollback not occuring to queue

    Hi All
    We are dequeuing a message from JMS queue via an XA connection factory and then calling a web service. If any error occurs in the web service we catch the error handler, log and notify it and want to send this message back to the queue for retrial (The retry settings are defined at the Queue Level from weblogic console).
    Problem is rollback is not occurring, we have tried the below:
    1) There is no OSB reply with either success or failure in the error handler (This should have done the trick)
    2) We have also tried addiing an explicit Raise Error (Uncaught Error) to roll the message back, but its not working.
    This rollback is not occurring because JMS Resource is XA and web service call is NON XA, hence the entire message flow becomes NON XA. Is this understanding correct?
    How can we fix this? Please help

    Hi atheek1
    Thanks for the reply, it worked. Before I mark this question as answered, pls. answer the below queries (Thanks a lot!)
    1) Well, i just ticked transaction required and same transaction for response and it started working. I did not add routing options like you mentioned to QOS Exactly Once. Its working without it fine. So, my questions is what is the use of adding this QOS to exactly once. Is it mandatory?
    2) I have a couple of OSB services in which rollback is working automatically (XA JMS to JCA FTP Adapter) and (XA JMS to JCA DB adapter XA data source), here rollback works automatically. I dont have to tick transaction required. So my question is, when an XA based connection factory picks a message from the queue, a transaction is started at the container level. So why tick transaction required at the message flow level, when the weblogic has already initiated a transaction. Since you said that HTTP transport commits a transaction even if 500 or 404 occurs, it makes sense to tick is transaction required and same transaction for response in OSB proxy service. But the remaining scenarios work without these options. Hence will it be wise to say that these settings are only required for HTTP transport coz of the way it behaves (commits 404 and 500).
    Thanks

  • JDBC, JMS and EJB transactions - possible problem?

    Hello,
              I am using Oracle 9, Weblogic 8.1 SP 4, MyEclipse and
              XDoclet.
              In my current project I have the following piece of code
              in one of my message driven beans (code cited as pseudocode
              without unnecessary details):
              * @ejb.bean name="MyMessageProcessor"
              * display-name="Display name for a MyMessageProcessor"
              * jndi-name="ejb/MyMessageProcessor"
              * description="Bean MyMessageProcessor"
              * destination-type="javax.jms.Queue"
              * transaction-type="Container"
              * acknowledge-mode="Auto-acknowledge"
              * subscription-durability="Durable"
              * generate="false"
              * @ejb.transaction type="Required"
              public class MyMessageProcessor implements MessageDrivenBean, MessageListener {
              public void onMessage(Message msg) {
                   try {
                        //obtaining connections to two different databases via JNDi
                        java.sql.Connection connOne =
                        ((DataSource)ctx.lookup("DataSourceOne")).getConnection();          
                        java.sql.Connection connTwo =
                             ((DataSource)ctx.lookup("DataSourceTwo")).getConnection();
                        // performing some UPDATEs and INSERTs on connOne and connTwo
                        // calling some other methods of this bean
                        //creating the reply JMS message and sending it to another JMS queue
                        Message msgTwo = this.createReplyMessage(msg)
                        this.queueSender.send(msgTwo);
                        //commiting everything
                        this.queueSession.commit();          
                   } catch (Exception ex) {
                   try {
                        if (this.queueSession!=null) this.queueSession.rollback();
                   } catch (JMSException JMSEx) {};     
                   this.context.setRollbackOnly();
              Some days ago (before the final remarks from my client) there used to be only one DataSource configurated on the basis of the
              connection pool with non-XA jdbc driver. Everything worked fine
              including the transactions (if anything wrong happend not only wasn't the replymessage sent, but also no changes were written
              to database and the incomming message was thrown back to the my bean's
              queue).
              When I deployed the second DataSource I was informed by an error message, that only one non-transactional resource may
              participate in a global transaction. When I changed both datasources
              to depend on underlying datasources with transatcional (XA) jdbc drivers, everything stopped working. Even if
              EJB transaction was theoretically successfully rolledbacked, the changed were written to the database
              and the JMS message wasn't resent to the JMS queue.
              So here are my questions:
                   1. How to configure connection pools to work in such situations? What JDBC drivers should I choose?
                   Are there any global server configurations, which may influence this situation?
                   2. Which jdbc drivers should I choose so that the container was able to rollback the database transactions
                   (of course, if necessary)?
                   3. Are there any JMS Queue settings, which would disable the container to send message back to the
                   queue in case of setRollbackOnly()? How should be the Queue configurated?
              As I am new to the topic and the deadline for the project seems to be too close I would be grateful
              for any help.
              This message was sent to EJB list and JDBC list.
              Sincerely yours,
              Marcin Zakidalski

    Hi,
              I found these information extremely useful and helpful.
              The seperate transaction for sending messages was, of course, unintentional. Thanks a lot.
              Anyway, I still have some problems. I have made some changes to the
              code cited in my previous mail. These changes included changing QueueSessions
              to non-transactional. I also set the "Honorate global transactions" to true.
              I am using XA JDBC driver. After setting "Enable local transactions" to false
              (I did it, because I assume that JDBC transactions should be part on the global
              EJB transaction) I got the following error:
              java.sql.SQLException: SQL operations are not allowed with no global transaction by default for XA drivers. If the XA
              driver supports performing SQL operations with no global transaction, explicitly allow it by setting
              "SupportsLocalTransaction" JDBC connection pool property to true. In this case, also remember to complete the local
              transaction before using the connection again for global transaction, else a XAER_OUTSIDE XAException may result. To
              complete a local transaction, you can either set auto commit to true or call Connection.commit() or Connection.rollback().
              I have also inspected the calls of methods of bean inside of onMessage() method just to check, whether
              the transactions are correctly initialized (using the weblogic.transaction.Transaction class).
              My questions are as follows:
              1. Any suggestions how to solve it? I have gone through the google answers on that problem and only
              thing I managed to realize that JDBC must start its own transaction. Is there any way to prohibit it
              from doing that? Can using setAutocommit(true/false) change the situation for better?
              2. How to encourage the JDBC driver to be a part of EJB transaction?
              3. As I have noticed each of ejb method has its own transactions (transactions have different
              Xid). Each method of the bean has "required" transaction attribute. Shouldn't it work in such
              way that if already started transaction exists it is used by the called method?
              4. The DataSources are obtained in my application via JNDI and in the destination environment I will have slight
              impact on the configuration of WebLogic. What is least problematic and most common WebLogic configuration which would
              enable JDBC driver to participate in the EJB transaction? Is it the WebLogic configuration problem or can it be
              solved programmically?
              Currently my module works quite fine when "enable local transactions" for DataSources is set to true, but this way
              I am loosing the ability to perform all actions in one transaction.
              Any suggestions / hints are more than welcomed. This message was posted to jdbc list and ejb list.
              Marcin

  • Foreign JMS and Enlisting Transactions?

    I'm working on implementing an XA interface layer to an implementation of a foreign JMS provider and am having a problem with enlisting XA transactions in WebLogic.
              I implemented a simple JNDI that stores and retrieves serialized versions of classes in the local filesystem.
              I create an XATopicConnectionFactory named ambxatcf and a Topic named ChatterTopic and store them in there.
              The XATopicConnection implements XAConnection.
              I put a client jar in bea/weblogic91/samples/domains/wl_server/lib/ which contains the JNDI code and all of my XA classes which call the JMS.
              That gets picked up by the server on startup.
              In the Web Logic Admin Console:
              I create a Foreign Server under JMS Modules, ambrosiaServer.
              I set the JNDI Initial Context Factory set to my JNDI InitialContext class and the JNDI Properties is the path to my JNDI filestore so that it can find the serialized objects.
              I create a Foreign Destination in this server which has a Local JNDI Name: Chatter and Remote JNDI Name: ChatterTopic
              And then also in this server, I create a Foreign Connection Factory, Local JNDI Name: ambxatcf and Remote JNDI Name: XATopicConnectionFactory.
              Then in Deployments, I Install the jar containing my bean and Start it.
              Then I run the client and the bean prints out the XATopicConnectionFactory and it's the one that came out my JNDI.
              I have messages in my XATopicConnectionFactory, XATopicConnection and XATopicSession code so I know they're getting called.
              What's not getting called is XATopicSession.getXAResource() or my XAResourceImpl.start() or XAResourceImpl.commit().
              This happens whether I have the bean set up for bean managed or container managed transactions.
              I'm testing against WebLogic 9.1.
              Thanks,
              Don Hermes

    Hi Tom,
              Thank you for your response.
              I saw the article in the 8.1 documentation but I also found the following in the 9.1 docs.
              So, I assumed it would work.
              Was that assumption wrong?
              Thanks,
              Don
              =====================
              http://e-docs.bea.com/wls/docs91/jms/j2ee.html
              Automatically Enlisting Transactions
              This feature works for either WebLogic JMS implementations or for third-party JMS providers that support two-phase commit transactions (XA protocol). If a wrapped JMS connection sends or receives a message inside a transaction context, the JMS session being used to send or receive the message is automatically enlisted in the transaction through the XA capabilities of the JMS provider. This is the case whether the transaction was started implicitly because the JMS code was invoked inside an EJB with container-managed transactions enabled, or whether the transaction was started manually using the UserTransaction interface in a servlet or an EJB that supports bean-managed transactions.

  • BPEL transaction in custom worklist application

    Hi,
    How can we be sure about transaction while performing actions within worklist client?
    Such an example, we developed an application by using oracle soa suite worklist api's.
    Beside task updating,payload adjustion we need to do some other jobs including business logic in our java client application.
    In such cases, if there is an exception at java code, it doesnt commit to database but bpel integration code performs... Is there any way which you can control all this functions calling within one transaction? I want to rollback all if you come up with an exception.
    I found an xml attribute which you need to configure in wf client config.xml, we use RMI for performing actions...
    participateInClientTransaction true
    How does it work?
    Thanks for help,
    Regards...

    Hi,
    Every release of soa suite may have an updated version of the worklist application. So if you customize the application and upgrade your soa suite installation there may be ar risk you get into problems. However, most of the time the updated version solves existing bug and no more than that. An other issue is that if you are using the bpel libraries to connect to a bpel server the client always needs to be of the same version as the server. What you should do is:
    - get the new 10.1.3.3 version of the libraries or install JDeveloper 10.1.3.3
    - update your orabpel.properties file and make sure the bpel home is pointing to the new version
    - update/verify the build.xml that it is pointing to the new libraries
    - rebuild/compile your customized worklist app against the new libraries
    - redeploy the new worklist application to the 10.1.3.3 server
    Kind Regards,
    Andre

  • SOAP over JMS sample BPEL Process

    Hi ,
    Does any one has the sample BPEL Process code for SOAP/JMS protocol bindings on Oracle Weblogic server ?
    This is very urgent , any help is appreciated !
    Regards,
    Sam

    Have the same requirement.

  • SFSB and BMT JTA Transaction Scope confusion

    Hi,
    I'm a bit confused with the scope of a UserTransaction.
    * Classic SFSB with BMT
    @Stateful
    @TransactionManagement(TransactionManagementType.BEAN)
    public class SFSBean implements SFS {
         private @Resource UserTransaction tx;
         private @PersistenceUnit(unitName="my-db") EntityManagerFactory emf;
         private EntityManager em;
         public void start() {
              try {
                   tx.begin();
              } catch (NotSupportedException e) {
                   throw new RuntimeException(e);
              } catch (SystemException e) {
                   throw new RuntimeException(e);
              em = emf.createEntityManager();
         public void doJob1() {
         public void doJob2() {
         @Remove
         public void commit() {
              try {
                   tx.commit();
              } catch (SecurityException e) {
                   throw new RuntimeException(e);
              } catch (IllegalStateException e) {
                   throw new RuntimeException(e);
              } catch (RollbackException e) {
                   throw new RuntimeException(e);
              } catch (HeuristicMixedException e) {
                   throw new RuntimeException(e);
              } catch (HeuristicRollbackException e) {
                   throw new RuntimeException(e);
              } catch (SystemException e) {
                   throw new RuntimeException(e);
         @Remove
         public void rollback() {
              try {
                   tx.rollback();
              } catch (IllegalStateException e) {
                   e.printStackTrace();
              } catch (SecurityException e) {
                   e.printStackTrace();
              } catch (SystemException e) {
                   e.printStackTrace();
    }When I request this SB the container inject a JTA transaction inside my variable tx and this transaction will be bound to the life of my SB.
    But : if a handler for this SB is associated to a SessionScoped or ConversationScoped bean (CDI contexts) or simply to a HttpSession attribute, then calls to SB methods may occurs in different thread (successives requests).
    Is this pattern supported? As JTA rely on ThreadLocal but a transaction can also be injected inside a SFSB: I'm a bit confused...
    HttpRequest1[Thread-1] : ejbHandler.start(); // conversation start
    HttpRequest2[Thread-2] : ejbHandler.doJob1(); // long running transaction
    HttpRequest3[Thread-1] : ejbHandler.doJob2(); // long running transaction
    HttpRequest4[Thread-3] : ejbHandler.commit(); // conversation end
    I tried a small use case and it seems to work (maybe all my requests was part of the same thread, lucky me) with JBoss but if an error occurs the transaction manager seems completely confused.
    If this pattern is legal (I know it is a very bad pattern...), I'll try to fix my code, if it isn't I'll have to drop JTA from this part of the code...
    Thank you.

    Yes, this is part of the required transactional behavior for a stateful session bean. A stateful session bean is the only session bean type whose bean instances can retain their association with a transaction after the business method returns. It's then the container's job to set up the correct transaction context for each successive invocation of the stateful session bean instance, until the transaction is committed or rolled back. If a system exception is thrown from the stateful session bean method the instance will be destroyed.

  • JMS MQSeries XA transaction

    Hi,
    Our requirement is to integrate the enqueueing of an
    MQSeries 5.1 message within an XA transaction which
    will be managed by Tuxedo. The other resource involved
    in the transaction will be an Oracle8i database which
    will be written to by a WeblogicEnterprise Java server.
    Ideally we would like to write to the queue within the
    same Java server, using the JMS for MQSeries patch.
    I've read that if you want to use WLE to coordinate
    then the anwer is that you must use the C/C++ interfaces
    to MQSeries as opposed to the Java/JMS interfaces, but I
    don't know if this is (still) the case.
    Has anyone tried a Java solution ?
    Thanks, Conor.

    Hi atheek1
    Thanks for the reply, it worked. Before I mark this question as answered, pls. answer the below queries (Thanks a lot!)
    1) Well, i just ticked transaction required and same transaction for response and it started working. I did not add routing options like you mentioned to QOS Exactly Once. Its working without it fine. So, my questions is what is the use of adding this QOS to exactly once. Is it mandatory?
    2) I have a couple of OSB services in which rollback is working automatically (XA JMS to JCA FTP Adapter) and (XA JMS to JCA DB adapter XA data source), here rollback works automatically. I dont have to tick transaction required. So my question is, when an XA based connection factory picks a message from the queue, a transaction is started at the container level. So why tick transaction required at the message flow level, when the weblogic has already initiated a transaction. Since you said that HTTP transport commits a transaction even if 500 or 404 occurs, it makes sense to tick is transaction required and same transaction for response in OSB proxy service. But the remaining scenarios work without these options. Hence will it be wise to say that these settings are only required for HTTP transport coz of the way it behaves (commits 404 and 500).
    Thanks

  • BPEL Transaction Inactive : Instance terminated without handling the Error

    Hi All,
         I have a BPEL process which uses XA transaction to insert data in MS SQL Server table.
    When I try to insert "out of range date value", it errs out as expected, but the transaction terminates without proceeding for the error handling part. I even tried disabling the idempotent option for the DB adapter, still the process terminates without error handling.
    Kindly guide me how I can overcome transaction inactive issue and handle the error in the catch all block.
    Thanks in advance.
    The error message is as follows,
    "Error Message: {http://schemas.oracle.com/bpel/extension}runtimeFault
    Non Recoverable System Fault :
    < bpelFault><faultType>0</faultType><runtimeFault xmlns="http://schemas.oracle.com/bpel/extension"><part name="summary"><summary>JTA transaction is not in active state. The transaction became inactive when executing activity "" for instance "130,047", bpel engine can not proceed further without an active transaction. please debug the invoked subsystem on why the transaction is not in active status. the transaction status is "MARKED_ROLLBACK". The reason was The execution of this instance "130047" for process "SyncAggregateSpendABCSImpl" is supposed to be in an active jta transaction, the current transaction status is "MARKED_ROLLBACK", the underlying exception is "BINDING.JCA-12563 Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [LoadCmpAggSpendStage.SapTable]. Caused by java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.. Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-242" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. " . Consult the system administrator regarding this error.< /summary></part><part name="detail"><detail>ORABPEL-02199 JTA transaction is not in active state. The transaction became inactive when executing activity "" for instance "130,047", bpel engine can not proceed further without an active transaction. please debug the invoked subsystem on why the transaction is not in active status. the transaction status is "MARKED_ROLLBACK". The reason was The execution of this instance "130047" for process "SyncAggregateSpendABCSImpl" is supposed to be in an active jta transaction, the current transaction status is "MARKED_ROLLBACK", the underlying exception is "BINDING.JCA-12563 Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [LoadCmpAggSpendStage.SapTable]. Caused by java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.. Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-242" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. " . Consult the system administrator regarding this error. at com.oracle.bpel.client.util.TransactionUtils.throwExceptionIfTxnNotActive(TransactionUtils.java:107) at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:356) at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1099) at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:594) at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:132) at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:74) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:173) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2718) at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1197) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1100) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:76) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:251) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:330) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4652) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4583) at com.collaxa.cube.engine.CubeEngine._createAndInvoke(CubeEngine.java:714) at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:559) at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:531) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:319) at sun.reflect.GeneratedMethodAccessor16515.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:103) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:113) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.runJaasMode(JpsAbsInterceptor.java:100) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:154) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:113) at sun.reflect.GeneratedMethodAccessor1671.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:68) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.oracle.pitchfork.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:34) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54) at com.oracle.pitchfork.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:42) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy368.handleInvoke(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source) at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(Unknown Source) at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:30) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:141) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:89) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:65) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at com.collaxa.cube.engine.dispatch.Dispatcher$ContextCapturingThreadFactory$2.run(Dispatcher.java:933) at java.lang.Thread.run(Thread.java:662) Caused by: oracle.fabric.common.FabricInvocationException: BINDING.JCA-12563 Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [LoadCmpAggSpendStage.SapTable]. Caused by java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.. Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-242" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. at oracle.integration.platform.blocks.adapter.fw.jca.cci.EndpointInteractionException.getFabricInvocationException(EndpointInteractionException.java:75) at oracle.integration.platform.blocks.adapter.AdapterReference.getFabricInvocationException(AdapterReference.java:316) at oracle.integration.platform.blocks.adapter.AdapterReference.request(AdapterReference.java:219) at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139) at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:182) at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:190) at sun.reflect.GeneratedMethodAccessor2127.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy386.request(Unknown Source) at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:858) at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:267) ... 61 more Caused by: BINDING.JCA-12563 Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'insert' failed due to: DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [LoadCmpAggSpendStage.SapTable]. Caused by java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.. Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-242" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.executeJcaInteraction(JCAInteractionInvoker.java:486) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.invokeJcaReference(JCAInteractionInvoker.java:572) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.invokeSyncJcaReference(JCAInteractionInvoker.java:545) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAEndpointInteraction.performSynchronousInteraction(JCAEndpointInteraction.java:547) at oracle.integration.platform.blocks.adapter.AdapterReference.request(AdapterReference.java:179) ... 76 more Caused by: BINDING.JCA-11616 DBWriteInteractionSpec Execute Failed Exception. insert failed. Descriptor name: [LoadCmpAggSpendStage.SapTable]. Caused by java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.. Please see the logs for the full DBAdapter logging output prior to this exception. This exception is considered not retriable, likely due to a modelling mistake. To classify it as retriable instead add property nonRetriableErrorCodes with value "-242" to your deployment descriptor (i.e. weblogic-ra.xml). To auto retry a retriable fault set these composite.xml properties for this invoke: jca.retry.interval, jca.retry.count, and jca.retry.backoff. All properties are integers. at oracle.tip.adapter.db.exceptions.DBResourceException.createNonRetriableException(DBResourceException.java:698) at oracle.tip.adapter.db.exceptions.DBResourceException.createEISException(DBResourceException.java:664) at oracle.tip.adapter.db.exceptions.DBResourceException.outboundWriteException(DBResourceException.java:712) at oracle.tip.adapter.db.DBInteraction.executeOutboundWrite(DBInteraction.java:1117) at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:247) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.executeJcaInteraction(JCAInteractionInvoker.java:357) ... 80 more Caused by: java.sql.BatchUpdateException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value. at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeBatch(SQLServerPreparedStatement.java:1178) at weblogic.jdbc.wrapper.PreparedStatement.executeBatch(PreparedStatement.java:210) at org.eclipse.persistence.internal.databaseaccess.DatabasePlatform.executeBatch(DatabasePlatform.java:2101) at org.eclipse.persistence.internal.databaseaccess.ParameterizedSQLBatchWritingMechanism.executeBatchedStatements(ParameterizedSQLBatchWritingMechanism.java:144) at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:535) at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:1717) at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:253) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:207) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:193) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelectCall(DatasourceCallQueryMechanism.java:264) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeSelect(DatasourceCallQueryMechanism.java:246) at org.eclipse.persistence.queries.DataReadQuery.executeNonCursor(DataReadQuery.java:197) at org.eclipse.persistence.queries.DataReadQuery.executeDatabaseQuery(DataReadQuery.java:152) at org.eclipse.persistence.queries.DataReadQuery.execute(DataReadQuery.java:137) at org.eclipse.persistence.internal.sessions.AbstractSession.internalExecuteQuery(AbstractSession.java:2831) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1449) at org.eclipse.persistence.sequencing.QuerySequence.select(QuerySequence.java:309) at org.eclipse.persistence.sequencing.QuerySequence.updateAndSelectSequence(QuerySequence.java:254) at org.eclipse.persistence.sequencing.StandardSequence.getGeneratedValue(StandardSequence.java:62) at org.eclipse.persistence.sequencing.DefaultSequence.getGeneratedValue(DefaultSequence.java:145) at org.eclipse.persistence.sequencing.Sequence.getGeneratedValue(Sequence.java:225) at org.eclipse.persistence.internal.sequencing.SequencingManager$NoPreallocation_State.getNextValue(SequencingManager.java:677) at org.eclipse.persistence.internal.sequencing.SequencingManager.getNextValue(SequencingManager.java:1067) at org.eclipse.persistence.internal.sequencing.ClientSessionSequencing.getNextValue(ClientSessionSequencing.java:70) at org.eclipse.persistence.internal.descriptors.ObjectBuilder.assignSequenceNumber(ObjectBuilder.java:355) at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:351) at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:163) at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:178) at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:475) at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80) at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:91) at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:287) at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58) at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:844) at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:743) at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108) at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2871) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1516) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1498) at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1449) at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:224) at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:123) at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3800) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1416) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1505) at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.writeChanges(UnitOfWorkImpl.java:5502) at oracle.tip.adapter.db.DBInteraction.executeOutboundWrite(DBInteraction.java:927) at oracle.tip.adapter.db.DBInteraction.execute(DBInteraction.java:247) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.executeJcaInteraction(JCAInteractionInvoker.java:357) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.invokeJcaReference(JCAInteractionInvoker.java:572) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAInteractionInvoker.invokeSyncJcaReference(JCAInteractionInvoker.java:545) at oracle.integration.platform.blocks.adapter.fw.jca.cci.JCAEndpointInteraction.performSynchronousInteraction(JCAEndpointInteraction.java:547) at oracle.integration.platform.blocks.adapter.AdapterReference.request(AdapterReference.java:179) at oracle.integration.platform.blocks.mesh.SynchronousMessageHandler.doRequest(SynchronousMessageHandler.java:139) at oracle.integration.platform.blocks.mesh.MessageRouter.request(MessageRouter.java:182) at oracle.integration.platform.blocks.mesh.MeshImpl.request(MeshImpl.java:190) at sun.reflect.GeneratedMethodAccessor2127.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:71) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy386.request(Unknown Source) at oracle.fabric.CubeServiceEngine.requestToMesh(CubeServiceEngine.java:862) at com.collaxa.cube.ws.WSInvocationManager.invoke(WSInvocationManager.java:267) at com.collaxa.cube.engine.ext.common.InvokeHandler.__invoke(InvokeHandler.java:1099) at com.collaxa.cube.engine.ext.common.InvokeHandler.handleNormalInvoke(InvokeHandler.java:594) at com.collaxa.cube.engine.ext.common.InvokeHandler.handle(InvokeHandler.java:132) at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELInvokeWMP.__executeStatements(BPELInvokeWMP.java:75) at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:173) at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2718) at com.collaxa.cube.engine.CubeEngine._handleWorkItem(CubeEngine.java:1197) at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1100) at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:78) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:251) at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:330) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4652) at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4584) at com.collaxa.cube.engine.CubeEngine._createAndInvoke(CubeEngine.java:714) at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:559) at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:531) at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:319) at sun.reflect.GeneratedMethodAccessor16515.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at com.oracle.pitchfork.intercept.MethodInvocationInvocationContext.proceed(MethodInvocationInvocationContext.java:103) at oracle.security.jps.ee.ejb.JpsAbsInterceptor$1.run(JpsAbsInterceptor.java:113) at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:324) at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.runJaasMode(JpsAbsInterceptor.java:100) at oracle.security.jps.ee.ejb.JpsAbsInterceptor.intercept(JpsAbsInterceptor.java:154) at oracle.security.jps.ee.ejb.JpsInterceptor.intercept(JpsInterceptor.java:113) at sun.reflect.GeneratedMethodAccessor1671.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.bea.core.repackaged.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310) at com.oracle.pitchfork.intercept.JeeInterceptorInterceptor.invoke(JeeInterceptorInterceptor.java:68) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.oracle.pitchfork.spi.MethodInvocationVisitorImpl.visit(MethodInvocationVisitorImpl.java:34) at weblogic.ejb.container.injection.EnvironmentInterceptorCallbackImpl.callback(EnvironmentInterceptorCallbackImpl.java:54) at com.oracle.pitchfork.spi.EnvironmentInterceptor.invoke(EnvironmentInterceptor.java:42) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131) at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119) at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at $Proxy368.handleInvoke(Unknown Source) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.__WL_invoke(Unknown Source) at weblogic.ejb.container.internal.SessionLocalMethodInvoker.invoke(SessionLocalMethodInvoker.java:39) at com.collaxa.cube.engine.ejb.impl.bpel.BPELDeliveryBean_5k948i_ICubeDeliveryLocalBeanImpl.handleInvoke(Unknown Source) at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:30) at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:141) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.process(BaseDispatchTask.java:89) at com.collaxa.cube.engine.dispatch.BaseDispatchTask.run(BaseDispatchTask.java:66) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:909) ... 2 more< /detail></part><part name="code"><code>com.collaxa.cube.engine.EngineException</code></part></runtimeFault></bpelFault>"

    Hello,
    You can't catch the roll back exception directly. It will rollback your transaction and because of that it will not get in the catch block.
    To solve this you can create a new BPEL to do the DB insert. Invoke that BPEL with a new transaction. Catch the Database error in the first BPEL
    Example:
      <component name="InsertData" version="2.0">
        <implementation.bpel src="InsertData.bpel"/>
        <property name="bpel.config.transaction">requiresNew</property>
        <property name="bpel.config.inMemoryOptimization">false</property>
        <property name="bpel.config.completionPersistPolicy">On</property>
      </component>
    In this example I have all my logic in the "SyncSypplierMaster" and then I invoke the BPEL "InsertData" (with the property <property name="bpel.config.transaction">requiresNew</property>) to insert in the database. I catch the error in the "SyncSypplierMaster" BPEL where I have the "InsertData" invocation.
    This works because SyncSypplierMaster" is in a different transaction.
    Note: If you are inserting in multiple tables and the error is in a child table you will not catch the DB error message also. If this is your case, I recommend you to investigate what is the patch required to solve this problem.
    Best Regards,
    Daniel Dias

Maybe you are looking for