This discussion is archived
9 Replies Latest reply: Mar 5, 2013 11:47 AM by 977335 RSS

Connection to a Progress OpenEdge database

LFHeckler Explorer
Currently Being Moderated
Hi,

What's the best way to connect a SOA 11.1.1.1 server to a Progress OpenEdge database?

I'm trying this steps:
1) copy the libs (util.jar, openedge.jar and base.jar from OpenEdge installation) and change the init script to setup the classpath
2) restart SOA Server
3) Create the JDBC datasource in Weblogic Console
3.1) configuring the database to Progress and using the class com.ddtek.jdbc.openedge.OpenEdgeDriver the "test connection" works without problem.
4) set the new datasource into DbAdapter configuration, using com.ddtek.jdbc.openedge.OpenEdgeDriver as plataformClassName
5) redeploy of DbAdapter

But when I try to use this new datasource inside a BPEL project, an errors occurs:

Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Teste_ems2movSelect' failed due to: Could not create/access the TopLink Session. This session is used to connect to the datastore. Caused by Exception [TOPLINK-7042] (Oracle TopLink - 11g Release 1 (11.1.1.1.0) (Build 090527)): oracle.toplink.exceptions.ValidationException Exception Description: Database platform class [com.ddtek.jdbc.openedge.OpenEdgeDriver] not found. Internal Exception: java.lang.ClassCastException: com.ddtek.jdbc.openedge.OpenEdgeDriver. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution.

Looking into Toplink documentation (http://www.oracle.com/technology/products/ias/toplink/technical/support/database11111.html) I saw that Progress database is not officially suported by Toplink.

There is another way to connect to a Progress database using jdbc, inside a BPEL process without make a Java webservice?
  • 1. Re: Connection to a Progress OpenEdge database
    977335 Newbie
    Currently Being Moderated
    What is the valid platform class name for Progress open edge DB?.I am using this as driver class(com.ddtek.jdbc.openedge.OpenEdgeDriver) and data source is working, but when bpel is calling Progress thru DB adapter , its failing with below error. I am using select query to read some fields from database.


    I am getting following error:

    Exception occured when binding was invoked.
    Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'Abc_DBadapter'
    failed due to: DBWriteInteractionSpec Execute Failed Exception.
    unknown failed. Descriptor name: [unknown].
    Caused by java.sql.SQLException: Cannot call Connection.commit in distributed transaction.
    Transaction Manager will commit the resource manager when the distributed transaction is committed..
    Please see the logs for the full DBAdapter logging output prior to this exception.
    This exception is considered retriable, likely due to a communication failure.
    To classify it as non-retriable instead add property nonRetriableErrorCodes with value "0" 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.


    Please help.

    K sham
  • 2. Re: Connection to a Progress OpenEdge database
    Joe Weinstein Expert
    Currently Being Moderated
    That's not a DBMS or driver level problem. That is
    a problem at the JDBC code level. Some code is
    calling commit() on a connection that WebLogic
    thinks is involved in a global transaction, so WebLogic
    is blocking that call.
  • 3. Re: Connection to a Progress OpenEdge database
    977335 Newbie
    Currently Being Moderated
    I am using the below query:
    <property name="SqlString" value="SELECT a.prh_part AS 'ItemNumber', b.pt_desc1 + ' ' + b.pt_desc2 AS 'Item Name',
    c.tr_qty_loc as 'Qty', b.pt_um as 'Unit', c.tr_serial as 'LotORSerial'
    FROM PUB.prh_hist a left outer join PUB.pt_mstr b on a.prh_part = b.pt_part and a.prh_domain = b.pt_domain
    left outer join PUB.tr_hist c on a.prh_nbr = c.tr_nbr and a.prh_line = c.tr_line and a.prh_domain = c.tr_domain and a.prh_receiver = c.tr_lot and c.tr_type = 'RCT-PO'
    where a.prh_receiver =#trackingnumber and a.prh_domain =#code"/>
    <property name="GetActiveUnitOfWork" value="false"/>

    Also, now removed Supports Global Transaction in Transaction tab in dataSource, now getting below error:

    <part name="summary">
    <summary>Exception occured when binding was invoked. Exception occured during invocation of JCA binding: "JCA Binding execute of Reference operation 'tt' failed due to: Pure SQL Exception. Pure SQL Execute of SELECT a.prh_part AS 'ItemNumber', b.pt_desc1 + ' ' + b.pt_desc2 AS 'Item Name', c.tr_qty_loc as 'Qty', b.pt_um as 'Unit', c.tr_serial as 'LotORSerial' FROM PUB.prh_hist a left outer join PUB.pt_mstr b on a.prh_part = b.pt_part and a.prh_domain = b.pt_domain left outer join PUB.tr_hist c on a.prh_nbr = c.tr_nbr and a.prh_line = c.tr_line and a.prh_domain = c.tr_domain and a.prh_receiver = c.tr_lot and c.tr_type = 'RCT-PO' where a.prh_receiver =#trackingnumber and a.prh_domain =#code failed. Caused by java.lang.RuntimeException: Failed to setAutoCommit to true for pool connection.. The Pure SQL option is for border use cases only and provides simple yet minimal functionality. Possibly try the "Perform an operation on a table" option instead. This exception is considered not retriable, likely due to a modelling mistake. ". The invoked JCA adapter raised a resource exception. Please examine the above error message carefully to determine a resolution. </summary>
    </part>
    <part name="detail">
    <detail>Failed to setAutoCommit to true for pool connection.</detail>
  • 4. Re: Connection to a Progress OpenEdge database
    Joe Weinstein Expert
    Currently Being Moderated
    did you undeploy and redeploy the datasource? I don't think the transactional setting is dynamicaly changeable.
  • 5. Re: Connection to a Progress OpenEdge database
    977335 Newbie
    Currently Being Moderated
    Thanks for replying...

    I just restarted the managed server. Is that enough?
  • 6. Re: Connection to a Progress OpenEdge database
    Joe Weinstein Expert
    Currently Being Moderated
    if that's where the JDBC is being done...
  • 7. Re: Connection to a Progress OpenEdge database
    977335 Newbie
    Currently Being Moderated
    Yes, Its done on the same.
  • 8. Re: Connection to a Progress OpenEdge database
    Joe Weinstein Expert
    Currently Being Moderated
    show the xml file for the datasource, from the domain's config\jdbc directory..
  • 9. Re: Connection to a Progress OpenEdge database
    977335 Newbie
    Currently Being Moderated
    It worked after adding "defaultAutoCommit=false" in system properties of Data source.

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points