In your web.xml

the OSV Filter must comes in front (first) of the wicket filter

On Wed, Dec 15, 2010 at 12:58 PM, adam.gibbons [via Apache Wicket] <
ml-node+3089284-1530997070-65...@n4.nabble.com<ml-node%2b3089284-1530997070-65...@n4.nabble.com>
> wrote:

> Ok, I think this is now back to a Wicket question. Start up is ok now.
> However when I try and invoke UserServiceImpl.authenticate(){
>
>         final Temp1 temp1 = new Temp1();
>         temp1.setValue(userName);
>         temp1DAO.save(temp1);
>         return testUserService.authenticate(userName, password);
> }
>
> I get the following error through the GUI:
>
> Method onFormSubmitted of interface
> org.apache.wicket.markup.html.form.IFormSubmitListener targeted at component
> [MarkupContainer [Component id = signInForm]] threw an exception
>
> Root cause:
>
> org.hibernate.HibernateException: persist is not valid without active
> transaction
> at
> org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:297)
> at $Proxy18.persist(Unknown Source)
> at
> uk.co.company.product.persistance.hibernate.AbstractTemp1DAO.save(AbstractTemp1DAO.java:21)
> at
> uk.co.company.product.persistance.hibernate.Temp1DAOImpl.save(Temp1DAOImpl.java:1)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
> at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> at $Proxy9.save(Unknown Source)
> at
> uk.co.company.product.business.spring.UserServiceImpl.authenticate(UserServiceImpl.java:42)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
> at
> org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
> at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
> at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
> at $Proxy10.authenticate(Unknown Source)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.wicket.proxy.LazyInitProxyFactory$JdkHandler.invoke(LazyInitProxyFactory.java:416)
> at org.apache.wicket.proxy.$Proxy15.authenticate(Unknown Source)
> at
> uk.co.company.product.presentation.wicket.app.CustomAuthenticatedWebSession.authenticate(CustomAuthenticatedWebSession.java:29)
>
> I was under the impression that the OpenSessionInViewFilter was supposed to
> do this for us?
>
>
> Once again here is the source code:
>
>
>
> web.xml:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app
>     xmlns="http://java.sun.com/xml/ns/j2ee";
>     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>     xsi:schemaLocation="
>         http://java.sun.com/xml/ns/j2ee
>         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd
>     "
>     version="2.4"
> >
>     <display-name>ZenTemplate</display-name>
>     <context-param>
>         <param-name>contextConfigLocation</param-name>
>         <param-value>classpath:applicationContext.xml</param-value>
>     </context-param>
>     <listener>
>
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>     </listener>
>     <filter>
>         <filter-name>opensessioninview</filter-name>
>
> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
>     </filter>
>     <filter>
>         <filter-name>wicket-spring-hibernate</filter-name>
>
> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
>         <init-param>
>             <param-name>applicationFactoryClassName</param-name>
>
> <param-value>org.apache.wicket.spring.SpringWebApplicationFactory</param-value>
>         </init-param>
>         <init-param>
>             <param-name>applicationClassName</param-name>
>
> <param-value>uk.co.company.product.presentation.wicket.app.WicketApplication</param-value>
>         </init-param>
>     </filter>
>     <filter-mapping>
>         <filter-name>opensessioninview</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
>     <filter-mapping>
>         <filter-name>wicket-spring-hibernate</filter-name>
>         <url-pattern>/*</url-pattern>
>     </filter-mapping>
> </web-app>
>
>
>
> 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";
>     xmlns:aop="http://www.springframework.org/schema/aop";
>     xmlns:tx="http://www.springframework.org/schema/tx";
>     xmlns:context="http://www.springframework.org/schema/context";
>     xsi:schemaLocation="
>         http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
>         http://www.springframework.org/schema/aop
> http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
>         http://www.springframework.org/schema/tx
> http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
>         http://www.springframework.org/schema/context
> http://www.springframework.org/schema/context/spring-context-2.5.xsd
>     "
>     default-autowire="byType"
>     default-lazy-init="false"
> >
>     <bean id="wicketApplication"
> class="uk.co.company.product.presentation.wicket.app.WicketApplication" />
>
>     <bean id="placeholderConfigurer"
> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
> autowire="byName">
>
>         <property name="ignoreUnresolvablePlaceholders" value="false" />
>         <property name="systemPropertiesModeName"
> value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
>         <property name="ignoreResourceNotFound" value="false" />
>         <property name="locations"><list>
>             <value>classpath*:/application.properties</value>
>         </list></property>
>     </bean>
>
>     <bean id="dataSource"
> class="org.springframework.jdbc.datasource.DriverManagerDataSource"
> autowire="byName">
>
>         <property
> name="driverClassName"><value>${jdbc.driver}</value></property>
>         <property name="url"><value>${jdbc.url}</value></property>
>         <property
> name="username"><value>${jdbc.username}</value></property>
>         <property
> name="password"><value>${jdbc.password}</value></property>
>     </bean>
>
>     <tx:annotation-driven transaction-manager="txManager" />
>
>     <bean id="txManager"
> class="org.springframework.orm.hibernate3.HibernateTransactionManager"
> autowire="byName">
>
>         <property name="sessionFactory" ref="sessionFactory" />
>     </bean>
>
>     <!--<bean id="interceptor"
> class="com.mycompany.hibernate.HibernateInterceptor">
>     </bean>-->
>
>     <bean id="sessionFactory"
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
> autowire="byName">
>
>         <property name="dataSource" ref="dataSource" />
>         <property name="hibernateProperties">
>             <props>
>                 <!-- GENERAL -->
>                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>
>                 <prop key="hibernate.show_sql">true</prop>
>                 <prop key="hibernate.show_sql">hibernate.format_sql</prop>
>                 <prop key="hibernate.default_schema">zen_template</prop>
>                 <prop key="hibernate.max_fetch_depth">2</prop>
>                 <!-- <prop
> key="hibernate.default_batch_fetch_size">16</prop> -->
>                 <prop key="hibernate.default_entity_mode">pojo</prop>
>                 <prop key="hibernate.order_updates">true</prop>
>                 <prop key="hibernate.generate_statistics">true</prop>
>                 <prop key="hibernate.use_identifier_rollback">true</prop>
>                 <prop
> key="hibernate.current_session_context_class">thread</prop>
>                 <prop key="hibernate.use_outer_join">true</prop>
>                 <!-- JDBC -->
>                 <!-- <prop key="hibernate.jdbc.batch_size">20</prop> -->
>                 <!-- <prop
> key="hibernate.jdbc.batch_versioned_data">true</prop> -->
>                 <prop
> key="hibernate.jdbc.use_streams_for_binary">true</prop>
>                 <prop
> key="hibernate.jdbc.use_get_generated_keys">true</prop>
>                 <!-- CONNECTION -->
>                 <prop key="hibernate.connection.isolation">8</prop><!--
> TRANSACTION_SERIALIZABLE -->
>                 <prop key="hibernate.connection.autocommit">false</prop>
>                 <prop key="hibernate.connection.pool_size">5</prop>
>                 <!-- CACHE -->
>                 <!-- <prop
> key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
> -->
>                 <!-- <prop
> key="hibernate.cache.use_minimal_puts">true</prop> -->
>                 <!-- <prop
> key="hibernate.cache.use_query_cache">true</prop> -->
>                  <!-- MISCELLANEOUS -->
>                  <prop
> key="hibernate.bytecode.use_reflection_optimizer">true</prop>
>                 <prop
> key="hibernate.cglib.use_reflection_optimizer">true</prop>
>                 <!-- <prop key="hibernate.bytecode.provider">cglib</prop>
> -->
>                 <!-- <prop key="hibernate.query.substitutions">true</prop>
> -->
>             </props>
>         </property>
>         <!--<property name="entityInterceptor">
>             <ref bean="interceptor" />
>         </property>-->
>         <property name="packagesToScan"><list>
>             <value>uk.co.company.product.persistance.hibernate</value>
>         </list></property>
>     </bean>
>      <context:component-scan base-package="uk.co.company.product" />
>      <context:annotation-config/>
> </beans>
>
>
> CustomAuthenticatedWebSession.java:
>
>
> public class CustomAuthenticatedWebSession extends AuthenticatedWebSession{
>     private static final long serialVersionUID = 4713195500103052768L;
>
>     @SpringBean
>     private UserService userService;
>     public void setUserService(final UserService userService){
>         this.userService = userService;
>     }
>
>     transient private String currentUser = null;
>
>     public CustomAuthenticatedWebSession(final Request request){
>         super(request);
>         InjectorHolder.getInjector().inject(this);//<-- VERY IMPORTANT to
> get Spring DI to work (within Wicket objects)
>
>     }
>
>     @Override
>     public boolean authenticate(final String username, final String
> password){
>         currentUser = username;
>         return userService.authenticate(username, password);
>     }
>
>     @Override
>     public Roles getRoles(){
>         return userService.getRoles(currentUser, isSignedIn());
>     }
> }
>
>
> UserServiceImpl.java:
>
> @Service
> public class UserServiceImpl extends _AbstractService implements
> UserService{
>
>     final private TestUserService testUserService = new TestUserService();
>
>     @Autowired
>     private Temp1DAO temp1DAO;
>     @Override
>     @Required
>     final public void setTemp1DAO(final Temp1DAO temp1dao){
>         temp1DAO = temp1dao;
>     }
>
>     public UserServiceImpl(){
>         super();
>         //InjectorHolder.getInjector().inject(this);//<-- VERY IMPORTANT to
> get Spring DI to work.
>     }
>
>     /* (non-Javadoc)
>      * @see
> uk.co.company.product.business.spring.UserService#authenticate(java.lang.String,
> java.lang.String)
>      */
>     @Override
>     @Transactional
>     final public boolean authenticate(final String userName, final String
> password){
>         final Temp1 temp1 = new Temp1();
>         temp1.setValue(userName);
>         temp1DAO.save(temp1);
>         return testUserService.authenticate(userName, password);
>     }
>
>     /* (non-Javadoc)
>      * @see
> uk.co.company.product.business.spring.UserService#getRoles(java.lang.String,
> boolean)
>      */
>     @Override
>     @Transactional
>     final public Roles getRoles(final String userName, final boolean
> signedIn){
>         return testUserService.getRoles(userName, signedIn);
>     }
> }
>
>
> Temp1DAOImpl.java:
>
> @Repository
> public class Temp1DAOImpl extends AbstractTemp1DAO implements Temp1DAO{
>     private static final Log log = LogFactory.getLog(Temp1DAOImpl.class);
>
>     public Temp1DAOImpl(){
>         super();
>         log.debug("Temp1DAO created.");
>     }
>
>     @Autowired
>     public void init(final SessionFactory factory) {
>         setSessionFactory(factory);
>     }
> }
>
>
>
>
> ------------------------------
>  View message @
> http://apache-wicket.1842946.n4.nabble.com/help-me-please-Wicket-Spring-Hibernate-configuration-woes-tp3088768p3089284.html
>
> To start a new topic under Apache Wicket, email
> ml-node+1842946-398011874-65...@n4.nabble.com<ml-node%2b1842946-398011874-65...@n4.nabble.com>
> To unsubscribe from Apache Wicket, click 
> here<http://apache-wicket.1842946.n4.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=1842946&code=amNnYXJjaWFtQGdtYWlsLmNvbXwxODQyOTQ2fDEyNTYxMzc3ODY=>.
>
>



-- 
Sincerely,
JC (http://www.linkedin.com/in/jcgarciam)
--Anyone who has never made a mistake has never tried anything new.--

-- 
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/help-me-please-Wicket-Spring-Hibernate-configuration-woes-tp3088768p3089321.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to