Default EJB transaction timeout
Within the weblogic-ejb-jar.xml it is possible to set:
<transaction-descriptor>
<trans-timeout-seconds>120</trans-timeout-seconds>
</transaction-descriptor>
which tells the container the maximum period of time an EJB method is allowed to run. Is there some default value that is used if this is not set? Or does leaving this tag out of the XML file completely give the EJB methods infinite time to return?
"Ruben Ambrose" <[email protected]> wrote in message news:22852953.1100634354551.JavaMail.root@jserv5...
Within the weblogic-ejb-jar.xml it is possible to set:
<transaction-descriptor>
<trans-timeout-seconds>120</trans-timeout-seconds>
</transaction-descriptor>
which tells the container the maximum period of time an EJB method is allowed to run. Is there some default value that is used ifthis is not set? Or does leaving this tag out of the XML file completely give the EJB methods infinite time to return?
The default value is 30 seconds. This value can be changed via web ui console of by editing config.xml.
<JTA Name="myServer" TimeoutSeconds="60"/>
Also, even if the timeout is set in the DD, factual timeout is defined by initiator of the TX.
Slava
Similar Messages
-
JTA transaction timeout vs. EJB transaction timeout
Hi,
can anybody tell me if the JTA transaction timeout, e.g. <JTA
Name="myServer" TimeoutSeconds="60"/> works for EJBs as default transaction
timeout if none is given in the deployment descriptor.
I assumed that this is correct, and tried to test this by setting the
JTA-timeout value to 1 (second). However I experienced no timeout exceptions
in our logfile with this setting.
Regards
Andi
+49 69 263-87303, [email protected]Thanks, Rob
"Rob Woollen" <[email protected]> schrieb im Newsbeitrag
news:[email protected]..
This should work fine in 6.1 and 7.0. I believe it was broken in 6.0
-- Rob
Andreas Bittorf wrote:
Hi,
can anybody tell me if the JTA transaction timeout, e.g. <JTA
Name="myServer" TimeoutSeconds="60"/> works for EJBs as default
transaction
timeout if none is given in the deployment descriptor.
I assumed that this is correct, and tried to test this by setting the
JTA-timeout value to 1 (second). However I experienced no timeoutexceptions
in our logfile with this setting.
Regards
Andi
+49 69 263-87303, [email protected] -
Monitor EJB transaction timeout value
Hi,
I try to create a test case to monitor transaction timeout and rollback value
(not 0) from weblogic 6.1 console. By adding the timeout value to the weblogic-ejb-jar.xml
and rebuild the beanManaged example, I successfully create the scenario by seeing
the timeout and transaction rollback exception from the server. However, from
console the timeout value and rollback value of EJB monitoring still show "0"
not any number I expected. Any bug from Weblogic?
Thanks, CathyThe following configuration seems working:
version: OC4J (9.0.3.0.0) (build 020927.1699)
AM deployment:
- bc4j.xcfg: <jbo.ejb.txntimeout>30000</jbo.ejb.txntimeout>
- orion-ejb-jar.xml: <session-deployment name="..." timeout="0"/>
OC4J config:
- data-source: inactivity-timeout="30000"
This keeps connection open for more than default 30 mins of inactivity (30000 secs configured).
Although, oc4j console prints multiple warnings:
DriverManagerConnectionPoolConnection not closed, check your code!
Looks like this is not an intended usage - but working.
Notice that it was a test, not a production environment.
Also pls see 9033: AM as EJB Session bean: pooled connection lost for new txn
I would be thankful for any experience in running AM Session EJB w/o timeout. -
Hi,
we have set the following in bc4j.xcfg for our AppicationModule which is deployed as EJB with BMT:
<jbo.ejb.txntimeout>0</jbo.ejb.txntimeout>
With jbo.debugoutput=console we get the following lines
including "Transaction timeout set to 0 secs"
[298] Diagnostic Properties: Timing:false Functions:false Linecount:true Threshold:6
[299] Loading from /de/materna/heimabrechnung/common/logging/logging.xml file
[300] Loading from indvidual XML files
[301] Loading the Containees for the Package 'de.materna.heimabrechnung.common.logging.logging'.
[302] Loading from /de/materna/heimabrechnung/common/logging/LoggingModule.xml file
[303] Loading from /de/materna/heimabrechnung/common/logging/LogEintragView.xml file
[304] Loading from /de/materna/heimabrechnung/common/logging/LogEintrag.xml file
[305] Loading from /de/materna/heimabrechnung/common/logging/LogStacktraceView.xml file
[306] Loading from /de/materna/heimabrechnung/common/logging/LogStacktrace.xml file
[307] mUsePersColl is false
[308] ViewObjectImpl.mDefaultMaxRowsPerNode is 70
[309] ViewObjectImpl.mDefaultMaxActiveNodes is 30
[310] Transaction timeout set to 0 secs
[311] Created root application module: 'de.materna.heimabrechnung.common.logging.LoggingModule'
[312] Locale is: 'en'
[313] Transaction timeout set to 0 secs
[314] Trying connection: DataSource='com.evermind.sql.OrionCMTDataSource/heimabrechnung/jdbc/HeimabrechnungDS'...
[315] Successfully logged in
But after a while not using the ApplicationModule on the client the server throws the following exception:
java.lang.NullPointerException
at oracle.jbo.server.remote.ejb.EJBApplicationModuleImpl.resumeTransaction(EJBApplicationModuleImpl.java:635)
at de.materna.heimabrechnung.common.logging.server.ejb.beanmanaged.LoggingModuleServer.logDebug(LoggingModuleServer.java:6
0)
at RemoteLoggingModule_StatefulSessionBeanWrapper20.logDebug(RemoteLoggingModule_StatefulSessionBeanWrapper20.java:1383)
at java.lang.reflect.Method.invoke(Native Method)
at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:119)
at com.evermind.server.rmi.RMICallHandler.run(RMICallHandler.java:48)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:802)
at java.lang.Thread.run(Thread.java:484)
Any ideas ?
What we need are EJB's without any timeout!The following configuration seems working:
version: OC4J (9.0.3.0.0) (build 020927.1699)
AM deployment:
- bc4j.xcfg: <jbo.ejb.txntimeout>30000</jbo.ejb.txntimeout>
- orion-ejb-jar.xml: <session-deployment name="..." timeout="0"/>
OC4J config:
- data-source: inactivity-timeout="30000"
This keeps connection open for more than default 30 mins of inactivity (30000 secs configured).
Although, oc4j console prints multiple warnings:
DriverManagerConnectionPoolConnection not closed, check your code!
Looks like this is not an intended usage - but working.
Notice that it was a test, not a production environment.
Also pls see 9033: AM as EJB Session bean: pooled connection lost for new txn
I would be thankful for any experience in running AM Session EJB w/o timeout. -
EJB Transaction-Timeout Effects
Hi,
We have a long running process, well, longer than the 60 seconds of the default transaction time-out set in the server.xml. I was going to lengthen it but thought I better ask as changing it to a larger amount of time might cause some effects that are undesired.
So a couple of question:
1) Why was it defaulted to 60 seconds, is there something unique about 60 seconds or is just a number to start with.
2) What are the effects of making it larger (e.g. degraded performance, memory usage, connection pool?
3) How does the transaction-timeout property affect the JDBC connection(s) that are contained within the scope of the transaction?
4) Does the transaction timeout affect the time sql queries can take? Or is that the inactivity-timeout?
I greatly appreciate any feedback I can get.
Thanks,
DonovanThe following configuration seems working:
version: OC4J (9.0.3.0.0) (build 020927.1699)
AM deployment:
- bc4j.xcfg: <jbo.ejb.txntimeout>30000</jbo.ejb.txntimeout>
- orion-ejb-jar.xml: <session-deployment name="..." timeout="0"/>
OC4J config:
- data-source: inactivity-timeout="30000"
This keeps connection open for more than default 30 mins of inactivity (30000 secs configured).
Although, oc4j console prints multiple warnings:
DriverManagerConnectionPoolConnection not closed, check your code!
Looks like this is not an intended usage - but working.
Notice that it was a test, not a production environment.
Also pls see 9033: AM as EJB Session bean: pooled connection lost for new txn
I would be thankful for any experience in running AM Session EJB w/o timeout. -
EJB Transaction timeout and Statement Query Timeout
I am looking for some details on how statement query timeout is set when statement execution is part of the session bean transaction. I have done some test in webshere 6.1. and JBoss 5.0 and not getting the desired behavior. My understanding is following
- DB is Oracle 11g
- EJB transaction is set to 5 mins.
- Query time out setting is set to default vaule (not sure what is the default value)
- Session bean is updating say customer record using PreparedStatement
- Prior to calling session bean method I am locking the customer record using external/db tool and holding the lock.
- Call session bean method. Method waits endlessly for the lock to be acquired. No transaction rollback after 5 mins.
- After 10 minutes commit the transaction in the external db tool
- Session bean methods throws transaction rollback.
My understanding was that query timeout is set based on transaction "time to live". Please share out thoughts.
Edited by: hdjava on Jun 18, 2010 1:06 PM
Edited by: hdjava on Jun 18, 2010 1:07 PMThe following configuration seems working:
version: OC4J (9.0.3.0.0) (build 020927.1699)
AM deployment:
- bc4j.xcfg: <jbo.ejb.txntimeout>30000</jbo.ejb.txntimeout>
- orion-ejb-jar.xml: <session-deployment name="..." timeout="0"/>
OC4J config:
- data-source: inactivity-timeout="30000"
This keeps connection open for more than default 30 mins of inactivity (30000 secs configured).
Although, oc4j console prints multiple warnings:
DriverManagerConnectionPoolConnection not closed, check your code!
Looks like this is not an intended usage - but working.
Notice that it was a test, not a production environment.
Also pls see 9033: AM as EJB Session bean: pooled connection lost for new txn
I would be thankful for any experience in running AM Session EJB w/o timeout. -
Impost a EJB transaction timeout
Hello...
I have a problem....I need to impost a transaction timeout on a stateless ejb
call
without generate the transaction but only with a new Context and the successive
lookup.
This for return the ejb called in case witch this then called another another
remote ejb but this not give response......so that I can make finish the transaction
first that the second ejb goes in timeout...
Is this possible with the stateless ejb also setting some weblogic parameter?
I work with an J2EE 2.0 application under WLS6.1 SP5 .
thanks.
This isn't really possible. If your second bean throws an exception if it doesn't
respond then you can always catch this and call setRollbackOnly() (or let the
container do this for you); if however the second bean doesn't respond and blocks
for a long time, then the transaction timeout won't help. WebLogic implements
the transaction timeout on another thread so it can keep good time, but can only
signal your bean when it tries to do something transactional - and if it's blocked
in another method this might not happen.
simon.
"rion" <[email protected]> wrote:
>
>Hello...
>I have a problem....I need to impost a transaction timeout on a stateless
>ejb
>call
>without generate the transaction but only with a new Context and the
>successive
>lookup.
>This for return the ejb called in case witch this then called another
>another
>remote ejb but this not give response......so that I can make finish
>the transaction
>first that the second ejb goes in timeout...
>Is this possible with the stateless ejb also setting some weblogic parameter?
>I work with an J2EE 2.0 application under WLS6.1 SP5 .
>thanks.
>
-
I've got the following in my orion-ejb-jar.xml:
<session-deployment name="..." transaction-timeout="900"/>
OC4J appears to ignore it. For one, I get transaction timeouts with operations lasting less than 900 seconds. For two, I see in the EM MBean browser that the transaction timeout for the stateless session bean has a value of "-1".
Am I doing something wrong, or is OC4J broken?Anybody out there?
I'm sure I can't be the only one trying to do this... -
We have a weblogic cluster, we keep getting messages in the logs saying "Transaction timed out after 60 seconds". We have also noticed that if we shutdown one of the servers in the cluster then we do not get these messages in the logs.What could be the reason for this?
Please advise.
AnilSorry for the delay:
Here is the stack trace
Error marking transaction for rollback: java.lang.IllegalStateException: Cannot mark the transaction for rollback. xid=23645:9de7ceb8422f21aa, status=Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 60 seconds Name=[EJB com.nextjet.enterprise.timing.timingmanager.TimingManagerBean.actionFired(flux.RemoteKeyFlowContext)],Xid=23645:9de7ceb8422f21aa(148367394),Status=Active,numRepliesOwedMe=1,numRepliesOwedOthers=0,seconds since begin=60,seconds left=60,activeThread=Thread[RUNNER: 33273648,5,main],ServerResourceInfo[weblogic.jdbc.jts.Connection]=(state=ended,assigned=none,xar=weblogic.jdbc.jts.Connection@8d7ea8e),SCInfo[exms+enterprise1]=(state=active),SCInfo[exms+routing2]=(state=active),properties=({ISOLATION LEVEL=2, weblogic.transaction.name=[EJB com.nextjet.enterprise.timing.timingmanager.TimingManagerBean.actionFired(flux.RemoteKeyFlowContext)], weblogic.jdbc=t3://myserver.domain.com:3337}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=enterprise1+myserver.domain.com:3337+exms+t3+, Resources={})],CoordinatorURL=enterprise1+myserver.domain.com:3337+exms+t3+)]
Server name: enterprise1
Time: 07:05:00
Date: 07/30/2004 -
Changing default transaction timeout for 5.1
Hi
Does someone know a way to change the default ejb transaction timeout for
WL5.1?
The default is 300 secs, which is a bit too long for me.
I know I can change it in each deployment descriptor but it would be easier
and quicker if I could just change the default :-)
Thanks
Nicolas
There is another way but I think it's more complicated.
After reading the file you can use a java code (java embedded activity) and split the file.
For each part of the split you can PUT by FTP the file with append mode. That way your transaction will run in few cycles with less time. -
Hello,
Does anybody knows what the behavior should be for a Session EJB with BMT (using JTA) after a transaction timeout? Does the container performs a database rollback for you immediately after the time-out event? I’ve noticed that JBoss does not perform a rollback but Web does. What do the J2EE specs say what should happen?
We are experiencing database locks in an Oracle database caused by ‘hanging’ JTA-transactions which aren’t removed after a timeout. An application server restart will remove them. We are trying to find the cause, there fore I’am posting this message.
Regards,
Marteyn Heijlaerts"Laurel Neustadter" <[email protected]> wrote:
>
>Hi:
>
>The WLS 6.0 documentation states that for a CMT bean, one specifies the
>transaction
>timeout in weblogic-ejb-jar.xml, and for a BMT bean, one specifies the
>transaction
>timeout via UserTransaction.setTransactionTimeout().
>
>You also set a transaction timeout attribute at the domain level. How
>does the
>domain level attribute work into all of this? How is it used?
>
>For example, if a transaction timeout value is not specified at the bean
>level,
>will the domain level value be used?
>
>Laurel
Yes, the domain level timeout is the default.
It is overridden by any setting at the EJB level. This in turn
can be overridden by the client calling the EJB, if the client
starts a transaction and uses
transactionManager.setTransactionTimeout()
-
Problem with transacted JMS connection factory and transaction timeouts
We encountered an interesting problem using transacted JMS connection factories.
An EJB starts a container managed transaction and tries to validate a credit card
before creating some information to a database for the user, in case of success
an SMS is sent to the user via the transacted JMS queue. If the credit card authentications
duration is about the same as the transactions timeout (in this case the default
30 seconds) sometimes the database inserts is committed but the JMS insert is
rollbacked. How can this be?
If the authorization duration is much longer than 30 seconds everything works
fine (both database and JMS inserts rollbacked), the same is true if a rollback
is insured by calling EJBContext.setRollbackOnly(). The problem thus occurs only
if the duration is approximately the same as the transaction timeout, it appears
that the database insert is not timeouted but the JMS insert is. How can this
be if they are both participating in the same transaction.
The JMSConnectionFactory used is a Connection factory with XA-enabled. The result
is the same also with the default "javax.jms.QueueConnectionFactory" and if we
configure our own factory with user transactions enabled.
Any help appreciated!
Tomas Granö wrote:
> We encountered an interesting problem using transacted JMS connection factories.
> An EJB starts a container managed transaction and tries to validate a credit card
> before creating some information to a database for the user, in case of success
> an SMS is sent to the user via the transacted JMS queue. If the credit card authentications
> duration is about the same as the transactions timeout (in this case the default
> 30 seconds) sometimes the database inserts is committed but the JMS insert is
> rollbacked. How can this be?
It should not be.
>
> If the authorization duration is much longer than 30 seconds everything works
> fine (both database and JMS inserts rollbacked), the same is true if a rollback
> is insured by calling EJBContext.setRollbackOnly(). The problem thus occurs only
> if the duration is approximately the same as the transaction timeout, it appears
> that the database insert is not timeouted but the JMS insert is. How can this
> be if they are both participating in the same transaction.
>
> The JMSConnectionFactory used is a Connection factory with XA-enabled. The result
> is the same also with the default "javax.jms.QueueConnectionFactory" and if we
> configure our own factory with user transactions enabled.
>
> Any help appreciated!
Make sure that your session is not "transacted". In other words,
the first parameter to createSession() must be false. There is an
unfortunate name re-use here. If a session is "transacted", it
maintains an independent "inner transaction" independent of the
outer transaction. From the above description, it seems unlikely
that your application has this wrong, as you say that
"setRollbackOnly" works - but please check anyway.
Make sure that you are using a true XA capable driver and database
(XA "emulation" may not suffice)
Beyond the above, I do not see what can be going wrong. You
may want to try posting to the transactions and jdbc newsgroups. Note
that JMS is appears to be exhibiting the correct behavior, but the
JDBC operation is not. The JDBC operation appears to have
its timeout independent of the transaction monitor's timeout.
Tom
-
Transaction timeouts of 242 seconds
Hi All,
I am getting transaction timeouts of 242 seconds. Can somebody help me where
is this timeout value configured and how change it?
Here We are Using Weblogic 8.1
Stateless Session Bean, DAO, Servlets and JSPs
The log file says as
<DEBUG>SQLException: The transaction is no longer active - status: 'Marked rollback.
[Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out
after 242 secon
ds
Name=[EJB com.hartfordlife.gbd.pvev.ejb.participantadmin.ParticipantAdministrationEJB.getPADownloadCaseCoverage(java.util.ArrayList,java.lang.String,java.lang.String)],Xid=BEA1-003
0E44EFCA87F28EDB9(14529255),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds
since begin=242,seconds left=60,activeThread=Thread[ExecuteThread: '9' for queue:
'weblo
gic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTS
XAResourceImpl]=(state=started,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@10c624a),SCInfo[mydomain+myserver]=(state=active),properties=({weblogic.transaction.name=[
EJB com.hartfordlife.gbd.pvev.ejb.participantadmin.ParticipantAdministrationEJB.getPADownloadCaseCoverage(java.util.ArrayList,java.lang.String,java.lang.String)],
weblogic.jdbc=t3:
//157.209.165.64:7001}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=myserver+157.209.165.64:7001+mydomain+t3+,
XAResources={},NonXAResources={})],C
oordinatorURL=myserver+157.209.165.64:7001+mydomain+t3+)]'. No further JDBC access
is allowed within this transaction.
<DEBUG>SQLErrorCode: 0
<DEBUG>SQLState: null
java.sql.SQLException: The transaction is no longer active - status: 'Marked rollback.
[Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out
after 242 seconds
Thanks in Advance
Sai
Unfortunately, it seems to work different in JBoss7. I created a very simple app and it waits until end of query execution instead of interrupting it.
I'm porting application from weblogic to JBoss7 and it is critical for me to achieve identical behavior. -
We are attempting to process a transform on a medium sized xml doc (~4.5 MB). For the test case we are simply reading the the doc using the FileAdapter, performing a transformation, and then writing the result to a file using the FileAdapter once again. The flow works fine for smallish files (under ~4MB), however, when dropping a file greater than that size the flow fails once finished while writing entries to the BPEL audit log with a TransactionTimedOutException (see exception below).
I understand what is happening and why (it certainly takes longer than 2 mins to process the file). I have also done quite a bit of digging around for references to this issue and found several posts regarding bumping the transaction timeout value when running the OC4J container. My problem is that we are not running the OC4J container. I know how to manage the default transaction timeout value for WebLogic but it appears that the BPEL application doesn't seem to be honoring the default transaction timeout on the WL Server. I have come to this conclusion for two reasons: first, the default transaction timeout on the WL Server (before modification) is 30 seconds, not the 120 seconds that this transaction is timing out on. second, changing the transaction timeout value on the WebLogic server has no impact on this issue what so ever. I can set the transaction timeout to any value I like, the process ALWAYS times out after 120 seconds.
Is there another setting on the BPEL server that I may have missed that is overriding the default timeout, i.e. is it possible that when the BPEL server process is starting the transaction it is setting the timeout on the TransactionManager in code prior to starting the transaction?
Any pointers are greatly appreciated.
------------- START STACK TRACE ------------------
<2007-03-15 13:50:24,625> <ERROR> <default.collaxa.cube> <BaseCubeSessionBean::logError> Error while invoking bean "cube delivery": Cannot insert audit trail.
The process domain was unable to insert the current log entries for the instance "10601" to the audit trail table. The exception reported is: The transaction is no longer active - status: 'Rolled back. [Reason=weblogic.transaction.internal.TimedOutException: Transaction timed out after 120 seconds
Name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)],Xid=BEA1-0021B65431A170F9CFEF(31469464),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=120,seconds left=60,activeThread=Thread[ExecuteThread: '9' for queue: 'default',5,Thread Group for Queue: 'default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@154d033,re-Registered = false),SCInfo[f58_integration+orabpelServer]=(state=active),properties=({weblogic.transaction.name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)], weblogic.jdbc=t3://127.0.0.1:9700}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+, XAResources={},NonXAResources={})],CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+)]'. No further JDBC access is allowed within this transaction.
Please check that the machine hosting the datasource is physically connected to the network. Otherwise, check that the datasource connection parameters (user/password) is currently valid.
sql statement: INSERT INTO audit_trail( cikey, domain_ref, count_id, block, block_csize, block_usize, log ) VALUES( ?, ?, ?, ?, ?, ?, ? )
<2007-03-15 13:50:24,643> <ERROR> <default.collaxa.cube.engine.dispatch> <BaseScheduledWorker::process> Failed to handle dispatch message ... exception ORABPEL-05002
Message handle error.
An exception occurred while attempting to process the message "com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessage"; the exception is: Transaction Rolledback.: weblogic.transaction.internal.TimedOutException: Transaction timed out after 120 seconds
Name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)],Xid=BEA1-0021B65431A170F9CFEF(31469464),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=120,seconds left=60,activeThread=Thread[ExecuteThread: '9' for queue: 'default',5,Thread Group for Queue: 'default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@154d033,re-Registered = false),SCInfo[f58_integration+orabpelServer]=(state=active),properties=({weblogic.transaction.name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)], weblogic.jdbc=t3://127.0.0.1:9700}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+, XAResources={},NonXAResources={})],CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+)
at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(ServerTransactionImpl.java:1614)
at weblogic.transaction.internal.ServerTransactionManagerImpl.processTimedOutTransactions(ServerTransactionManagerImpl.java:1117)
at weblogic.transaction.internal.TransactionManagerImpl.wakeUp(TransactionManagerImpl.java:1881)
at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp(ServerTransactionManagerImpl.java:1034)
at weblogic.transaction.internal.WLSTimer.trigger(WLSTimer.java:31)
at weblogic.time.common.internal.ScheduledTrigger.run(ScheduledTrigger.java:243)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:229)
at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:223)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:219)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:178)
; nested exception is: weblogic.transaction.internal.TimedOutException: Transaction timed out after 120 seconds
Name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)],Xid=BEA1-0021B65431A170F9CFEF(31469464),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=120,seconds left=60,activeThread=Thread[ExecuteThread: '9' for queue: 'default',5,Thread Group for Queue: 'default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@154d033,re-Registered = false),SCInfo[f58_integration+orabpelServer]=(state=active),properties=({weblogic.transaction.name=[EJB com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(java.lang.String,com.oracle.bpel.client.auth.DomainAuth)], weblogic.jdbc=t3://127.0.0.1:9700}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+, XAResources={},NonXAResources={})],CoordinatorURL=orabpelServer+127.0.0.1:9700+f58_integration+t3+)
------------- END STACK TRACE ------------------Hi
i am facing a similar problem..did u find the solution for this problem?
Please pass the solution/workaround u performed for solving this...
Thanks & Regards
Subramanian -
Redelivery limit not working for transaction timeout?
hi,
we have a redelivery limit on a queue that works, except for when there is a transaction timeout. in this case, the message seems to be redelivered infinitely. Is this a bug? a feature?
we are using Weblogic Server 8.1 SP4. we don't have the source code, so i am not sure how the error handling is done or what exceptions are thrown.
------------------ejb-jar.xml------------
<message-driven>
<ejb-name>ImporFileReceiver</ejb-name>
<ejb-class>au.com.auspost.pcms.common.integration.ejb.mdb.ImporFileReceiverMdb</ejb-class>
<transaction-type>Container</transaction-type>
<acknowledge-mode>Auto-acknowledge</acknowledge-mode>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
<subscription-durability>NonDurable</subscription-durability>
</message-driven-destination>
</message-driven>
<container-transaction>
<method>
<ejb-name>ImporFileReceiver</ejb-name>
<method-intf>Local</method-intf>
<method-name>onMessage</method-name>
<method-params>
<method-param>javax.jms.Message</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
<container-transaction>
<method>
<ejb-name>ImporFileReceiver</ejb-name>
<method-intf>Remote</method-intf>
<method-name>onMessage</method-name>
<method-params>
<method-param>javax.jms.Message</method-param>
</method-params>
</method>
<trans-attribute>NotSupported</trans-attribute>
</container-transaction>
------------------------ weblogic-ejb-jar.xml ---------
<weblogic-enterprise-bean>
<ejb-name>ImporFileReceiver</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>10</max-beans-in-free-pool>
<initial-beans-in-free-pool>10</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>jms/pcmsImportFileQueue</destination-jndi-name>
<connection-factory-jndi-name>jms/pcmsConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>3600</trans-timeout-seconds>
</transaction-descriptor>
<reference-descriptor>
</reference-descriptor>
<dispatch-policy>pcms.execute.queue.mdb.internal</dispatch-policy>
<remote-client-timeout>0</remote-client-timeout>
</weblogic-enterprise-bean>
------------------------ config.xml -----------------
<JMSServer Name="eParcel JMS server"
Store="eParcel JMS Server File Store" Targets="wls_pcms_prod1">
<JMSQueue CreationTime="1190981682976"
ErrorDestination="PCMS Import File Error Queue"
JNDIName="jms/pcmsImportFileQueue"
Name="PCMS Import File Queue" RedeliveryLimit="2"/>
<JMSQueue CreationTime="1208347415759"
JNDIName="jms/pcmsImportFileErrorQueue" Name="PCMS Import File Error Queue"/>
</JMSServer>
<JMSConnectionFactory JNDIName="jms/pcmsConnectionFactory"
Name="eParcel JMS Connection Factory" Targets="wlc_pcms_prod"/>
<JMSConnectionFactory JNDIName="jms/pcmsXAConnectionFactory"
Name="eParcel JMS XA Connection Factory" Targets="wlc_pcms_prod" XAConnectionFactoryEnabled="true"/>
-------------- weblogic log ---------------
####<24/04/2008 01:53:58 PM EST> <Warning> <EJB> <HX415> <wls_pcms_prod1> <ExecuteThread: '12' for queue: 'weblogic.kernel.Default'> <project_admin> <> <BEA-010065> <MessageDrivenBean threw an Exception in onMessage(). The exception was:
javax.ejb.EJBException: Transaction Rolledback.: weblogic.transaction.internal.TimedOutException: Transaction timed out after 3599 seconds
Name=[EJB au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerBean.handleMessage(org.apache.xmlbeans.XmlObject)],Xid=BEA1-696C9947A48195BA18DC(68926234),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=3599,seconds left=60,activeThread=Thread[ExecuteThread: '12' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@447373e,re-Registered = false),SCInfo[wlsd_auspost_prod+wls_pcms_prod1]=(state=active),properties=({weblogic.transaction.name=[EJB au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerBean.handleMessage(org.apache.xmlbeans.XmlObject)], weblogic.jdbc=t3://10.3.2.35:7003}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=wls_pcms_prod1+10.3.2.35:7003+wlsd_auspost_prod+t3+, XAResources={JMS_eParcel JMS Server File Store, weblogic, wlsd_auspost_prod, com},NonXAResources={})],CoordinatorURL=wls_pcms_prod1+10.3.2.35:7003+wlsd_auspost_prod+t3+)
at weblogic.transaction.internal.ServerTransactionImpl.wakeUp(I)V(ServerTransactionImpl.java:1614)
at weblogic.transaction.internal.ServerTransactionManagerImpl.processTimedOutTransactions(Ljava/util/List;I)V(ServerTransactionManagerImpl.java:1117)
at weblogic.transaction.internal.TransactionManagerImpl.wakeUp()V(TransactionManagerImpl.java:1881)
at weblogic.transaction.internal.ServerTransactionManagerImpl.wakeUp()V(ServerTransactionManagerImpl.java:1034)
at weblogic.transaction.internal.WLSTimer.trigger(Lweblogic/time/common/Schedulable;)V(WLSTimer.java:31)
at weblogic.time.common.internal.ScheduledTrigger.run()Ljava/lang/Object;(Optimized Method)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(Optimized Method)
at weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;(SecurityManager.java:121)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally()V(ScheduledTrigger.java:229)
at weblogic.time.common.internal.ScheduledTrigger.execute(Lweblogic/kernel/ExecuteThread;)V(ScheduledTrigger.java:223)
at weblogic.kernel.ExecuteThread.execute(Lweblogic/kernel/ExecuteRequest;)V(Optimized Method)
at weblogic.kernel.ExecuteThread.run()V(ExecuteThread.java:178)
at java.lang.Thread.startThreadFromVM(Ljava/lang/Thread;)V(Unknown Source)
; nested exception is: weblogic.transaction.internal.TimedOutException: Transaction timed out after 3599 seconds
Name=[EJB au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerBean.handleMessage(org.apache.xmlbeans.XmlObject)],Xid=BEA1-696C9947A48195BA18DC(68926234),Status=Active,numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=3599,seconds left=60,activeThread=Thread[ExecuteThread: '12' for queue: 'weblogic.kernel.Default',5,Thread Group for Queue: 'weblogic.kernel.Default'],XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=ended,assigned=none),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@447373e,re-Registered = false),SCInfo[wlsd_auspost_prod+wls_pcms_prod1]=(state=active),properties=({weblogic.transaction.name=[EJB au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerBean.handleMessage(org.apache.xmlbeans.XmlObject)], weblogic.jdbc=t3://10.3.2.35:7003}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=wls_pcms_prod1+10.3.2.35:7003+wlsd_auspost_prod+t3+, XAResources={JMS_eParcel JMS Server File Store, weblogic, wlsd_auspost_prod, com},NonXAResources={})],CoordinatorURL=wls_pcms_prod1+10.3.2.35:7003+wlsd_auspost_prod+t3+).Thanks Tom,
Good point. The timeout exception is on ImportFileHandlerBean.handleMessage()....which is a session bean. The MDB must call this session bean, which also has a 3600 second timeout. It is confusing since the descriptor for the MDB has the transaction-timeout set, but i assume this is ignored for 'not-supported').
I guess you would need to look at the code, but is there anyway a message go back on the queue, and not get the redelivery incremented?
(I just had an evil thought...maybe the code could be physically sending the message onto the queue again when there is a timeout on the session bean.....hence would not get the redelivery incremented.....)
-------------- ejb-jar.xml ----------------
<session>
<ejb-name>ImportFileHandler</ejb-name>
<local-home>au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerLocalHome</local-home>
<local>au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerLocal</local>
<ejb-class>au.com.auspost.pcms.common.integration.ejb.ImportFileHandlerBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
----------- weblogic-ejb.jar.xml -----------
<weblogic-enterprise-bean>
<ejb-name>ImportFileHandler</ejb-name>
<stateless-session-descriptor>
</stateless-session-descriptor>
<transaction-descriptor>
<trans-timeout-seconds>3600</trans-timeout-seconds>
</transaction-descriptor>
<reference-descriptor>
</reference-descriptor>
<enable-call-by-reference>True</enable-call-by-reference>
<local-jndi-name>ejb/ImportFileHandlerLocal</local-jndi-name>
<remote-client-timeout>0</remote-client-timeout>
</weblogic-enterprise-bean>
Maybe you are looking for
-
HELP! I'm hoping someone can help with my iMac 27" purchased in 2010. From a previous discussion I started a year ago, I have had virtually nothing but trouble with it. After the internal hard drive crashing, I was able to install OS X on an extern
-
Audio and video out of synchronization in iTune for Windows 8.1
When playing back a downloaded iTunes file, the audio and video are out of synchronization a lot of the time. The audio can be several seconds behind the video. How can this be corrected/fixed? I am running the latest iTunes software on a 3.8Ghz AMD
-
Changes in short text in Purchase Requisition and Purchase Order
Dear experts, Can you help me with the following issue: During creation of Purchase Requisition and Purchase Order with Account assignment category K-Cost center the field Short text to allow input of data in it. In all other cases During creation of
-
View or Package, logic problem which is better
I'm new to Oracle so I'm trying desperately to take what I know from other systems and apply it here and I'm hitting a stumbling block. I have a very complex view that I will spare you the details to, but what it amounts to is: create or replace view
-
ICommand FixedQueryWithOutput Oracle PL/SQL Stored Procedure
Assume a stored procedure, delivered in a package.... user.package.storedproc( input-parameter, input-output cursor ) If a "FixedQueryWithOutput" is used to run this procedure..... user.package.storedproc( '[Param.1]', ? ) The procedure ru