TMS and Global Transactions

Hello Friends,
I have a doubt on TMS and Global Transaction.
Can tpbegin(), tpcommit(), tpabort() calls succeed when there is
no TMS server running for the Tuxedo Server group.
If yes, who manages the Global Transaction in this case?
Thanks in advance for ur time.
regards
MS

When you compile a Tuxedo server, there is ALWAYS a TMS compiled in. If
you look at $TUXDIR/udataobj/RM, you will fine a line similar to:
NONE:tmnull_switch:
When you do not use the -r option, or use -r NONE, the tmnull_switch is
compiled into your server. This is a bunch of do nothing code to occupy
the function slots that otherwise would be used by a real XA
connection. For example, if you had put
-r Oracle_XA
(also see the RM file) the switch xaosw is compiled into your server.
So the first thing I want point out is that a server ALWAYS has a TMS
switch compiled, even if it is a NULL switch.
Second item. This null switch does have a null transaction management
server, called TMS ($TUXDIR/bin/) This is the entry for the TMSNAME
field of a Service GROUP.
You might have an entry such as
APPGRP GRPNO=10 TMSNAME=TMS
DBGRP GRPNO=11 TMSNAME=TMSORACLE OPENINFO="......"
Now, I can have XA transactions initiated by servers in APPGRP, and have
servers in DBGRP participate in the same global transaction. (but watch
your performance)
So, to answer Manoj's question, No, they don't succeed if there is no
TMS. However, all you need is to add TMSNAME=TMS and have compiled the
servers with -r NONE (better to be explicit than implicit) and they will
work.
Hope this clears up some things.
Manoj SASIDHARAN wrote:
Hello Friends,
I have a doubt on TMS and Global Transaction.
Can tpbegin(), tpcommit(), tpabort() calls succeed when there is
no TMS server running for the Tuxedo Server group.
If yes, who manages the Global Transaction in this case?
Thanks in advance for ur time.
regards
MS--
Brian Douglass
Transaction Processing Solutions, Inc.
8555 W. Sahara
Suite 112
Las Vegas, NV 89117
Voice: 702-254-5485
Fax: 702-254-9449
e-mail: [email protected]

Similar Messages

  • Mix Local and Global Transaction using XA Driver for Oracle

    Hi all,
    We are trying to use a XA Driver which can support both local as well as global
    transaction. We tried using the Weblogic jDriver (XA Driver) type 2 that comes
    along with Weblogic installation but unfortunaltely it cannot mix local as well
    as global transaction.
    Please let me know in case we have any XA JDBC driver for Oracle Database which
    supports both local and global transaction together.
    Thnx,
    Kumar
    Environment:
    Weblogic 8.1 server
    Database used : Oracle8i

    Most database drivers can support local and global transactions, with some
    restrictions.
    The JDBC spec has been changed to require compliant drivers to let the
    application
    know if they try to start a global transaction while a local transaction has
    not been
    completed (or vice verse). So most of the database drivers have been
    changed to enforce
    this restriction (breaking a lot of code that is out there).
    "Kumar Raman" <[email protected]> wrote in message
    news:4033457c$[email protected]..
    >
    Hi all,
    We are trying to use a XA Driver which can support both local as well asglobal
    transaction. We tried using the Weblogic jDriver (XA Driver) type 2 thatcomes
    along with Weblogic installation but unfortunaltely it cannot mix local aswell
    as global transaction.
    Please let me know in case we have any XA JDBC driver for Oracle Databasewhich
    supports both local and global transaction together.
    Thnx,
    Kumar
    Environment:
    Weblogic 8.1 server
    Database used : Oracle8i

  • JCA and global transactions

    First of all, I do apologize but I can't find a JCA topic, so I'm positng my question here
    In my application I want to use XA transaction across the resource adapter. I read an article on the Sun forum (Connector-interest archives section) about an association between XAResource and ManagedConnection instances. Anyway, let's say for Oracle JDBC driver you already have OracleXAConnection which will give you a variable of XAResource, the similar approach is used in the JMS (XAQueueConnection, XATopicConnection). My question is what is the strategy is used for the generic resource adapter (not nessessarily JDBC-specific) to implement XAConnection in other words from my client code I want to be able to do something like this:
    ConnectionFactory ccf = (ConnectionFactory)ctx.lookup("eis/mysampleRA");
    XAConnection xaconn = ccf.getXAConnection();
    XAResource xaRes = xaconn.getXAResource();
    Connection conn = xaconn.getConnection();

    Hi,
    You would have to go through an instance of ManagedConnection.
    These instances are internal in the pooling of the appserver, but you can get
    a new instance from the adapter by calling createManagedConnection.
    Best,
    Guy
    http://www.atomikos.com -- Insure your data with TransactionsJTA

  • Multi data source and global transactions

    hi
    i am working on JDBC multidata source connectivity.... to resolve one error of "lock in doubt held "
    was searching through oracle sites got some recommendation as
    **Disable server side load balancing for each of the pools. This can be done by setting the INSTANCE_NAME attribute in your JDBC connect descriptor aliases.**
    **For example:**
    **jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=MYDBHOST1)(PORT=1522)))(CONNECT_DATA=(SERVICE_NAME=MYDB)(INSTANCE_NAME=MYDB1)))**
    **If you miss the INSTANCE_NAME attribute in your JDBC connect descriptor, the Oracle TNS Listener could still redirect you to some other instance depending on the load on the instance in question.**
    now i m unable to understand which data sources is to be updated with this URL multi data source or the target data sources
    can some body give me some clue........

    Every datasource in a MultiDataSource must have a URL that ensures that every connection
    in a given DataSource is always, only to one specific and unchanging RAC node.

  • Managed datasources, Global transactions and XA

    I have a question regarding the use of managed datasources and global transactions with oc4j 10.1.3.
    From the documentation at:
    http://download-west.oracle.com/docs/cd/B25221_04/web.1013/b14428/servdats.htm#CHDGJECC
    I conclude that managed datasources by default support global transactions.
    I have tested the following scenario:
    A stateless session bean starts a container managed transaction. The bean updates data in two different databases through two different
    managed datasources. The transaction is atomic.
    What surprises me is that this works. I would think that I would need to configure the datasources to make use of XA.
    Can someone explain why this works, wat is the difference between XA transactions and global transactions in this context?

    Further to give more info the error users are facing is
    Could not connect to 'oracle.jdbc.xa.client.OracleXADataSource'.

  • Docs about TMS and XA

    Hello.
    Does somebody know good docs about internal functions of TMSs,
    management of local and global transactions with them and their role in
    2PC? I have searched in edocs.bea.com but I only have their
    configuration and administration.
    Thanks in advance.
    R.G.

    Guys,
    Details about hpow to write an xa switch (presumably, you're developing a
    database, or other resource manager?) are to be found in the xa specification,
    available for purchase from the Open Group at Distributed TP: The XA
    Specification
    To link an xa switch into Tuxedo processes, you need to add it to the RM file,
    and use buildserver and buoldtms commands with the -r rmname option to link the
    object.
    The internals of the TMS are not documented. The TMS's role within 2 phase
    commit is to perform the prepare, commit, rollback and recover calls that
    co-ordinate the 2 phases of the commit The whitepaper at the aurorainfo site
    mentioned by Manoj ( Global Transactions - XX/Open XA - Resource Managers )
    documents this pretty well.
    I hope that helps.
    Regards,
    Peter.
    Got a Question? Ask BEA at http://askbea.bea.com
    The views expressed in this posting are solely those of the author, and BEA
    Systems, Inc. does not endorse any of these views.
    BEA Systems, Inc. is not responsible for the accuracy or completeness of the
    information provided
    and assumes no duty to correct, expand upon, delete or update any of the
    information contained in this posting.
    "José Torres" wrote:
    As to me, i'm searching for a sample code on how to default implement the 6
    function entries of the xa_switch struct.
    Also is there need to link the obj code to regenerate the tux exe binay ? Or
    is it possible to tell tux kernel to load a shared lib ?
    thanks
    josé
    "Ramón Gordillo Gutiérrez" <[email protected]> a écrit dans le message
    news: [email protected]..
    Hello.
    Does somebody know good docs about internal functions of TMSs,
    management of local and global transactions with them and their role in
    2PC? I have searched in edocs.bea.com but I only have their
    configuration and administration.
    Thanks in advance.
    R.G.
    [att1.html]

  • Does Oracle App Server 10.1.3.1 support global transactions?

    I'm asking because it seems it doesn't. My stateless EJB calls an EJB in another application server, but the transaction is not propagated. Why is that?
    Does it matter which inittial context factory or which TransactionalObject?
    Do the different application server vendors (Oracle, Websphere ect.) support global transactions between each other?
    I cannot find anything about this in the Oracle App server documentation.
    Can anyone help?

    Hello,
    Yes i should be possible to do.
    Have you look at the OC4J transaction propagation that used the OracleAS transaction manager?
    - How to list.
    This will help you to configure properly your application.
    Documentation:
    - Data source and Global Transactions (XA)
    - How do You Participate in a Global or Two-Phase Commit (2PC) Transaction?
    - Configuring Transaction Service
    Hope that helps...
    Regards
    Tugdual Grall

  • How to configure global transaction wthin Oracle AS JMS and Oracle JMS

    How to configure global transaction if I take a message from Oracle JMS(AQ) and send it to the Oracle JMS?

    Which version of OC4J are you working on?
    In OC4J 10.1.3.x, presume your OC4J JMS listens messages via MDB which uses a resource adapter as a message listener. The resouce adaper could be the generic JMS adapter deployed in OC4J as the default.
    Resource adapter configuration to support MDBs is included in the standard ra.xml file, which lists the message listener types that the resource adapter supports.
    The MDB developer or deployer configures the MDB in the ejb-jar.xml file, through a <message-driven> element.
    In addition to above, configuration in the ejb-jar.xml file specifies whether an MDB uses transactions.
    1) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, and the <trans-attribute> subelement of <container-transaction> (under the <assembly-descriptor> element) has a value of Required. In this circumstance, if there is an imported transaction, then message delivery and related work are performed within that transaction. If there is no imported transaction, OC4J creates a transaction, and message delivery and related work are performed within that transaction.
    2) The <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Bean. In this circumstance, the MDB manages the transaction. If a transaction is imported, OC4J will suspend it before the message delivery method call to the MDB, in order to avoid conflict.
    Message delivery is not transacted if the <transaction-type> subelement of <message-driven> in ejb-jar.xml has a value of Container, but the <trans-attribute> element has a value of NotSupported. If there is an imported transaction in this circumstance, OC4J will suspend the transaction before the message delivery method call to the MDB.
    Details could be found from OC4J Resource Adapter Guide.

  • Global transactions in OSB and EJB 2.1

    Hi,
    My team is working in a SOA service based on OSB 11g (11.1.1.5) using DB JCA Adapter and EJB 2.1 over WLS 10g(WLI environment). The logic of the service works in this way:
    1. A table in a database (XE) is polled by the DB Adapter which starts the service (1 row = 1 message).
    2. The message contains a collection of items to be inserted in another Oracle database.
         Once a message/row is picked, and after some steps (logging, validation,etc), there is a for..each action which extracts each item of the collection and executes a service callout action to a business service.
    3. This business service uses EJB protocol to call an EJB (2.1 + WLS Extensions). The EJB is deployed in another domain (WLS 10.3.0/10g and Oracle BEA drivers)  and only executes an store procedure with the parameters based on the message and inserts these values in a table.
    4. Once the for...each finishes, there is a call to another proxy service which marks the message/row as "processed" in the source table. This update is done via DB JCA also.
    5. In case of an error, the error handler of the proxy service calls the proxy service mentioned above to mark the row as "Failed" (in fact there is a retry mechanism, but it's not important for now).
    The service requires to work inside a global transaction. The main requirement is that the collection of items should be processed as "All or None", so basically we're using the options to manage the global transaction. However, the problem is that it's failing to rollback the whole insertion of items when an error is simulated. It only rolls back the last insertion/execution of SP.
    Additionally, the proxy service that should mark the row as FAILED, never updates this one, and the tables stay locked until we modify one of the store procedure in order to avoid the simulated error and commit the transaction.
    The EJB uses WLS extensions with the annotations to "transaction required". The proxy service has the option transaction required also. The database drivers are all XA and we're testing against Oracle11g XE (however, the EJB destiny will be Oracle 8i in production).
    We have tried different alternatives, splitting the logic in different proxies (Proxy services for JCA, Proxy with For Each for EJB, etc), isolating the specific part with the EJB call, without success.
    The security between domains is set as Global Trust.
    Do you have any idea, example or suggestion about this problem? Is EJB really supported in Global Transactions and XA?
    Thanks in advance.

    where do you find the J2EE Connector 1.5 compliant
    Resource Adapter?I wrote the compliant adapter myself. Hey Steve,
    Were you able to find a solution for this problem. I am struggling with the same problem with the RI Beta implementation.
    Sandeep

  • E-Business Suite apps_initialize and SOA Global Transactions

    Hi,
    We are developing an integration which sends data from one system to an Oracle E-Business Suite instance. In order to load the data into E-Business we need to call API’s which require the fnd_global.apps_initialize to be run.
    We have a custom PL/SQL procedure which calls the API
    e.g.
    SOA -> custom PL/SQL -> E-Biz API
    The custom PL/SQL runs apps_initialize.
    The problem is when we call this from SOA via a XA connection we get the following error:
    <P_ERR_MESSAGE>Error - Failed to delete the interface records after reading result! Message: Unknown Error ORA-20001: Oracle error -20001: ORA-20001: Oracle error -2074: ORA-02074: cannot SET NLS in a distributed transaction
    has been detected in fnd_global.set_nls.set_parameter('NLS_LANGUAGE','AMERICAN').
    has been detected in fnd_global.set_nls. ORA-06512: at "APPS.APP_EXCEPTION", line 72
    ORA-06512: at "APPS.FND_GLOBAL", line 245
    ORA-06512: at "APPS.FND_GLOBAL", line 1426
    ORA-06512: at "APPS.FND_GLOBAL", line 1684
    ORA-06512: at "APPS.FND_GLOBAL", line 2309
    ORA-06512: at "APPS.FND_GLOBAL", line 2447
    ORA-06512: at "APPS.FND_GLOBAL", line 2385
    ORA-06512: at "APPS.ICSOA_UTIL_PKG", line 42
    ORA-06512: at "APPS.ICAR_INT_PKG", line 521
    </P_ERR_MESSAGE>
    The main error here is cannot SET NLS in a distributed transaction.
    This is caused by fnd_global.apps_initialize running SET NLS commands in order to do it’s thing.
    We are looking to use the functionality of global transactions in order to achieve reliable messaging.
    Does anyone have any experience with calling custom PL/SQL from SOA XA connections?
    Robert

    Robert,
    I have the similar use case. I am using a seeded Oracle API to insert data into the tables. I want the user information to be populated in the WHO columns (CREATED_BY, LAST_UPDATED_BY). I have mentioned the jca.apps.username and jca.apps.responsibility in the Invoke activity.
    But unfortunately, the columns are not populated with the data. I am using the Oracle Apps Adapter to call the API.
    Any inputs will be really helpful.
    Thanks,
    Sakthi.

  • Global transaction problem with JDriver/Oracle and Oracle XA

    We are haveing serious problems with Container Managed Transactions on Bea 6.1
    and Oracle with EJB having set "Required" for all methods. We have tried in vain
    to make it work with JDriver as well as OracleXAClient. Both fail at sometime
    during the execution throwing "Not called in cotext of global transaction" (with
    JDriver) OR "XAER_PROTO : Routine was invoked in an
    inproper context start() failed on resource 'OracleXAPool'" (this one with oracle
    XA).
    1.) Weblogic JDriver-XA:
    DatabaseMetaData metaData = dataSource.getJDBCConnection.getMetaData();
    ResultSet resultSet = metaData.getTables(null, null, tableName.toUpperCase(),
    new String[]{"TABLE"});
    This fails immmediately saying that it was not called from global transaction.
    Interesting thing is that with OracleXA, it doesnt say this exception at this
    check point.
    2) Oracle XA
    Okie, we couldnot read through the CLOB using it so for reading CLOB, we used
    direct jdbc connection and then did away with it. Now all next sql queries were
    executed against oracle pool using XA data source with OracleXAClient. But at
    some point we again ran into the problem "XAER_PROTO : Routine was invoked in
    an
    inproper context start() failed on resource 'OracleXAPool'"
    3 Oracle Thin Driver
    everything always works with it.

    AFAIR this issue was resoved by moving tx opreations out from non-tx
    methods.
    Regards,
    Slava
    "Apurb Kumar" <[email protected]> wrote in message
    news:[email protected]...
    Jawad,
    It would be nice if you can post the full stack trace error message. Didyou try moving to
    the latest service pack (sp2) for WLS6.1.
    Thanks,
    Jawad Mahmood wrote:
    Yes we had correctly set TXDataSource and let it to point to the right
    connection
    pool each time and it worked well with oracle thin driver but not whenwe switched
    the pool to JDriver or OracleXAClient. Note that we could aways confirmthat pool
    was successfully created alongwith we could retrieve connection from itvia TXDatSource,
    things gave problem after we attempted to do what i had mentioned in mylast posting.
    >>
    Also with JBoss 2.4.4 things work pretty well. So couldnt be our codeproblem.
    "Slava Imeshev" <[email protected]> wrote:
    Jawad,
    Did you set up TxDataSource?
    Regards,
    Slava Imeshev
    "Jawad Mahmood" <[email protected]> wrote in message
    news:[email protected]...
    We are haveing serious problems with Container Managed Transactionson
    Bea 6.1
    and Oracle with EJB having set "Required" for all methods. We havetried
    in vain
    to make it work with JDriver as well as OracleXAClient. Both fail atsometime
    during the execution throwing "Not called in cotext of global
    transaction"
    (with
    JDriver) OR "XAER_PROTO : Routine was invoked in an
    inproper context start() failed on resource 'OracleXAPool'" (this onewith
    oracle
    XA).
    1.) Weblogic JDriver-XA:
    DatabaseMetaData _metaData =
    _dataSource.getJDBCConnection.getMetaData();
    ResultSet resultSet = metaData.getTables(null, null,tableName.toUpperCase(),
    new String[]{"TABLE"});
    This fails immmediately saying that it was not called from globaltransaction.
    Interesting thing is that with OracleXA, it doesnt say this exceptionat
    this
    check point.
    2) Oracle XA
    Okie, we couldnot read through the CLOB using it so for reading CLOB,we
    used
    direct jdbc connection and then did away with it. Now all next sqlqueries
    were
    executed against oracle pool using XA data source with
    OracleXAClient.
    But
    at
    some point we again ran into the problem "XAER_PROTO : Routine wasinvoked
    in
    an
    inproper context start() failed on resource 'OracleXAPool'"
    3 Oracle Thin Driver
    everything always works with it.
    Apurb Kumar

  • Lookup-table and query-database do not use global transaction

    Hi,
    following problem:
    DbAdapter inserts data into DB (i.e. an invoice).
    Process takes part in global transaction.
    After the insert there is a transformation which uses query-database and / or lookup-table.
    It seems these XPath / XSLT functions are NOT taking part in the transaction and so we can not access information from the current db transaction.
    I know workarounds like using DbAdapter for every query needed, etc. but this will cost a lot of time to change.
    Is there any way to share transaction in both DbAdapter insert AND lookup-table and query-database?
    Thanks, Best Regards,
    Martin

    One dba contacted me and made this statement:
    Import & export utilities are not independent from characterset. All
    user data in text related datatypes is exported using the character set
    of the source database. If the character sets of the source and target
    databases do not match a single conversion is performed.So far, that does not appear to be correct.
    nls_characterset = AL32UTF8
    nls_nchar_characterset = UTF8
    Running on Windows.
    EXP produces a backup in WE8MSWIN1252.
    I found that if I change the setting of the NLS_LANG registry setting for my oracle home, the exp utility exports to that character set.
    I changed the nls_lang
    from AMERICAN_AMERICA.WE8MSWIN1252
    to AMERICAN_AMERICA.UTF8
    Unfortunately , the export isn't working right, although it did change character sets.
    I get a warning on a possible character set conversion issue from AL32UTF8 to UTF8.
    Plus, I get an EXP_00056 Oracle error 932 encountered
    ORA-00932: inconsistent datatypes: expected BLOB, CLOB, get CHAR.
    EXP-00000: export terminated unsuccessfully.
    The schema I'm exporting with has exactly one procedure in it. Nothing else.
    I guess getting a new error message is progress. :)
    Still can't store multi-lingual characters in data tables.

  • A global transaction exception on  weblogic 8.1 sp4 and ingres ,could you give me some help

    My application deployed on weblogic 8.1 sp4 and ingres2.6,The ejb is BMP and
              transaction type is "required",so i configured XA connection pool with
              edbc.jar,which support XA transaction.but when excute an ejb mothod,it is
              always throw the Exeption:
              javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
              jav
              a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
              inproper co
              ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
              was in
              voked in an inproper context
              javax.transaction.xa.XAException
              at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
              at
              weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
              urceInfo.java:1140)
              at
              weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
              sourceInfo.java:1072)
              at
              weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
              ourceInfo.java:240)
              at
              weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:463)
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
              at
              weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              334)
              at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              at
              weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              ce.java:305)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              t(ExternalTransaction.java:53)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              Connection(ExternalTransaction.java:90)
              at
              com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              eryForList(GeneralStatement.java:123)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:613)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:587)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              ssionImpl.java:120)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              entImpl.java:78)
              at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              at
              com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              rkflowPackageInfoDAO.java:892)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:373)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
              at
              weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              334)
              at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              at
              weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              ce.java:305)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              t(ExternalTransaction.java:53)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              Connection(ExternalTransaction.java:90)
              at
              com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              eryForList(GeneralStatement.java:123)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:613)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:587)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              ssionImpl.java:120)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              entImpl.java:78)
              at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              at
              com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              rkflowPackageInfoDAO.java:892)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:373)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:383)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
              jav
              a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
              inproper co
              ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
              was in
              voked in an inproper context
              javax.transaction.xa.XAException
              at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
              at
              weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
              urceInfo.java:1140)
              at
              weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
              sourceInfo.java:1072)
              at
              weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
              ourceInfo.java:240)
              at
              weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:463)
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
              at
              weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              334)
              at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              at
              weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              ce.java:305)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              t(ExternalTransaction.java:53)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              Connection(ExternalTransaction.java:90)
              at
              com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              eryForList(GeneralStatement.java:123)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:613)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:587)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              ssionImpl.java:120)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              entImpl.java:78)
              at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              at
              com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              rkflowPackageInfoDAO.java:892)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:373)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
              at
              weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              334)
              at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              at
              weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              ce.java:305)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              t(ExternalTransaction.java:53)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              Connection(ExternalTransaction.java:90)
              at
              com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              eryForList(GeneralStatement.java:123)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:613)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:587)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              ssionImpl.java:120)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              entImpl.java:78)
              at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              at
              com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              rkflowPackageInfoDAO.java:892)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:373)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              at
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              dByName(WorkflowPackageBean.java:383)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              indByName(wfpackage_tzapts_Impl.java:335)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at
              sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              java:39)
              at
              sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:324)
              at
              weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              (BeanManagedPersistenceManager.java:152)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1784)
              at
              weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              anager.java:1756)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              i hope to get more helpful information,so i turn on weblogic.debug
              switch with
              "-Dweblogic.Debug=weblogic.JDBCConn,weblogic.JDBCSQL,weblogic.JTA2PC,weblogic.JTAXA,weblogic.JTAJDBC"
              the below is debug output, i dont know wht always inproper transaction
              state.
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Info> <WebLogicServer>
              <BEA-000213> <Addin
              g address: 129.184.13.228 to licensed client list>
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <java.lang.Excep
              tion: TRACE: [ExecuteThread: '24' for queue:
              'weblogic.kernel.Default']ServerTM[
              ServerCoordinatorDescriptor=(CoordinatorURL=weblogic81sp4_test+129.184.13.228:80
              01+Intetest+t3+,
              XAResources={},NonXAResources={})].setTransactionTimeout(120).
              at
              weblogic.transaction.internal.TraceHelper.traceStack(TraceHelper.java
              :28)
              at
              weblogic.transaction.internal.TransactionManagerImpl.setTransactionTi
              meout(TransactionManagerImpl.java:415)
              at
              weblogic.ejb20.internal.MethodDescriptor.startTransaction(MethodDescr
              iptor.java:252)
              at
              weblogic.ejb20.internal.MethodDescriptor.getInvokeTx(MethodDescriptor
              .java:377)
              at
              weblogic.ejb20.internal.EJBRuntimeUtils.createWrapWithTxs(EJBRuntimeU
              tils.java:324)
              at
              weblogic.ejb20.internal.BaseEJBHome.preHomeInvoke(BaseEJBHome.java:35
              8)
              at
              weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:631)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              findByName(wfpackage_tzapts_HomeImpl.java:190)
              at
              com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              WLSkel.invoke(Unknown Source)
              at
              weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              at
              weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              ef.java:108)
              at
              weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              at
              weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              dSubject.java:363)
              at
              weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              147)
              at
              weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              a:415)
              at
              weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              .java:30)
              at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <Xid=BEA1-0002D2
              21FAAB(2036170959),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,secon
              ds since begin=0,seconds left=-1142305918) wakeUpAfterSeconds(120)>
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: null: init(t/o=120,ttl=120)>
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: null: setProperty: weblogic.transaction.name=[EJB
              com.bull.flexflow.workflow
              .workflowpackage.WorkflowPackageBean.findByName(java.lang.String)]>
              <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: null: setName: [EJB
              com.bull.flexflow.workflow.workflowpackage.WorkflowPacka
              geBean.findByName(java.lang.String)]>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              com.b
              ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              tring)]- -pool:flexstudio.xa.ds- > DataSource.getConnection>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              com.b
              ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              tring)]- -pool:flexstudio.xa.ds- >
              DataSource.refreshXAConnAndEnlist(inXAConn:nu
              ll, conn:null, needsTxCtx:true)>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              com.b
              ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              tring)]- -pool:flexstudio.xa.ds- > DataSource.getXAConnFromPool
              waitSecs:117>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              com.b
              ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              tring)]- -pool:flexstudio.xa.ds- <
              DataSource.getXAConnFromPool:[EDBC-XAConnecti
              on[5], owner=null, rmConn=EDBC-XAVirtConn[6]], Num XAConn:1>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: [EJB
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              me(java.lang.String)]: setLocalProperty:
              weblogic.jdbc.jta.flexstudio.xa.ds=webl
              ogic.jdbc.wrapper.TxInfo@1aaa2594>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              com.b
              ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              tring)]- -pool:flexstudio.xa.ds- XA conn assoc with
              tx:[EDBC-XAConnection[5], ow
              ner=flexstudio.xa.ds, rmConn=EDBC-XAVirtConn[6]]>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: [EJB
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              me(java.lang.String)]: enlistResource:flexstudio.xa.ds>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <ResourceDescrip
              tor[flexstudio.xa.ds]: getOrCreate gets rd: name = flexstudio.xa.ds
              resourceType = 2
              registered = true
              scUrls = weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+
              xar = flexstudio.xa.ds
              healthy = true
              lastAliveTimeMillis = -1
              numActiveRequests = 0
              >
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB: [EJB
              com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              me(java.lang.String)]: setCoordinatorURL
              =>ServerCoordinatorDescriptor=(Coordina
              torURL=weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+,
              XAResources={},NonXA
              Resources={})>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB6F1049B9: enlist flexstudio.xa.ds, beforeState=new>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <BEA1-0002D221FA
              AB6F1049B9: XA.start(rm=flexstudio.xa.ds, xar=flexstudio.xa.ds,
              flags=TMNOFLAGS)
              >
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <ResourceDescrip
              tor[flexstudio.xa.ds]: Resource 'flexstudio.xa.ds'
              setTransactionTimeout(120) no
              t called. callSetTransactionTimeout=false,
              supportsSetTransactionTimeout=true>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              <ResourceDescrip
              tor[flexstudio.xa.ds]: startResourceUse, Number of active requests:1, last
              alive
              time:0 ms ago.>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              < -tx:null- -poo
              l:flexstudio.xa.ds- > XAConnection.getXAResource,
              xaConn:EDBC-XAConnection[5]>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              < -tx:null- -poo
              l:flexstudio.xa.ds- < XAConnection.getXAResource,
              xaRes:EDBC-XAConnection[5]>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              < -tx:null- -poo
              l:flexstudio.xa.ds- >
              XAResource.start(Xid:bea1-0002d221faab6f1049b9-666c6578737
              47564696f2e78612e6473, flags:TMNOFLAGS), xaRes:EDBC-XAConnection[5]>
              <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              < -tx:null- -poo
              l:flexstudio.xa.ds- < XA error: XAER_PROTO : Routine was invoked in an
              inproper
              context
              javax.transaction.xa.XAException
              at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
              at
              weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
              urceInfo.java:1140)
              at
              weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
              sourceInfo.java:1072)
              at
              weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
              ourceInfo.java:240)
              at
              weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:463)
              at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
              at
              weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              334)
              at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              at
              weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              ce.java:305)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              t(ExternalTransaction.java:53)
              at
              com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              Connection(ExternalTransaction.java:90)
              at
              com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              eryForList(GeneralStatement.java:123)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:613)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              MapExecutorDelegate.java:587)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              ssionImpl.java:120)
              at
              com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              entImpl.java:78)
              at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              at
              com.bull

    albert wrote:
              > My application deployed on weblogic 8.1 sp4 and ingres2.6,The ejb is BMP and
              > transaction type is "required",so i configured XA connection pool with
              > edbc.jar,which support XA transaction.but when excute an ejb mothod,it is
              > always throw the Exeption:
              Hi. In order to debug this we would need you to turn on
              the JTAXA, JTA2PC, JTAJDBC debug flags and in the
              Connection Pool under JDBCCOnnectionPoolMBean JDBCXADebugLevel="20".
              Then reproduce and provide server logs for all servers involved in
              the global transaction and the config.xml.
              This is complex enough that you should open an official support case
              to get help setting that up.
              Joe
              >
              >
              > ####################################################################
              > javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
              > jav
              > a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
              > inproper co
              > ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
              > was in
              > voked in an inproper context
              > javax.transaction.xa.XAException
              > at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              > at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
              > urceInfo.java:1140)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
              > sourceInfo.java:1072)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
              > ourceInfo.java:240)
              > at
              > weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              > rverTransactionImpl.java:463)
              > at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
              > at
              > weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              > 334)
              > at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              > at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              > at
              > weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              > ce.java:305)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              > t(ExternalTransaction.java:53)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              > Connection(ExternalTransaction.java:90)
              > at
              > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              > eryForList(GeneralStatement.java:123)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:613)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:587)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              > ssionImpl.java:120)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              > entImpl.java:78)
              > at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              > at
              > com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              > rkflowPackageInfoDAO.java:892)
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:373)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              >
              > at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
              > at
              > weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              > 334)
              > at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              > at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              > at
              > weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              > ce.java:305)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              > t(ExternalTransaction.java:53)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              > Connection(ExternalTransaction.java:90)
              > at
              > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              > eryForList(GeneralStatement.java:123)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:613)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:587)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              > ssionImpl.java:120)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              > entImpl.java:78)
              > at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              > at
              > com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              > rkflowPackageInfoDAO.java:892)
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:373)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              >
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:383)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              > javax.ejb.FinderException: Unexpected exception while enlisting XAConnection
              > jav
              > a.sql.SQLException: XA error: XAER_PROTO : Routine was invoked in an
              > inproper co
              > ntext start() failed on resource 'flexstudio.xa.ds': XAER_PROTO : Routine
              > was in
              > voked in an inproper context
              > javax.transaction.xa.XAException
              > at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              > at weblogic.jdbc.jta.DataSource.start(DataSource.java:629)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.start(XAServerReso
              > urceInfo.java:1140)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerRe
              > sourceInfo.java:1072)
              > at
              > weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerRes
              > ourceInfo.java:240)
              > at
              > weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              > rverTransactionImpl.java:463)
              > at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1392)
              > at
              > weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              > 334)
              > at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              > at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              > at
              > weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              > ce.java:305)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              > t(ExternalTransaction.java:53)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              > Connection(ExternalTransaction.java:90)
              > at
              > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              > eryForList(GeneralStatement.java:123)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:613)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:587)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              > ssionImpl.java:120)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              > entImpl.java:78)
              > at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              > at
              > com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              > rkflowPackageInfoDAO.java:892)
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:373)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              >
              > at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1397)
              > at
              > weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1
              > 334)
              > at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:396)
              > at weblogic.jdbc.jta.DataSource.connect(DataSource.java:354)
              > at
              > weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSour
              > ce.java:305)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.ini
              > t(ExternalTransaction.java:53)
              > at
              > com.ibatis.sqlmap.engine.transaction.external.ExternalTransaction.get
              > Connection(ExternalTransaction.java:90)
              > at
              > com.ibatis.sqlmap.engine.mapping.statement.GeneralStatement.executeQu
              > eryForList(GeneralStatement.java:123)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:613)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.queryForList(Sql
              > MapExecutorDelegate.java:587)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.queryForList(SqlMapSe
              > ssionImpl.java:120)
              > at
              > com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.queryForList(SqlMapCli
              > entImpl.java:78)
              > at com.bull.flexflow.store.dao.DAO.getList(DAO.java:38)
              > at
              > com.bull.flexflow.store.dao.WorkflowPackageInfoDAO.findLikeTheName(Wo
              > rkflowPackageInfoDAO.java:892)
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:373)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              >
              > at
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.ejbFin
              > dByName(WorkflowPackageBean.java:383)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_Impl.ejbF
              > indByName(wfpackage_tzapts_Impl.java:335)
              > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              > at
              > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
              > java:39)
              > at
              > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
              > sorImpl.java:25)
              > at java.lang.reflect.Method.invoke(Method.java:324)
              > at
              > weblogic.ejb20.manager.BeanManagedPersistenceManager.collectionFinder
              > (BeanManagedPersistenceManager.java:152)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1784)
              > at
              > weblogic.ejb20.manager.BaseEntityManager.collectionFinder(BaseEntityM
              > anager.java:1756)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:648)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              >
              > ##########################################################################################
              > i hope to get more helpful information,so i turn on weblogic.debug
              > switch with
              > "-Dweblogic.Debug=weblogic.JDBCConn,weblogic.JDBCSQL,weblogic.JTA2PC,weblogic.JTAXA,weblogic.JTAJDBC"
              > the below is debug output, i dont know wht always inproper transaction
              > state.
              >
              >
              > ##########################################################################################
              >
              >
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Info> <WebLogicServer>
              > <BEA-000213> <Addin
              > g address: 129.184.13.228 to licensed client list>
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <java.lang.Excep
              > tion: TRACE: [ExecuteThread: '24' for queue:
              > 'weblogic.kernel.Default']ServerTM[
              > ServerCoordinatorDescriptor=(CoordinatorURL=weblogic81sp4_test+129.184.13.228:80
              > 01+Intetest+t3+,
              > XAResources={},NonXAResources={})].setTransactionTimeout(120).
              > at
              > weblogic.transaction.internal.TraceHelper.traceStack(TraceHelper.java
              > :28)
              > at
              > weblogic.transaction.internal.TransactionManagerImpl.setTransactionTi
              > meout(TransactionManagerImpl.java:415)
              > at
              > weblogic.ejb20.internal.MethodDescriptor.startTransaction(MethodDescr
              > iptor.java:252)
              > at
              > weblogic.ejb20.internal.MethodDescriptor.getInvokeTx(MethodDescriptor
              > .java:377)
              > at
              > weblogic.ejb20.internal.EJBRuntimeUtils.createWrapWithTxs(EJBRuntimeU
              > tils.java:324)
              > at
              > weblogic.ejb20.internal.BaseEJBHome.preHomeInvoke(BaseEJBHome.java:35
              > 8)
              > at
              > weblogic.ejb20.internal.EntityEJBHome.finder(EntityEJBHome.java:631)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl.
              > findByName(wfpackage_tzapts_HomeImpl.java:190)
              > at
              > com.bull.flexflow.workflow.workflowpackage.wfpackage_tzapts_HomeImpl_
              > WLSkel.invoke(Unknown Source)
              > at
              > weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:477)
              > at
              > weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
              > ef.java:108)
              > at
              > weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:420)
              > at
              > weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
              > dSubject.java:363)
              > at
              > weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
              > 147)
              > at
              > weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
              > a:415)
              > at
              > weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
              > .java:30)
              > at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
              >
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <Xid=BEA1-0002D2
              > 21FAAB(2036170959),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,secon
              > ds since begin=0,seconds left=-1142305918) wakeUpAfterSeconds(120)>
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: null: init(t/o=120,ttl=120)>
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: null: setProperty: weblogic.transaction.name=[EJB
              > com.bull.flexflow.workflow
              > .workflowpackage.WorkflowPackageBean.findByName(java.lang.String)]>
              > <Mar 14, 2006 11:11:58 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: null: setName: [EJB
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPacka
              > geBean.findByName(java.lang.String)]>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              > com.b
              > ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              > tring)]- -pool:flexstudio.xa.ds- > DataSource.getConnection>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              > com.b
              > ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              > tring)]- -pool:flexstudio.xa.ds- >
              > DataSource.refreshXAConnAndEnlist(inXAConn:nu
              > ll, conn:null, needsTxCtx:true)>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              > com.b
              > ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              > tring)]- -pool:flexstudio.xa.ds- > DataSource.getXAConnFromPool
              > waitSecs:117>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              > com.b
              > ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              > tring)]- -pool:flexstudio.xa.ds- <
              > DataSource.getXAConnFromPool:[EDBC-XAConnecti
              > on[5], owner=null, rmConn=EDBC-XAVirtConn[6]], Num XAConn:1>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: [EJB
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              > me(java.lang.String)]: setLocalProperty:
              > weblogic.jdbc.jta.flexstudio.xa.ds=webl
              > ogic.jdbc.wrapper.TxInfo@1aaa2594>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000> < -tx:[EJB
              > com.b
              > ull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByName(java.lang.S
              > tring)]- -pool:flexstudio.xa.ds- XA conn assoc with
              > tx:[EDBC-XAConnection[5], ow
              > ner=flexstudio.xa.ds, rmConn=EDBC-XAVirtConn[6]]>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: [EJB
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              > me(java.lang.String)]: enlistResource:flexstudio.xa.ds>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <ResourceDescrip
              > tor[flexstudio.xa.ds]: getOrCreate gets rd: name = flexstudio.xa.ds
              > resourceType = 2
              > registered = true
              > scUrls = weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+
              > xar = flexstudio.xa.ds
              > healthy = true
              > lastAliveTimeMillis = -1
              > numActiveRequests = 0
              >
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB: [EJB
              > com.bull.flexflow.workflow.workflowpackage.WorkflowPackageBean.findByNa
              > me(java.lang.String)]: setCoordinatorURL
              > =>ServerCoordinatorDescriptor=(Coordina
              > torURL=weblogic81sp4_test+129.184.13.228:8001+Intetest+t3+,
              > XAResources={},NonXA
              > Resources={})>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB6F1049B9: enlist flexstudio.xa.ds, beforeState=new>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <BEA1-0002D221FA
              > AB6F1049B9: XA.start(rm=flexstudio.xa.ds, xar=flexstudio.xa.ds,
              > flags=TMNOFLAGS)
              >
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <ResourceDescrip
              > tor[flexstudio.xa.ds]: Resource 'flexstudio.xa.ds'
              > setTransactionTimeout(120) no
              > t called. callSetTransactionTimeout=false,
              > supportsSetTransactionTimeout=true>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JTA> <BEA-110027>
              > <ResourceDescrip
              > tor[flexstudio.xa.ds]: startResourceUse, Number of active requests:1, last
              > alive
              > time:0 ms ago.>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              > < -tx:null- -poo
              > l:flexstudio.xa.ds- > XAConnection.getXAResource,
              > xaConn:EDBC-XAConnection[5]>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              > < -tx:null- -poo
              > l:flexstudio.xa.ds- < XAConnection.getXAResource,
              > xaRes:EDBC-XAConnection[5]>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              > < -tx:null- -poo
              > l:flexstudio.xa.ds- >
              > XAResource.start(Xid:bea1-0002d221faab6f1049b9-666c6578737
              > 47564696f2e78612e6473, flags:TMNOFLAGS), xaRes:EDBC-XAConnection[5]>
              > <Mar 14, 2006 11:12:01 AM GMT+08:00> <Debug> <JDBC XA> <000000>
              > < -tx:null- -poo
              > l:flexstudio.xa.ds- < XA error: XAER_PROTO : Routine was invoked in an
              > inproper
              > context
              > javax.transaction.xa.XAException
              > at ca.edbc.jdbcx.EdbcXAConnect.start(EdbcXAConnect.java:349)
              > at web

  • When to use Global transaction and Local Transaction only

    Hi All,
    Could you please help with this question thats been troubling me from quite long time.
    When to create Global & local Transactions and Local Transaction Only while creating Data source on oracle Application Server 10 G.
    Do I get any advantages by using Global & local Transactions for creating Data Source
    Thanks In Advance.
    Regards,
    Ajay Kumar .Akula

    mattyG wrote:
    What is the difference between a single-process shared variable and a local variable?
    A single process shared variable is more like a global variable, because it can be accessed from any VI in your hierarchy. Local variables are strictly local to the single VI where they reside.
    Shared variables are a relatively new feature, while local and global variables are ancient. As such, shared variables are in many ways more modern and integrate better into state-of-the-art coding guidelines.
    Shared variables contain error terminals so you can enforce execution order. local variables have no such thing.
    A shared variable can stand on its own, while a local variable is always tied to a front panel object.
    You need a project for shared varaibles.
    You can easily turn a single process shared variable into a network shared variable later in the development, without the need to rewrite any code.
    LabVIEW Champion . Do more with less code and in less time .

  • Advise on using DBMS_XA with multiple branches under one global transaction

    Dear all
    I need some advise on using DBMS_XA from PL/SQL with tightly coupled multiple branches under one global transaction. Basically, I've successfully written some PL/SQL code that in 3 different sessions attaches to 3 different branches of one global transaction and before ending each branch they can see each others uncommitted data. So far so good.
    However, I'm not sure I completely understand how each branch must call xa_end, xa_prepare and xa_commit correctly using two phase commit and my calls result in errors like:
    ORA-24767: transaction branch prepare returns read-only (XA error code 3 = Transaction was read-only and has been committed)
    ORA-24756: transaction does not exist (XA error code -4 = XID is not valid)
    ORA-02051: another session or branch in same transaction failed or finalized
    This is the structure of my programs (3 SQL*Plus sessions):
    main: Uses xid 123|0 (branch 0 of global transaction 123). This should be the coordinator that commits using two phase commit across the 3 branches
    m1.xa_start tmnoflags
    m2.DML
    m3.Wait for thread A + B to manually be started and run xa_end
    m4.xa_end tmsuccess
    m5.xa_prepare
    m6.xa_commit false
    thread A: Uses xid 123|A (branch A of global transaction 123)
    a1.xa_start tmnoflags
    a2.DML -- thread A can see main and thread B's data
    a3.xa_end tmsuccess
    a4.xa_prepare -- required?
    a5.Should we also call xa_commit false?
    thread B: Uses xid 123|B (branch B of global transaction 123)
    b1.xa_start tmnoflags
    b2.DML -- thread B can see main and thread A's data
    b3.xa_end tmsuccess
    b4.xa_prepare -- required?
    b5.Should we also call xa_commit false?
    The failing steps are:
    m5
    m6
    a4
    a5
    b4
    b5
    Before starting calling xa_end I see 3 rows in V$GLOBAL_TRANSACTION, eg (hex 7B = decimal 123):
    FORMATID GLOBALID BRANCHID BRANCHES REFCOUNT PREPARECOUNT STATE FLAGS COUPLING
    203348753 0000007B 00000000000000000000000000000000 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    203348753 0000007B 0000000000000000000000000000000A 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    203348753 0000007B 0000000000000000000000000000000B 3 3 0 ACTIVE 0 TIGHTLY COUPLED
    Thanks a lot in advance.
    Cheers
    Finn

    OK, I've figured it out. This is poorly documented as it's not well explained how to handle the various return codes. Turns out that all but the last xa_prepare calls return dbms_xa.xa_rdonly (tightly coupled branches are combined -- "read only" optimization), the last one returns dbms_xa.xa_ok and this is when you should call xa_commit.
    Now my next problem is that DBMS_XA doesn't work from within jobs (DBMS_JOB and DBMS_SCHEDULER), which makes it very difficult to use DBMS_XA. My purpose of using DBMS_XA is to coordinate work across multiple sessions in one transaction but if I can't easily create the multiple sessions, I'm stuck.
    When called from a job, xa_start throws:
    ORA-24789: start not allowed in recursive call
    on Oracle 11.2. In Oracle 11.1 it works, but xa_end fails with
    ORA-25352: no current transaction
    so I guess in fact the xa_start call didn't really work either, even though it returned tm_ok.
    I'm now trying to find a workaround on how to use DBMS_XA from within jobs, please comment if you have any suggestions. Or if you have any suggestions on other means of establishing the concurrent sessions (I wouldn't like to resort to external programs that need username/password to connect as password management would be a security issue).
    Thanks in advance.
    Cheers
    Finn

Maybe you are looking for