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