Page 2 of 2 FirstFirst 12
Results 11 to 14 of 14

Thread: Spring JMS and Hibernate I can't get to work together

  1. #11
    Join Date
    Sep 2009
    Posts
    28

    Default

    Any other suggestions? I still can't resolve this.

  2. #12
    Join Date
    Sep 2009
    Posts
    28

    Default

    The more I look into this, the more it looks like a transaction related issue. But I have no idea how to figure this out. I'm not 100% sure on how the transactions wrap things and how the JMS and Hibernate are working together.

  3. #13
    Join Date
    Sep 2009
    Posts
    28

    Default

    I tried making two separate transaction managers, 1 for hibernate and 1 for jms and it STILL doesn't work. And I can't use JTA because it is a stand alone app not on an app server.
    added in new manager in applicationContext-JMS.xml
    Code:
    	<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
    		<property name="connectionFactory" ref="userCredentialsConnectionFactory"/>
    	</bean>
    	
    	<bean id="jndiTemplate" class="org.springframework.jndi.JndiTemplate">
    		<property name="environment">
    			<props>
    				<prop key="java.naming.factory.initial">${spring.jndi.initial.context.factory}</prop>
    				<prop key="java.naming.provider.url">${spring.jndi.provider.url}</prop>
    			</props>
    		</property>
    	</bean>	
    	<bean id="connectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
    		<property name="jndiTemplate" ref="jndiTemplate" />
    		<property name="jndiName" value="${tibco.connection.factory}" />
    		<property name="proxyInterface" value="javax.jms.ConnectionFactory" />
    	</bean> 
    	<bean id="userCredentialsConnectionFactory" class="org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter">
    		<property name="targetConnectionFactory" ref="connectionFactory" />			
    		<property name="username" value="${spring.jndi.user}" />
    		<property name="password" value="${spring.jndi.password}" />
    	</bean>
    	<bean id="jmsContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    		<property name="connectionFactory" ref="userCredentialsConnectionFactory"/>
    		<!-- <property name="destinationResolver" ref="destinationResolver"/> -->
    		<property name="concurrentConsumers" value="${spring.jms.message.listener.container.consumers}"/>
    		<property name="destinationName" value="${spring.jms.message.listener.container.destination}"/>
    		<property name="messageListener" ref="messageListener"/>
    		<property name="sessionTransacted" value="true"/>
    		<property name="transactionManager" ref="jmsTransactionManager"/>
    	</bean>
    output:
    Code:
    [NextGenSwak] - 2012-05-23 10:49:54,420 - DEBUG [jmsContainer-1] JmsTransactionManager.doBegin(182) | Created JMS transaction on Session [[com.<removed>.mi.decorator.jms.<removed>JmsVirtualSession(5.0.0 09/30/2010)] decorating multiple classes in distribution [
        com.tibco.tibjms.TibjmsxSessionImp] [com.tibco.tibjms.TibjmsxSessionImp@baf589] [NON-Overridable AckMode: javax.jms.Session.SESSION_TRANSACTED]] from Connection [[com.<removed>.mi.decorator.jms.<removed>JmsVirtualConnection(5.0.0 09/30/2010)] decorating multiple classes in distribution [
        JMS Server Name: [EMS01-ISDPMI01-ISDPMI02]
          Actual connection #0 com.tibco.tibjms.TibjmsConnection [Connection[ClientId=null Connected=tcp://isdpmi01.ground.<removed>.com:48200, URL=tcp://isdpmi01.ground.<removed>.com:48200]]
    TIBCO Software Inc. [Server=[4.4.3 V16] Client=[5.1.5 V3]] JMS Specification:[1.1]
    Virtual Session #0 stats: ]
    [NextGenSwak] - 2012-05-23 10:49:54,420 - TRACE [jmsContainer-1] TransactionSynchronizationManager.bindResource(183) | Bound value [org.springframework.jms.connection.JmsResourceHolder@1d31859] for key [org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter@1e9d9b1] to thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:49:54,420 - TRACE [jmsContainer-1] TransactionSynchronizationManager.getResource(139) | Retrieved value [org.springframework.jms.connection.JmsResourceHolder@1d31859] for key [org.springframework.jms.connection.UserCredentialsConnectionFactoryAdapter@1e9d9b1] bound to thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:49:54,436 - DEBUG [jmsContainer-1] DefaultMessageListenerContainer.doReceiveAndExecute(311) | Received message of type [class $Proxy15] from consumer [[com.<removed>.mi.decorator.jms.<removed>JmsVirtualMessageConsumer(5.0.0 09/30/2010)] decorating multiple classes in distribution [
        com.tibco.tibjms.TibjmsQueueReceiver] [QueueReceiver[queue=FXGSHIP.FXG.NGSWAK.EPDI.SCANODS]]] of transactional session [[com.<removed>.mi.decorator.jms.<removed>JmsVirtualSession(5.0.0 09/30/2010)] decorating multiple classes in distribution [
        com.tibco.tibjms.TibjmsxSessionImp] [com.tibco.tibjms.TibjmsxSessionImp@baf589] [NON-Overridable AckMode: javax.jms.Session.SESSION_TRANSACTED]]
    caught a byte.
    [NextGenSwak] - 2012-05-23 10:49:54,655 - DEBUG [jmsContainer-1] DefaultListableBeanFactory.doGetBean(242) | Returning cached instance of singleton bean 'org.springframework.transaction.interceptor.TransactionInterceptor#0'
    [NextGenSwak] - 2012-05-23 10:49:54,655 - DEBUG [jmsContainer-1] DefaultListableBeanFactory.doGetBean(242) | Returning cached instance of singleton bean 'transactionManager'
    [NextGenSwak] - 2012-05-23 10:49:54,655 - DEBUG [jmsContainer-1] HibernateTransactionManager.getTransaction(365) | Creating new transaction with name [com.<removed>.ground.swak.dao.BaseDao.insert]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT; ''
    [NextGenSwak] - 2012-05-23 10:49:54,717 - DEBUG [jmsContainer-1] HibernateTransactionManager.doBegin(493) | Opened new Session [org.hibernate.impl.SessionImpl@16a4a67] for Hibernate transaction
    [NextGenSwak] - 2012-05-23 10:49:54,717 - DEBUG [jmsContainer-1] HibernateTransactionManager.doBegin(504) | Preparing JDBC Connection of Hibernate Session [org.hibernate.impl.SessionImpl@16a4a67]
    Wed May 23 10:49:54 EDT 2012 - log: decrypt called PKGAPP_USER(PKGAPP,USER)
    Wed May 23 10:49:54 EDT 2012 - log: group (PKGAPP) assigned user(pkgapp)
    Wed May 23 10:49:54 EDT 2012 - log: decrypt called PKGAPP_PASSWORD(PKGAPP,PASSWORD)
    [NextGenSwak] - 2012-05-23 10:49:54,748 - DEBUG [jmsContainer-1] DriverManagerDataSource.getConnectionFromDriver(162) | Creating new JDBC DriverManager Connection to [jdbc:oracle:thin:@ldap://oidprd.gss.ground.<removed>.com:389/DSSDEV09,cn=OracleContext,dc=ground,dc=<removed>,dc=com]
    [NextGenSwak] - 2012-05-23 10:50:03,280 - DEBUG [jmsContainer-1] HibernateTransactionManager.doBegin(569) | Exposing Hibernate transaction as JDBC transaction [oracle.jdbc.driver.T4CConnection@10f34cc]
    [NextGenSwak] - 2012-05-23 10:50:03,280 - TRACE [jmsContainer-1] TransactionSynchronizationManager.bindResource(183) | Bound value [org.springframework.jdbc.datasource.ConnectionHolder@1535a58] for key [org.springframework.jdbc.datasource.DriverManagerDataSource@aeea66] to thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:50:03,280 - TRACE [jmsContainer-1] TransactionSynchronizationManager.bindResource(183) | Bound value [org.springframework.orm.hibernate3.SessionHolder@1505258] for key [org.hibernate.impl.SessionFactoryImpl@1ded4c9] to thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:50:03,280 - TRACE [jmsContainer-1] TransactionSynchronizationManager.initSynchronization(258) | Initializing transaction synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,280 - TRACE [jmsContainer-1] TransactionInterceptor.prepareTransactionInfo(344) | Getting transaction for [com.<removed>.ground.swak.dao.BaseDao.insert]
    [NextGenSwak] - 2012-05-23 10:50:03,280 - TRACE [jmsContainer-1] TransactionSynchronizationManager.getResource(139) | Retrieved value [org.springframework.orm.hibernate3.SessionHolder@1505258] for key [org.hibernate.impl.SessionFactoryImpl@1ded4c9] bound to thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:50:03,373 - TRACE [jmsContainer-1] TransactionInterceptor.commitTransactionAfterReturning(373) | Completing transaction for [com.<removed>.ground.swak.dao.BaseDao.insert]
    [NextGenSwak] - 2012-05-23 10:50:03,373 - TRACE [jmsContainer-1] HibernateTransactionManager.triggerBeforeCommit(925) | Triggering beforeCommit synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,373 - TRACE [jmsContainer-1] HibernateTransactionManager.triggerBeforeCompletion(938) | Triggering beforeCompletion synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,373 - DEBUG [jmsContainer-1] HibernateTransactionManager.processCommit(752) | Initiating transaction commit
    [NextGenSwak] - 2012-05-23 10:50:03,373 - DEBUG [jmsContainer-1] HibernateTransactionManager.doCommit(652) | Committing Hibernate transaction on Session [org.hibernate.impl.SessionImpl@16a4a67]
    [NextGenSwak] - 2012-05-23 10:50:03,389 - TRACE [jmsContainer-1] HibernateTransactionManager.triggerAfterCommit(951) | Triggering afterCommit synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,389 - TRACE [jmsContainer-1] HibernateTransactionManager.triggerAfterCompletion(967) | Triggering afterCompletion synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,389 - TRACE [jmsContainer-1] TransactionSynchronizationManager.clearSynchronization(316) | Clearing transaction synchronization
    [NextGenSwak] - 2012-05-23 10:50:03,389 - TRACE [jmsContainer-1] TransactionSynchronizationManager.doUnbindResource(229) | Removed value [org.springframework.orm.hibernate3.SessionHolder@1505258] for key [org.hibernate.impl.SessionFactoryImpl@1ded4c9] from thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:50:03,389 - TRACE [jmsContainer-1] TransactionSynchronizationManager.doUnbindResource(229) | Removed value [org.springframework.jdbc.datasource.ConnectionHolder@1535a58] for key [org.springframework.jdbc.datasource.DriverManagerDataSource@aeea66] from thread [jmsContainer-1]
    [NextGenSwak] - 2012-05-23 10:50:03,389 - DEBUG [jmsContainer-1] HibernateTransactionManager.doCleanupAfterCompletion(734) | Closing Hibernate Session [org.hibernate.impl.SessionImpl@16a4a67] after transaction
    [NextGenSwak] - 2012-05-23 10:50:03,389 - DEBUG [jmsContainer-1] SessionFactoryUtils.closeSession(789) | Closing Hibernate Session
    completed
    [NextGenSwak] - 2012-05-23 10:50:03,405 - TRACE [jmsContainer-1] MessageListenerAdapter.onMessage(360) | No result object given - no result to handle

  4. #14
    Join Date
    Jun 2006
    Location
    The Netherlands
    Posts
    13,624

    Default


    I tried making two separate transaction managers, 1 for hibernate and 1 for jms and it STILL doesn't work. And I can't use JTA because it is a stand alone app not on an app server.
    So? The fact that you aren't on an app server has nothing to do with the ability to use JTA or not. There are standalone JTA providers which you can use.

    Try debugging your sql statements and see what gets issued.
    Marten Deinum
    Java Consultant / Pragmatist / Open Source Enthousiast / Author


    Pro Spring MVC: With Web Flow
    Conspect

    Have you read the reference guide.
    Use the [ code ] tags, young padawan

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •