Hello all,
i try to do a simple web application with the classic layout
Wicket->Spring->Hibernate
When i try to make a simple request i receive the following error.
WicketMessage: Error attaching this container for rendering: [Page class =
ch.myexample.ListContacts, id = 0, version = 0]
Root cause:
org.hibernate.HibernateException: createCriteria is not valid without active
transaction
In IMHO all file conf seams to be correct correct... bat i don't undestand
hibenate dosen't find the correct session.
At UI level i load the data with LoadableDetachableModel
IModel contactsModel = new LoadableDetachableModel() {
protected Object load() {
return
WicketApplication.get().getContactService().findAllContacts();
}
};
--applicationContext from here --
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<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>
<!-- hibernate session factory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
<prop key="hibernate.connection.pool_size">5</prop>
<prop
key="hibernate.current_session_context_class">thread</prop>
<prop key="hibernate.show_sql">true</prop>
<prop
key="hibernate.cglib.use_reflection_optimizer">true</prop>
<prop
key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop
key="hibernate.hibernate.cache.use_query_cache">true</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>
ch.myexample.domain.Contact
</value>
</list>
</property>
</bean>
<!-- setup transaction manager -->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory" />
</property>
</bean>
<tx:annotation-driven />
<bean id="ContactDao" class="ch.myexample.dao.impl.ContactDaoImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
<bean id="LocalServiceService"
class="ch.myexample.services.LocalServiceImpl">
<property name="contactDao" ref="ContactDao" />
</bean>
<bean id="wicketApplication" class="ch.myexample.WicketApplication">
</bean>
</beans>
--
--applicationContext to here --
and web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value> classpath:applicationContext.xml</param-value>
</context-param>
<filter>
<filter-name>wicket.WebProject</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>applicationBean</param-name>
<param-value> wicketApplication</param-value>
</init-param>
</filter>
<filter>
<filter-name>opensessioninview</filter-name>
<filter-class>
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>opensessioninview</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>wicket.WebProject</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
Could you tell me where is my mistake please
Cheers
--Richard