• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Tim Cooke
  • Campbell Ritchie
  • paul wheaton
  • Ron McLeod
  • Devaka Cooray
Sheriffs:
  • Jeanne Boyarsky
  • Liutauras Vilda
  • Paul Clapham
Saloon Keepers:
  • Tim Holloway
  • Carey Brown
  • Piet Souris
Bartenders:

Sychronization problem with hibernate and weblogic 9.2 JTA

 
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi

I am trying to use hibernate 3 and weblogic 9.2 JTA with spring 2.0 configurations.But I am getting follwing exception

"Could not register synchronization with JTA TransactionManager"

Here are the full details:

My Exception
----------------

log4j:WARN No appenders could be found for logger (org.springframework.context.support.FileSystemXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
I am inside TestDAO DAO calling SaveorUpdate method in HibernateTemplate and returning the List
Exception in thread "main" org.springframework.dao.DataAccessResourceFailureException: Could not register synchronization with JTA TransactionManager; nested exception is javax.transaction.SystemException: You may enlist a resource only on a server
Caused by: javax.transaction.SystemException: You may enlist a resource only on a server
at weblogic.transaction.internal.TransactionImpl.registerSynchronization(TransactionImpl.java:514)
at org.springframework.orm.hibernate3.SessionFactoryUtils.registerJtaSynchronization(SessionFactoryUtils.java:460)
at org.springframework.orm.hibernate3.SessionFactoryUtils.doGetSession(SessionFactoryUtils.java:344)
at org.springframework.orm.hibernate3.SessionFactoryUtils.getSession(SessionFactoryUtils.java:233)
at org.springframework.orm.hibernate3.HibernateTemplate.getSession(HibernateTemplate.java:425)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:361)
at org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate(HibernateTemplate.java:686)
at com.fedex.hibernate.TestDAO.saveOrUpdate(TestDAO.java:22)
at com.fedex.hibernate.SpringHBClient.main(SpringHBClient.java:67)


My applicationContext.xml
-------------------------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">

<property name="jndiName" value="ramsxads2" />


</bean>
<bean id="userTransaction"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="cache" value="false" />
<property name="proxyInterface"
value="javax.transaction.UserTransaction" />
<property name="jndiName"
value="javax.transaction.UserTransaction" />
</bean>

<bean id="txManager"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="proxyInterface"
value="javax.transaction.TransactionManager" />
<property name="jndiName"
value="javax.transaction.TransactionManager" />
</bean>

<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransaction" ref="userTransaction" />
<property name="transactionManager" ref="txManager" />
</bean>

<bean id="sessionFactory1"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />


<property name="mappingResources">
<list>
<value>com/fedex/hibernate/Event.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.WeblogicTransactionManagerLookup</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</prop>
<prop key="hibernate.current_session_context_class">jta</prop>
<prop key="hibernate.connection.autocommit">false</prop>
<prop key="hibernate.connection.pool_size">0</prop>


</props>
</property>
</bean>

<bean id="testDAO" class="com.fedex.hibernate.TestDAO">
<property name="sessionFactory" ref="sessionFactory1" />
</bean>

</beans>

My client Program SpringHBClient
--------------------------------


import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import javax.transaction.NotSupportedException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.context.ApplicationContext;

public class SpringHBClient {

public static void main(String args[]){
Event theEvent = new Event();
theEvent.setId(33333L);
theEvent.setTitle("Success");
Context ctx = null;
UserTransaction ut=null;


Hashtable<String, String> ht = new Hashtable<String, String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");

try {
ctx = new InitialContext(ht);
ut = (UserTransaction)
ctx.lookup("javax.transaction.UserTransaction");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

ApplicationContext context=SampleContext.getContext();
try {
ut.begin();
} catch (NotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

TestDAO testDAO=(TestDAO)context.getBean("testDAO");
testDAO.saveOrUpdate(theEvent);
try {
ut.rollback();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SystemException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
My spring hibernateTemplate class TestDAO.java
----------------------------------------------
public class TestDAO extends HibernateDaoSupport {


protected void saveOrUpdate(Object obj)
{
logger.debug("Enter the save(object) in the TestDAO Class");
System.out.println("I am inside TestDAO DAO calling SaveorUpdate method in HibernateTemplate and returning the List");

getHibernateTemplate().saveOrUpdate(obj);

logger.debug("Exit from the save(object) int the TestDAO Class");
}

}
 
Consider Paul's rocket mass heater.
reply
    Bookmark Topic Watch Topic
  • New Topic