On Jun 10, 2011, at 10:47 AM, Tony Nelson wrote:

> Hi all,
> 
> I'm in the process of rebuilding an app that was done in Tap3 (indeed!) in 
> Tap5.  It's a small app, maybe a dozen pages used by my internal staff.  This 
> is in preparation for rebuilding the entire front of a much larger app.  But 
> that's a story for another day.
> 
> Because I want to learn all the new Tap5 goodness, I started with an new 
> project built w/ the maven archetype.  I copied over my DB classes and added 
> the Spring dependencies I needed, and wrote a test case to make sure I could 
> read and write from my dev (h2) database.
> 
> Then I created a very small page that displays a few rows from the DB in a 
> table.  The service method is trivial:
> 
>    @Log
>    public List<Office> getOffices() {
>        return officeDao.getAllOffices(); 
>    }
> 
> I fired up Jetty, and opened the page.  I really expected to get an exception 
> saying that I don't have a database session because I purposely did not 
> include the OpenSessionInView filter that I'm familiar with.  In addition I 
> didn't include the tapestry-hibernate jars because I'm not sure if it's 
> better to have Tap of Spring handle opening and closing the sessions.
> 
> I was very surprised when the page actually rendered a result from the 
> database.  I'm still not clear where the session is coming from, but that is 
> actually my problem.  I can reload my tiny test page 8 times.  On the 9th 
> time, I see:
> 
> [582385532@qtp-918884489-5] DEBUG com.starpoint.helpdesk.pages.Offices  - 
> [ENTER] getOffices()
> 
> And the browser spins.  I can open the H2 DB in the H2 admin console and 
> issue queries against it, so the H2 instance is fine.
> 
> Obviously I'm either out of sessions or connection pool slots.  My goal is to 
> be able to use the Spring @Transactional annotation because in the larger app 
> rewrite I have several dozen business layer Spring managed beans that depend 
> on it.
> 
> I have tried adding Springs OpenSessionInViewFilter, and I've tried adding a 
> dependency on tapestry-hibernate-core.  Neither of these solutions have 
> helped.
> 
> Can anyone offer any suggestions as to where the session is actually coming 
> from so that I can try to figure out how to get the session closed or 
> released?
> 
> I have Spring configured like this:
> 
> <?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:context="http://www.springframework.org/schema/context";
>       xsi:schemaLocation="http://www.springframework.org/schema/beans
>           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
>           http://www.springframework.org/schema/context
>           http://www.springframework.org/schema/context/spring-context.xsd";
>        default-autowire="byName" >
> 
>    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
>        <property name="driverClassName" value="${dataSource.driverClass}" />
>        <property name="username" value="${dataSource.user}" />
>        <property name="password" value="${dataSource.password}" />
>        <property name="url" value="${dataSource.jdbcURL}" />
>    </bean>
> 
>    <!-- Hibernate session factory -->
>    <bean id="sessionFactory"
>          
> class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
>        <property name="dataSource" ref="dataSource"/>
>        <property name="configLocation" value="classpath:/hibernate.cfg.xml"/>
>    </bean>
> 
>    <!-- Hibernate transaction manager -->
>    <bean id="transactionManager"
>          
> class="org.springframework.orm.hibernate3.HibernateTransactionManager">
>        <property name="sessionFactory" ref="sessionFactory"/>
>    </bean>
> 
> 
>    <context:component-scan base-package="com.starpoint.helpdesk.dao" />
>    <context:annotation-config/>
> 
> </beans>
> 
> and my web.xml is simply:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE web-app
>        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>        "http://java.sun.com/dtd/web-app_2_3.dtd";>
> <web-app>
>    <display-name>Starpoint Help Desk Tapestry 5 Application</display-name>
> 
>    <context-param>
>        <!--
>            The only significant configuration for Tapestry 5, this informs 
> Tapestry
>            of where to look for pages, components and mixins.
>        -->
>        <param-name>tapestry.app-package</param-name>
>        <param-value>com.starpoint.helpdesk</param-value>
>    </context-param>
> 
>    <context-param>
>        <param-name>contextConfigLocation</param-name>
>        <param-value>classpath:/applicationContext.xml</param-value>
>    </context-param>
> 
>    <filter>
>        <filter-name>app</filter-name>
>        
> <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
>    </filter>
> 
>    <filter-mapping>
>        <filter-name>app</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
> 
> </web-app>
> 

I turned on debug logging and get this when the request hangs:

[1828511825@qtp-68769219-3] DEBUG com.starpoint.helpdesk.pages.Offices  - 
[ENTER] getOffices()
[1828511825@qtp-68769219-3] DEBUG 
org.springframework.orm.hibernate3.SessionFactoryUtils  - Opening Hibernate 
Session
[1828511825@qtp-68769219-3] DEBUG org.hibernate.impl.SessionImpl  - opened 
session at timestamp: 13077185704
[1828511825@qtp-68769219-3] DEBUG org.hibernate.jdbc.AbstractBatcher  - about 
to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[1828511825@qtp-68769219-3] DEBUG org.hibernate.jdbc.ConnectionManager  - 
opening JDBC connection

So maybe I should have sent this question to the Spring list?

All the same, does anyone have any insight into what I may have done wrong?


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

Reply via email to