Hello guys,
I'm facing a problem with annotation based transactions. I'm using a JDBC datasource. First of all I included the namespace aop and tx as well as the spring-aop-2.0xsd and spring-tx-2.0.xsd schema into the XML configuration file.
Then I defined a proper transaction managerCode:<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="org.postgresql.Driver" /> <property name="url" value="jdbc:postgresql://localhost/postgres" /> <property name="username" value="" /> <property name="password" value="" /> </bean>
As well asCode:<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
andCode:<tx:annotation-driven transaction-manager="transactionManager"/>
Code:<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean>
Now, if I got it right, the only thing that has to be additionaly done, is to "mark" every Method, that should be executed as a transaction, or am I wrong?
Code:@Transactional(propagation=Propagation.REQUIRED, readOnly=false)
I am using Apache (Tomcat 6.0, MyFaces, Trinidad, Tomahawk), PostgreSQL 8.3, JDBC driver type 4 for PostgreSQL (Version 8.3-603), Spring 2.0.0.RC1 (WebFlow, Security, Faces, JDBCTemplate, and well now the transaction stuff too).
The Problem:
The authentication works fine, but the method, that is first executed (in webflow defined at the top), causes the problem:
....
....
root cause
Code:javax.el.MethodNotFoundException: Method not found: com.test.UserBean@64dfeb.GetUserData(java.lang.String) org.jboss.el.util.ReflectionUtil.findMethod(ReflectionUtil.java:211) org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:269) org.jboss.el.parser.AstMethodSuffix.getValue(AstMethodSuffix.java:59) org.jboss.el.parser.AstValue.getValue(AstValue.java:67) org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) org.springframework.binding.expression.el.ELExpression.getValue(ELExpression.java:60) org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:75) org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188) org.springframework.webflow.engine.AnnotatedAction.execute(AnnotatedAction.java:145) org.springframework.webflow.engine.ActionExecutor.execute(ActionExecutor.java:47) org.springframework.webflow.engine.ActionList.execute(ActionList.java:153) org.springframework.webflow.engine.Flow.start(Flow.java:500) org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:360) org.springframework.webflow.engine.impl.FlowExecutionImpl.start(FlowExecutionImpl.java:245) org.springframework.webflow.executor.FlowExecutorImpl.launchExecution(FlowExecutorImpl.java:133) org.springframework.webflow.mvc.servlet.FlowController.handleRequestInternal(FlowController.java:164) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:523) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:453) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:378) org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.SessionFixationProtectionFilter.doFilterHttp(SessionFixationProtectionFilter.java:67) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(ExceptionTranslationFilter.java:101) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.providers.anonymous.AnonymousProcessingFilter.doFilterHttp(AnonymousProcessingFilter.java:105) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilterHttp(RememberMeProcessingFilter.java:116) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp(BasicProcessingFilter.java:174) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(AbstractProcessingFilter.java:277) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilter.java:89) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.context.HttpSessionContextIntegrationFilter.doFilterHttp(HttpSessionContextIntegrationFilter.java:235) org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurityFilter.java:53) org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:390) org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy.java:175) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
Do I need to define the aop and tx namespaces in every XML file? What else could the problem be?
Greetings from Germany


Reply With Quote
