[jboss-user] [EJB 3.0] - No Transaction! please help

mnrz do-not-reply at jboss.com
Wed Sep 5 07:51:52 EDT 2007


Hi

I have a component in my application to authenticate users and it was working fine until yesterday and now it's treating weird, I had no changes since yesterday but it throws following exception.


  | Hibernate: select user0_.username as username3_, user0_.address as address3_, user0_.group_id as gro
  | up13_3_, u
  | ser0_.password as password3_, user0_.position as position3_, user0_.idCity as idCity3_, user0_.mobil
  | eContact a
  | s mobileCo6_3_, user0_.phoneNo1 as phoneNo7_3_, user0_.phoneNo2 as phoneNo8_3_, user0_.speciality as
  |  specialit
  | y3_, user0_.statusCode as statusCode3_, user0_.uPIN as uPIN3_, user0_.enabled as enabled3_ from user
  |  user0_ wh
  | ere user0_.username=? and user0_.password=?
  | Hibernate: select group0_.id as id1_1_, group0_.name as name1_1_, group0_.permissionGroup as permiss
  | i3_1_1_, g
  | roup0_.exportPermission as exportPe4_1_1_, permission1_.groupId as groupId3_, permission1_.id as id3
  | _, permiss
  | ion1_.id as id2_0_, permission1_.permission as permission2_0_, permission1_.groupId as groupId2_0_, 
  | permission
  | 1_.fieldName as fieldName2_0_, permission1_.category as category2_0_, permission1_.displayablePermis
  | sion as di
  | splaya5_2_0_, permission1_.searchablePermission as searchab6_2_0_ from group_permission group0_ left
  |  outer joi
  | n permission permission1_ on group0_.id=permission1_.groupId where group0_.id=?
  | java.lang.IllegalStateException: No transaction.
  |         at org.jboss.tm.TxManager.setRollbackOnly(TxManager.java:751)
  |         at org.hibernate.ejb.AbstractEntityManagerImpl.markAsRollback(AbstractEntityManagerImpl.java
  | :392)
  |         at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManag
  | erImpl.jav
  | a:545)
  |         at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManag
  | erImpl.jav
  | a:567)
  |         at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:72)
  |         at com.payvand.search.model.business.Authenticator.authenticate(Authenticator.java:59)
  |         at com.payvand.search.model.business.Authenticator$$FastClassByCGLIB$$28b8687e.invoke(<generated>)
  |         at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
  |         at org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:45)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:55)
  |         at org.jboss.seam.interceptors.OutcomeInterceptor.interceptOutcome(OutcomeInterceptor.java:2
  | 1)
  |         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.seam.util.Reflections.invoke(Reflections.java:18)
  |         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
  |         at org.jboss.seam.interceptors.RollbackInterceptor.rollbackIfNecessary(RollbackInterceptor.j
  | ava:29)
  |         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.seam.util.Reflections.invoke(Reflections.java:18)
  |         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
  |         at org.jboss.seam.interceptors.BijectionInterceptor.bijectNonreentrantComponent(BijectionInt
  | erceptor.j
  | ava:79)
  |         at org.jboss.seam.interceptors.BijectionInterceptor.bijectComponent(BijectionInterceptor.jav
  | a:58)
  |         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.seam.util.Reflections.invoke(Reflections.java:18)
  |         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
  |         at org.jboss.seam.interceptors.ConversationInterceptor.endOrBeginLongRunningConversation(Con
  | versationI
  | nterceptor.java:52)
  |         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.seam.util.Reflections.invoke(Reflections.java:18)
  |         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
  |         at org.jboss.seam.interceptors.MethodContextInterceptor.aroundInvoke(MethodContextIntercepto
  | r.java:27)
  | 
  |         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.seam.util.Reflections.invoke(Reflections.java:18)
  |         at org.jboss.seam.intercept.Interceptor.aroundInvoke(Interceptor.java:169)
  |         at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:64)
  |         at org.jboss.seam.intercept.RootInterceptor.createSeamInvocationContext(RootInterceptor.java
  | :144)
  |         at org.jboss.seam.intercept.RootInterceptor.invokeInContexts(RootInterceptor.java:129)
  |         at org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:102)
  |         at org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java
  | :145)
  |         at org.jboss.seam.intercept.JavaBeanInterceptor.intercept(JavaBeanInterceptor.java:80)
  |         at com.payvand.search.model.business.Authenticator$$EnhancerByCGLIB$$e48d63d5.authenticate(<generated>
  | )
  |         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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
  |         at org.jboss.seam.actionparam.ActionParamBindingHelper.invokeTheExpression(ActionParamBindin
  | gHelper.ja
  | va:59)
  |         at org.jboss.seam.actionparam.ActionParamMethodBinding.invoke(ActionParamMethodBinding.java:
  | 74)
  |         at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:102)
  |         at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:102)
  |         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 javax.security.auth.login.LoginContext.invoke(LoginContext.java:769)
  |         at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
  |         at javax.security.auth.login.LoginContext$5.run(LoginContext.java:706)
  |         at java.security.AccessController.doPrivileged(Native Method)
  |         at javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703)
  |         at javax.security.auth.login.LoginContext.login(LoginContext.java:575)
  |         at org.jboss.seam.security.Identity.authenticate(Identity.java:206)
  |         at org.jboss.seam.security.Identity.authenticate(Identity.java:199)
  |         at org.jboss.seam.security.Identity.login(Identity.java:184)
  |         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.sun.el.parser.AstValue.invoke(AstValue.java:151)
  |         at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
  |         at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
  |         at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
  |         at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:6
  | 1)
  |         at javax.faces.component.UICommand.broadcast(UICommand.java:109)
  |         at org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
  |         at org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
  |         at org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
  |         at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.
  | java:32)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
  |         at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:100)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:29)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.jboss.seam.servlet.SeamCharacterEncodingFilter.doFilter(SeamCharacterEncodingFilter.j
  | ava:41)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
  | ava:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  | 
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
  |         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11P
  | rotocol.ja
  | va:744)
  |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.ja
  | va:80)
  |         at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
  |         at java.lang.Thread.run(Thread.java:595)
  | 

as you see, it seems that select statements are produced correct but the entityManager can not be loaded

I am using JBoss Seam v1.1.6 GA

here is my authenticator:


  | public class Authenticator implements Serializable {
  | 	
  | 	@In
  | 	@PersistenceContext(unitName = "SearchEngineDB")
  | 	private EntityManager entityManager;
  | 	
  | 	@Out(required = false, scope = SESSION)
  | 	private User user;
  | 
  | 	@In
  | 	private Identity identity;
  | 	private FacesMessages facesMessages;
  | 
  | 	public FacesMessages getFacesMessages() {
  | 		return facesMessages;
  | 	}
  | 
  | 	public void setFacesMessages(FacesMessages facesMessages) {
  | 		this.facesMessages = facesMessages;
  | 	}
  | 
  | 	public boolean authenticate() {
  | 		try {
  | 			String username = Identity.instance().getUsername();
  | 			String password = Identity.instance().getPassword();
  | 			user = (User)entityManager
  | 				.createQuery("from User where username = :username and password = :password")
  | 				.setParameter("username", username)
  | 				.setParameter("password", password)
  | 				.getSingleResult();
  | 			
  | 			if(user == null) {
  | 				throw new NoResultException("could not match any user with given username '"+username+"' and passowrd!");
  | 			}
  | 			if (user.getRoles() != null) {
  | 				for (UserRole role : user.getRoles()) {
  | 					identity.addRole(role.getRoleName());
  | 				}
  | 			}
  | 			user.setPassword("");
  | 			return true;
  | 		} catch (NoResultException ex) {
  | 			System.out.println("--Authenticator --");
  | 			ex.printStackTrace();
  | 			return false;
  | 		}catch (Exception e) {
  | 			e.printStackTrace();
  | 			return false;
  | 		}
  | 	}
  | 
  | 	public String logout() {
  | 		identity.logout();
  | 		return "home";
  | 	}
  | }
  | 

even if I define a dao component say, userDao and try to inject it, it returns null, I mean if I add following to my class:


  | 	@EJB
  | 	private UserDao userDao;
  | 
  | 

it won't be injected and will return NPE 

here is my jboss-beans.xml


  | <?xml version="1.0" encoding="UTF-8"?>
  | 
  | <deployment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |             xsi:schemaLocation="urn:jboss:bean-deployer bean-deployer_1_0.xsd"
  |             xmlns="urn:jboss:bean-deployer">
  | 
  |     <bean name="searchEngineDSFactory" class="org.jboss.resource.adapter.jdbc.local.LocalTxDataSource">
  |         <property name="driverClass">com.mysql.jdbc.Driver</property>
  |         <property name="connectionURL">jdbc:mysql://localhost:3306/search_engine?autoReconnect=true</property>
  |         <property name="userName">root</property>
  |         <property name="password">root</property>
  |         <property name="jndiName">java:/searchEngineDS</property>
  |         <property name="minSize">0</property>
  |         <property name="maxSize">10</property>
  |         <property name="blockingTimeout">1000</property>
  |         <property name="idleTimeout">100000</property>
  |         <property name="transactionManager"><inject bean="TransactionManager"/></property>
  |         <property name="cachedConnectionManager"><inject bean="CachedConnectionManager"/></property>
  |         <property name="initialContextProperties"><inject bean="InitialContextProperties"/></property>
  |     </bean>
  |     
  |     <bean name="searchEngineDS" class="java.lang.Object">
  |         <constructor factoryMethod="getDatasource">
  |             <factory bean="searchEngineDSFactory" />
  |         </constructor>
  |     </bean>
  | </deployment>
  | 
  | 


and persistence.xml:

  | <?xml version="1.0" encoding="UTF-8"?>
  | <persistence>
  | 	<persistence-unit name="SearchEngineDB">
  |     	<provider>org.hibernate.ejb.HibernatePersistence</provider>
  |       	<jta-data-source>java:/searchEngineDS</jta-data-source>
  |       <properties>
  |          <property name="hibernate.hbm2ddl.auto" value="update"/>
  |          <property name="hibernate.show_sql" value="true"/>
  |          <!-- These are the default for JBoss EJB3, but not for HEM: -->
  |          <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/>
  |          <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
  |          <property name="jboss.entity.manager.factory.jndi.name" value="java:/searchengineEntityManagerFactory"/>
  |       </properties>
  | 	</persistence-unit>
  | </persistence>
  | 

thanks in advance

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4081268#4081268

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4081268



More information about the jboss-user mailing list