1 2 Previous Next 15 Replies Latest reply on Mar 12, 2010 4:04 AM by tfrastia

    JDBCCacheLoader with Oracle 10g problem

    niuxuetao_fiserv

      Hi,

      I am using JBossPojo Cache 3.0.0.GA and evicting cache to oracle 10g using JDBCCacheLoader shipped with JBoss. But when I run it with 1 thread, I always see such exception:

      Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
      
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
       at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
       at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
       at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
       at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
       at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
       at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368)
       at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
       at org.jboss.cache.loader.AdjListJDBCCacheLoader.insertNode(AdjListJDBCCacheLoader.java:501)
       ... 69 more
      [2009-06-26 18:23:55,046] [Detection1] WARN PojoCacheImpl - Could not end transaction for operation on: /RTDE/pattern-matching-threshold/663330655
      javax.transaction.RollbackException: outcome is false status: 1
       at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:98)
       at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:99)
       at org.jboss.cache.pojo.impl.PojoCacheImpl.endTransaction(PojoCacheImpl.java:152)
       at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:116)
       at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:93)
       at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:88)
      ...
      


      If I run it with multiple threads, I get this exception, which looks like jboss is trying to recreate the same table for twice:
      
      Caused by: org.jboss.cache.pojo.PojoCacheException: init org.jboss.cache.config.Configuration@777dc9f6 failed
       at org.jboss.cache.pojo.impl.PojoCacheImpl.<init>(PojoCacheImpl.java:75)
       at org.jboss.cache.pojo.PojoCacheFactory.createCache(PojoCacheFactory.java:54)
       at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorage.<init>(JBossPojoCacheStorage.java:26)
       at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorageFactory.getCacheStorage(JBossPojoCacheStorageFactory.java:100)
       at com.fiserv.detection.eventcache.statemachine.CacheAccessorFactory.createAccessor(CacheAccessorFactory.java:38)
       at com.fiserv.detection.eventcache.api.EventCacheService.createCacheAccessor(EventCacheService.java:62)
       at com.fiserv.detection.patternmatching.PatternMatching.init(PatternMatching.java:100)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
       at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
       ... 41 more
      Caused by: org.jboss.cache.CacheException: java.lang.reflect.InvocationTargetException
       at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:148)
       at org.jboss.cache.factories.ComponentRegistry$PrioritizedMethod.invoke(ComponentRegistry.java:970)
       at org.jboss.cache.factories.ComponentRegistry.internalStart(ComponentRegistry.java:746)
       at org.jboss.cache.factories.ComponentRegistry.start(ComponentRegistry.java:610)
       at org.jboss.cache.invocation.CacheInvocationDelegate.start(CacheInvocationDelegate.java:355)
       at org.jboss.cache.DefaultCacheFactory.createCache(DefaultCacheFactory.java:121)
       at org.jboss.cache.pojo.impl.PojoCacheImpl.<init>(PojoCacheImpl.java:71)
       ... 54 more
      Caused by: java.lang.reflect.InvocationTargetException
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:585)
       at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:144)
       ... 60 more
      Caused by: org.jboss.cache.CacheException: Unable to start cache loaders
       at org.jboss.cache.loader.CacheLoaderManager.startCacheLoader(CacheLoaderManager.java:467)
       ... 65 more
      Caused by: java.sql.SQLException: ORA-00955: name is already used by an existing object
      
       at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
       at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
       at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
       at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
       at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
       at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
       at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
       at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
       at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.execute(NewProxyPreparedStatement.java:989)
       at org.jboss.cache.loader.AdjListJDBCCacheLoader.createDummyTableIfNeeded(AdjListJDBCCacheLoader.java:296)
       at org.jboss.cache.loader.AdjListJDBCCacheLoader.start(AdjListJDBCCacheLoader.java:269)
       at org.jboss.cache.loader.JDBCCacheLoader.start(JDBCCacheLoader.java:376)
       at org.jboss.cache.loader.CacheLoaderManager.startCacheLoader(CacheLoaderManager.java:461)
       ... 65 more
      


      My jboss cache configuration file is as below:

      <?xml version="1.0" encoding="UTF-8"?>
      <jbosscache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="urn:jboss:jbosscache-core:config:3.0">
      
       <locking isolationLevel="READ_COMMITTED"
       lockParentForChildInsertRemove="false" lockAcquisitionTimeout="4294967"
       nodeLockingScheme="mvcc" writeSkewCheck="false" concurrencyLevel="500" />
      
       <transaction
       transactionManagerLookupClass="org.jboss.cache.transaction.GenericTransactionManagerLookup"
       syncRollbackPhase="false" syncCommitPhase="false" />
      
       <jmxStatistics enabled="false" />
      
       <startup regionsInactiveOnStartup="true" />
      
       <shutdown hookBehavior="DEFAULT" />
      
       <listeners asyncPoolSize="1" asyncQueueSize="100000" />
      
       <invocationBatching enabled="false" />
      
       <eviction wakeUpInterval="5000">
      
       <!-- Cache wide default -->
       <region name="/_default_" algorithmClass="org.jboss.cache.eviction.LRUAlgorithm">
      
       <property name="maxNodes">100000</property>
       <property name="timeToLiveSeconds">300</property>
       </region>
       </eviction>
      
       <loaders passivation="false" shared="true">
      
       <preload>
       <node fqn="/" />
       </preload>
      
      
       <loader class="org.jboss.cache.loader.JDBCCacheLoader" async="false"
       fetchPersistentState="false" ignoreModifications="false"
       purgeOnStartup="false">
      
       <properties>
      
       cache.jdbc.table.name=Cached_Events
       cache.jdbc.table.create=true
       cache.jdbc.table.drop=false
       cache.jdbc.table.primarykey=jbosscache_pk
       cache.jdbc.fqn.column=fqn
       cache.jdbc.fqn.type=varchar2(255)
       cache.jdbc.node.column=node
       cache.jdbc.node.type=blob
       cache.jdbc.parent.column=parent
      
       cache.jdbc.sql-concat=concat(1,2)
      
       cache.jdbc.connection.factory=org.jboss.cache.loader.C3p0ConnectionFactory
       c3p0.maxPoolSize=20
       c3p0.checkoutTimeout=5000
      
       location=tmp/jbosscache
       </properties>
      
       </loader>
      
      
       </loaders>
      
      </jbosscache>
      
      


      I didn't manually create the table in Oracle at all. Has anyone encountered this before?

      Regards,

      Xuetao

        • 1. Re: JDBCCacheLoader with Oracle 10g problem
          mircea.markus

          Can you please take a look at the created table in Oracle and post its structure/DDL (IIRC you can use DESC <table_name> for that).

          • 2. Re: JDBCCacheLoader with Oracle 10g problem
            niuxuetao_fiserv

            Thanks Mircea,

            Here is the table description:

            DESC cached_events
            Name Null Type
            ------------------------------ -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            FQN NOT NULL VARCHAR2(255)
            NODE BLOB()
            PARENT VARCHAR2(255)
            
            3 rows selected
            


            And there is another table automatically created, called 'cached_events_d' which is not described in the jboss doc as far as I can find. And if I change the cache table's name to something else, say XXX, the automatically created table will be named as XXX_Y where Y looks a random character.

            Do you know what this is for?

            The description of this table is as below:
            DESC cached_events_d
            Name Null Type
            ------------------------------ -------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
            I CHAR(1)
            
            1 rows selected
            


            • 3. Re: JDBCCacheLoader with Oracle 10g problem
              mircea.markus

              The table looks okay.
              Can you please take a look(post) in the logs for the debug statement right before the failure. Should look like this: "executing sql: INSERT INTO...". Also try execute that from the console, perhaps we can narrow down the problem this way.

              And there is another table automatically created, called 'cached_events_d' which is not described in the jboss doc as far as I can find. And if I change the cache table's name to something else, say XXX, the automatically created table will be named as XXX_Y where Y looks a random character.

              JBossCache does not generate such a table, most likely it is generated by RDBMS

              • 4. Re: JDBCCacheLoader with Oracle 10g problem
                niuxuetao_fiserv

                Hi Mircea,

                Thanks for the hints, I looked at the debug log, the sql statement being logged right before the exception is not a "INSERT INTO, but a select":

                
                DEBUG JDBCCacheLoader - executing sql: select fqn from Cached_Events where parent=? (/)
                
                


                I tries to execute the statement: select fqn from Cached_Events where parent='/', it finds something in the table.

                The 1st insert into statement is logged far after the exception is logged. This is the log msg for it, and it is surprisingly involving the automatically created table 'cached_events_d':
                DEBUG JDBCCacheLoader - executing sql: INSERT INTO Cached_Events (fqn, node, parent) SELECT ?, ?, ? FROM Cached_Events_D WHERE NOT EXISTS (SELECT fqn FROM Cached_Events WHERE fqn = ?) (/RTDE/time-distance-analysis-gps/0)
                


                I don't know how to execute this in the console (Oracle SQL Developer)

                Any idea?

                Xuetao

                • 5. Re: JDBCCacheLoader with Oracle 10g problem
                  niuxuetao_fiserv

                  Btw, I was testing with 5 threads when seeing the DEBUG logs above.

                  I also tested with 1 thread, bug with DEBUG level on "org.jboss", I cannot recreate any exceptions. However, with WARN debug level for "org.jboss" I still can reproduce it as described on my original post. Weird...

                  Xuetao

                  • 6. Re: JDBCCacheLoader with Oracle 10g problem
                    niuxuetao_fiserv

                    No, sorry, I managed to reproduce the problem with one thread on DEBUG level. Here is the log:

                    [2009-07-01 16:11:48,367] [Detection1] DEBUG JDBCCacheLoader - executing sql: INSERT INTO Cached_Events (fqn, node, parent) SELECT ?, ?, ? FROM Cached_Events_D WHERE NOT EXISTS (SELECT fqn FROM Cached_Events WHERE fqn = ?) (/__JBossInternal__/RTDE/pattern-matching-threshold/663330655/_ID_/aaaa-uiq8an-fwm4m5h3-1-fwm4m8s0-z)
                    


                    Still don't know how to fill in the question marks to run it...

                    • 7. Re: JDBCCacheLoader with Oracle 10g problem
                      niuxuetao_fiserv

                      And the error log from JDBCCacheLoader right after this debug log is this:

                      [2009-07-01 16:11:48,367] [Detection1] ERROR JDBCCacheLoader - Failed to insert node :ORA-01461: can bind a LONG value only for insert into a LONG column
                      

                      And the error stack trace is the same as I posted on the top floor of this thread.

                      • 8. Re: JDBCCacheLoader with Oracle 10g problem
                        mircea.markus

                         

                        No, sorry, I managed to reproduce the problem with one thread on DEBUG level. Here is the log:
                        Code:

                        [2009-07-01 16:11:48,367] [Detection1] DEBUG JDBCCacheLoader - executing sql: INSERT INTO Cached_Eve
                        nts (fqn, node, parent) SELECT ?, ?, ? FROM Cached_Events_D WHERE NOT EXISTS (SELECT fqn FROM Cached
                        _Events WHERE fqn = ?) (/__JBossInternal__/RTDE/pattern-matching-threshold/663330655/_ID_/aaaa-uiq8a
                        n-fwm4m5h3-1-fwm4m8s0-z)




                        Still don't know how to fill in the question marks to run it...

                        yep, I've just noticed that the cache loader was modified to create a new table postfixed with "_D", so Cached_Events_D is indeed created by jbosscache. This was a changed made for following JIRA JBCACHE-1410. Guess the query (which looks a bit odd to me) doesn't work on oracle. Is this happening from the start, when you firt try to add something to the cache, or only after a while?

                        • 9. Re: JDBCCacheLoader with Oracle 10g problem
                          niuxuetao_fiserv

                          Hi Mircea,

                          Thanks for the response.

                          Do you mean the version I am using does not work for Oracle?

                          I actually have two problems:

                          1. Running with 1 thread, as pasted above, there are 3 exception traces logged by JBossCache at both WARN and ERROR level, they are not thrown by JbossCache as runtime exception. But these logs contain the exception stack trace which seems internally handled by JbossCache, but I am not sure what JbossCache does except for logging only.

                          These log messages happen a short while after I put something into pojo cache, and not to each put I do.

                          These messages are related to transactions. They are pasted below:

                          
                          [2009-07-02 16:57:21,067] [Detection1] ERROR JDBCCacheLoader - Failed to insert node :ORA-01461: can bind a LONG value only for insert into a LONG column
                          
                          [2009-07-02 16:57:21,067] [Detection1] WARN TxInterceptor - Caught exception, will now set transaction to roll back
                          java.lang.IllegalStateException: Failed to insert node: ORA-01461: can bind a LONG value only for insert into a LONG column
                          
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.insertNode(AdjListJDBCCacheLoader.java:514)
                           at org.jboss.cache.loader.JDBCCacheLoader.addNewSubtree(JDBCCacheLoader.java:345)
                           at org.jboss.cache.loader.JDBCCacheLoader.put(JDBCCacheLoader.java:147)
                           at org.jboss.cache.loader.AbstractCacheLoader.put(AbstractCacheLoader.java:294)
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.prepare(AdjListJDBCCacheLoader.java:211)
                           at org.jboss.cache.interceptors.CacheStoreInterceptor.prepareCacheLoader(CacheStoreInterceptor.java:386)
                           at org.jboss.cache.interceptors.CacheStoreInterceptor.handlePrepareCommand(CacheStoreInterceptor.java:214)
                           at org.jboss.cache.interceptors.base.SkipCheckChainedInterceptor.visitPrepareCommand(SkipCheckChainedInterceptor.java:310)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.MVCCLockingInterceptor.handlePrepareCommand(MVCCLockingInterceptor.java:320)
                           at org.jboss.cache.interceptors.base.PrePostProcessingCommandInterceptor.visitPrepareCommand(PrePostProcessingCommandInterceptor.java:383)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
                           at org.jboss.cache.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:140)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:50)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.TxInterceptor.runPreparePhase(TxInterceptor.java:638)
                           at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.beforeCompletion(TxInterceptor.java:1041)
                           at org.jboss.cache.interceptors.OrderedSynchronizationHandler.beforeCompletion(OrderedSynchronizationHandler.java:81)
                           at org.jboss.cache.transaction.DummyTransaction.notifyBeforeCompletion(DummyTransaction.java:284)
                           at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:84)
                           at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:99)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.endTransaction(PojoCacheImpl.java:152)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:116)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:93)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:88)
                           at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorage.update(JBossPojoCacheStorage.java:50)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.save(CacheAccessor.java:121)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.matchAll(CacheAccessor.java:62)
                           at com.fiserv.detection.patternmatching.PatternMatching.doDetection(PatternMatching.java:44)
                           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:200)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:108)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.onEvent(DetectionTaskInvoker.java:119)
                           at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at org.springframework.integration.util.DefaultMethodInvoker.invokeMethod(DefaultMethodInvoker.java:89)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.doInvokeMethod(MessageMappingMethodInvoker.java:127)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.invokeMethod(MessageMappingMethodInvoker.java:100)
                           at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:49)
                           at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:90)
                           at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:48)
                           at org.springframework.integration.dispatcher.AbstractDispatcher.sendMessageToHandler(AbstractDispatcher.java:75)
                           at org.springframework.integration.dispatcher.SimpleDispatcher.dispatch(SimpleDispatcher.java:45)
                           at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:56)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:116)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:94)
                           at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:222)
                           at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:179)
                           at org.springframework.integration.gateway.AbstractMessagingGateway.send(AbstractMessagingGateway.java:128)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:206)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:172)
                           at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
                           at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
                           at $Proxy48.processEvent(Unknown Source)
                           at com.fiserv.esp.DetectionPipelineProcessor.processEvent(DetectionPipelineProcessor.java:107)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.attempt(XEventProcessingTask.java:104)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.run(XEventProcessingTask.java:67)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
                           at java.lang.Thread.run(Thread.java:595)
                          Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
                          
                           at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
                           at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
                           at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
                           at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
                           at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
                           at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
                           at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
                           at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
                           at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368)
                           at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.insertNode(AdjListJDBCCacheLoader.java:501)
                           ... 69 more
                          


                          And

                          [2009-07-02 16:57:21,067] [Detection1] ERROR DummyTransaction - beforeCompletion() failed for tx=org.jboss.cache.transaction.DummyTransaction@289999, handlers=[TxInterceptor.LocalSynchronizationHandler(gtx=GlobalTransaction:<null>:31, tx=org.jboss.cache.transaction.DummyTransaction@289999)]
                          java.lang.IllegalStateException: Failed to insert node: ORA-01461: can bind a LONG value only for insert into a LONG column
                          
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.insertNode(AdjListJDBCCacheLoader.java:514)
                           at org.jboss.cache.loader.JDBCCacheLoader.addNewSubtree(JDBCCacheLoader.java:345)
                           at org.jboss.cache.loader.JDBCCacheLoader.put(JDBCCacheLoader.java:147)
                           at org.jboss.cache.loader.AbstractCacheLoader.put(AbstractCacheLoader.java:294)
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.prepare(AdjListJDBCCacheLoader.java:211)
                           at org.jboss.cache.interceptors.CacheStoreInterceptor.prepareCacheLoader(CacheStoreInterceptor.java:386)
                           at org.jboss.cache.interceptors.CacheStoreInterceptor.handlePrepareCommand(CacheStoreInterceptor.java:214)
                           at org.jboss.cache.interceptors.base.SkipCheckChainedInterceptor.visitPrepareCommand(SkipCheckChainedInterceptor.java:310)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.MVCCLockingInterceptor.handlePrepareCommand(MVCCLockingInterceptor.java:320)
                           at org.jboss.cache.interceptors.base.PrePostProcessingCommandInterceptor.visitPrepareCommand(PrePostProcessingCommandInterceptor.java:383)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:131)
                           at org.jboss.cache.commands.AbstractVisitor.visitPrepareCommand(AbstractVisitor.java:140)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.NotificationInterceptor.visitPrepareCommand(NotificationInterceptor.java:50)
                           at org.jboss.cache.commands.tx.PrepareCommand.acceptVisitor(PrepareCommand.java:68)
                           at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:116)
                           at org.jboss.cache.interceptors.TxInterceptor.runPreparePhase(TxInterceptor.java:638)
                           at org.jboss.cache.interceptors.TxInterceptor$LocalSynchronizationHandler.beforeCompletion(TxInterceptor.java:1041)
                           at org.jboss.cache.interceptors.OrderedSynchronizationHandler.beforeCompletion(OrderedSynchronizationHandler.java:81)
                           at org.jboss.cache.transaction.DummyTransaction.notifyBeforeCompletion(DummyTransaction.java:284)
                           at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:84)
                           at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:99)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.endTransaction(PojoCacheImpl.java:152)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:116)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:93)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:88)
                           at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorage.update(JBossPojoCacheStorage.java:50)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.save(CacheAccessor.java:121)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.matchAll(CacheAccessor.java:62)
                           at com.fiserv.detection.patternmatching.PatternMatching.doDetection(PatternMatching.java:44)
                           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:200)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:108)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.onEvent(DetectionTaskInvoker.java:119)
                           at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at org.springframework.integration.util.DefaultMethodInvoker.invokeMethod(DefaultMethodInvoker.java:89)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.doInvokeMethod(MessageMappingMethodInvoker.java:127)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.invokeMethod(MessageMappingMethodInvoker.java:100)
                           at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:49)
                           at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:90)
                           at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:48)
                           at org.springframework.integration.dispatcher.AbstractDispatcher.sendMessageToHandler(AbstractDispatcher.java:75)
                           at org.springframework.integration.dispatcher.SimpleDispatcher.dispatch(SimpleDispatcher.java:45)
                           at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:56)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:116)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:94)
                           at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:222)
                           at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:179)
                           at org.springframework.integration.gateway.AbstractMessagingGateway.send(AbstractMessagingGateway.java:128)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:206)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:172)
                           at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
                           at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
                           at $Proxy48.processEvent(Unknown Source)
                           at com.fiserv.esp.DetectionPipelineProcessor.processEvent(DetectionPipelineProcessor.java:107)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.attempt(XEventProcessingTask.java:104)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.run(XEventProcessingTask.java:67)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
                           at java.lang.Thread.run(Thread.java:595)
                          Caused by: java.sql.SQLException: ORA-01461: can bind a LONG value only for insert into a LONG column
                          
                           at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
                           at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
                           at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
                           at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
                           at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
                           at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
                           at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
                           at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
                           at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3368)
                           at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
                           at org.jboss.cache.loader.AdjListJDBCCacheLoader.insertNode(AdjListJDBCCacheLoader.java:501)
                           ... 69 more
                          


                          And

                          [2009-07-02 16:57:21,083] [Detection1] WARN PojoCacheImpl - Could not end transaction for operation on: /RTDE/pattern-matching-threshold/663330655
                          javax.transaction.RollbackException: outcome is false status: 1
                           at org.jboss.cache.transaction.DummyTransaction.commit(DummyTransaction.java:98)
                           at org.jboss.cache.transaction.DummyBaseTransactionManager.commit(DummyBaseTransactionManager.java:99)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.endTransaction(PojoCacheImpl.java:152)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:116)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:93)
                           at org.jboss.cache.pojo.impl.PojoCacheImpl.attach(PojoCacheImpl.java:88)
                           at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorage.update(JBossPojoCacheStorage.java:50)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.save(CacheAccessor.java:121)
                           at com.fiserv.detection.eventcache.statemachine.CacheAccessor.matchAll(CacheAccessor.java:62)
                           at com.fiserv.detection.patternmatching.PatternMatching.doDetection(PatternMatching.java:44)
                           at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                           at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:200)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.invoke(DetectionTaskInvoker.java:108)
                           at com.fiserv.detection.pipeline.DetectionTaskInvoker.onEvent(DetectionTaskInvoker.java:119)
                           at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)
                           at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
                           at java.lang.reflect.Method.invoke(Method.java:585)
                           at org.springframework.integration.util.DefaultMethodInvoker.invokeMethod(DefaultMethodInvoker.java:89)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.doInvokeMethod(MessageMappingMethodInvoker.java:127)
                           at org.springframework.integration.handler.MessageMappingMethodInvoker.invokeMethod(MessageMappingMethodInvoker.java:100)
                           at org.springframework.integration.handler.ServiceActivatingHandler.handleRequestMessage(ServiceActivatingHandler.java:49)
                           at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:90)
                           at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:48)
                           at org.springframework.integration.dispatcher.AbstractDispatcher.sendMessageToHandler(AbstractDispatcher.java:75)
                           at org.springframework.integration.dispatcher.SimpleDispatcher.dispatch(SimpleDispatcher.java:45)
                           at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:56)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:116)
                           at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:94)
                           at org.springframework.integration.channel.MessageChannelTemplate.doSend(MessageChannelTemplate.java:222)
                           at org.springframework.integration.channel.MessageChannelTemplate.send(MessageChannelTemplate.java:179)
                           at org.springframework.integration.gateway.AbstractMessagingGateway.send(AbstractMessagingGateway.java:128)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invokeGatewayMethod(GatewayProxyFactoryBean.java:206)
                           at org.springframework.integration.gateway.GatewayProxyFactoryBean.invoke(GatewayProxyFactoryBean.java:172)
                           at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
                           at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
                           at $Proxy48.processEvent(Unknown Source)
                           at com.fiserv.esp.DetectionPipelineProcessor.processEvent(DetectionPipelineProcessor.java:107)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.attempt(XEventProcessingTask.java:104)
                           at com.fiserv.tools.xcontainer.service.XEventProcessingTask.run(XEventProcessingTask.java:67)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
                           at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
                           at java.lang.Thread.run(Thread.java:595)
                          


                          And the insert debug log right before this is:

                          [2009-07-02 16:57:21,067] [Detection1] DEBUG JDBCCacheLoader - executing sql: INSERT INTO Cached_Events (fqn, node, parent) SELECT ?, ?, ? FROM Cached_Events_D WHERE NOT EXISTS (SELECT fqn FROM Cached_Events WHERE fqn = ?) (/__JBossInternal__/RTDE/pattern-matching-threshold/663330655/_ID_/aaaa-w80875-fwnlokgc-1-fwnloo17-w)
                          


                          • 10. Re: JDBCCacheLoader with Oracle 10g problem
                            niuxuetao_fiserv

                            The 2nd problem I have occurs when running with multiple threads. This is a runtime exception being thrown, not a log message. (besides the 1-thread problem still arises in multiple thread environment)

                            This problem appears differently in JSE environment (where only DummyTransactionManager is used), and in Websphere6.1.

                            The exception stack in JSE environment was pasted on the 1st floor of this thread. The stack trace of running in Websphere6.1 is pasted below:

                            Caused by: org.jboss.cache.pojo.PojoCacheException: init org.jboss.cache.config.Configuration@f7de972e failed
                             at org.jboss.cache.pojo.impl.PojoCacheImpl.<init>(PojoCacheImpl.java:75)
                             at org.jboss.cache.pojo.PojoCacheFactory.createCache(PojoCacheFactory.java:54)
                             at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorage.<init>(JBossPojoCacheStorage.java:26)
                             at com.fiserv.detection.eventcache.jboss.JBossPojoCacheStorageFactory.getCacheStorage(JBossPojoCacheStorageFactory.java:100)
                             at com.fiserv.detection.eventcache.statemachine.CacheAccessorFactory.createAccessor(CacheAccessorFactory.java:38)
                             at com.fiserv.detection.eventcache.api.EventCacheService.createCacheAccessor(EventCacheService.java:62)
                             at com.fiserv.detection.patternmatching.PatternMatching.init(PatternMatching.java:99)
                             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
                             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                             at java.lang.reflect.Method.invoke(Method.java:618)
                             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1414)
                             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1375)
                             at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
                             ... 88 more
                            Caused by: org.jboss.cache.CacheException: java.lang.reflect.InvocationTargetException
                             at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:148)
                             at org.jboss.cache.factories.ComponentRegistry$PrioritizedMethod.invoke(ComponentRegistry.java:970)
                             at org.jboss.cache.factories.ComponentRegistry.internalStart(ComponentRegistry.java:746)
                             at org.jboss.cache.factories.ComponentRegistry.start(ComponentRegistry.java:610)
                             at org.jboss.cache.invocation.CacheInvocationDelegate.start(CacheInvocationDelegate.java:355)
                             at org.jboss.cache.DefaultCacheFactory.createCache(DefaultCacheFactory.java:121)
                             at org.jboss.cache.pojo.impl.PojoCacheImpl.<init>(PojoCacheImpl.java:71)
                             ... 101 more
                            Caused by: java.lang.reflect.InvocationTargetException
                             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
                             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                             at java.lang.reflect.Method.invoke(Method.java:618)
                             at org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:144)
                             ... 107 more
                            Caused by: org.jboss.cache.CacheException: Unable to start cache loaders
                             at org.jboss.cache.loader.CacheLoaderManager.startCacheLoader(CacheLoaderManager.java:467)
                             ... 112 more
                            Caused by: java.sql.SQLException: ORA-02089: COMMIT is not allowed in a subordinate session
                            
                             at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
                             at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
                             at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
                             at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
                             at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
                             at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
                             at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
                             at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
                             at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
                             at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecute(WSJdbcPreparedStatement.java:735)
                             at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute(WSJdbcPreparedStatement.java:503)
                             at org.jboss.cache.loader.AdjListJDBCCacheLoader.createDummyTableIfNeeded(AdjListJDBCCacheLoader.java:296)
                             at org.jboss.cache.loader.AdjListJDBCCacheLoader.start(AdjListJDBCCacheLoader.java:269)
                             at org.jboss.cache.loader.JDBCCacheLoader.start(JDBCCacheLoader.java:376)
                             at org.jboss.cache.loader.CacheLoaderManager.startCacheLoader(CacheLoaderManager.java:461)
                             ... 112 more
                            


                            I checked the Javadoc of GenericTransactionManagerLookup class, it does not say Websphere6.1 is supported, could this be the problem? I will try to run it on Glassfish2 to see what happens.

                            Xuetao

                            • 11. Re: JDBCCacheLoader with Oracle 10g problem
                              mircea.markus

                              as the stack trace shows, both exceptions originate within the JDBCCacheLoader, and are most likely related to a change that was made to it, regarding https://jira.jboss.org/jira/browse/JBCACHE-1410. I've reopened the JIRA to test Oracle 10g integration.

                              • 12. Re: JDBCCacheLoader with Oracle 10g problem
                                niuxuetao_fiserv

                                Thanks Mircea, can we expect any forseeable date of this issue being tested and solved if it is really a bug?

                                Xuetao

                                • 13. Re: JDBCCacheLoader with Oracle 10g problem
                                  niuxuetao_fiserv

                                  Btw, can I use the GenericTransactionManagerLookup in Websphere6.1?

                                  • 14. Re: JDBCCacheLoader with Oracle 10g problem
                                    galder.zamarreno

                                     

                                    "niuxuetao_fiserv" wrote:
                                    Btw, can I use the GenericTransactionManagerLookup in Websphere6.1?


                                    It should do.

                                    1 2 Previous Next