So I took the plunge and tried to implement Guice + Warp Persist to
solve my lazy loading issues.  I know I may not have it all figured out
with regards to lazy loading but I can't even get simple data access to
work now.  Sorry for all the questions and issues.  Can anyone provide
some insight on what is wrong or what I am missing. The Hibernate
configuration succeeds in the getModule() method. 

 

Thanks.

 

Code is below:

 

 

My Web Application

 

public class WicketApplication extends WebApplication {

 

                private PersistenceService service;

                

                public WicketApplication() {

                }

 

                @Override

                public Class<? extends Page> getHomePage() {

                                return Home.class;

                }

 

                @Override

                public Session newSession(Request request, Response
response) {

                                return new MySession(request);

                }

 

                @Override

                protected void init() {

                                

                                Injector injector =
Guice.createInjector(PersistenceService.usingHibernate()

 
.across(UnitOfWork.REQUEST).transactedWith(

 
TransactionStrategy.LOCAL).buildModule(),

 
getModule());

                                

                                addComponentInstantiationListener(new
GuiceComponentInjector(this, injector));

                                

                                service =
injector.getInstance(PersistenceService.class);

                                service.start();

                                injector.injectMembers(this);

                                                                

                }

                

    private Module getModule() {

        return new Module() {

            public void configure(Binder binder) {

                

                                // default values from development

                                String connectionUrl = "<the url>";

                                String username = "<the username>";

                                String password = <the password>";

                                

                                try {

                                                InitialContext context =
new InitialContext();

                                                connectionUrl = (String)
context.lookup("java:comp/env/hibernate.connection.url");

                                                username = (String)
context.lookup("java:comp/env/hibernate.connection.username");

                                                password = (String)
context.lookup("java:comp/env/hibernate.connection.password");

                                } catch (NamingException e1) {

                                                // TODO Auto-generated
catch block

                                                e1.printStackTrace();

                                }

 

                                // annotation and xml

                                final AnnotationConfiguration config =
new AnnotationConfiguration().configure();

 
config.setProperty("hibernate.connection.url", connectionUrl);

 
config.setProperty("hibernate.connection.username", username);

 
config.setProperty("hibernate.connection.password", password);

 
config.setProperty("hibernate.current_session_context_class",
"managed");

                                

                

                binder.bind(Configuration.class).toInstance(config);

            }

        };

    }

}

 

My web.xml

 

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://java.sun.com/xml/ns/javaee";
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd";
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"; id="WebApp_ID"
version="2.5">

  <display-name>MyApp</display-name>

  <context-param>

    <param-name>configuration</param-name>

    <param-value>development</param-value>

  </context-param>

 

<!-- Warp Filter -->

          <filter>

                <filter-name>warpSessionFilter</filter-name>

 
<filter-class>com.wideplay.warp.hibernate.SessionPerRequestFilter</filte
r-class>

        </filter>

 

        <filter-mapping>

                <filter-name>warpSessionFilter</filter-name>

                <url-pattern>/*</url-pattern>

        </filter-mapping>

<!-- Warp Filter --> 

  

  <filter>

    <filter-name>wicket.filter</filter-name>

 
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class
>

    <init-param>

      <param-name>applicationClassName</param-name>

      <param-value>com.myapp.WicketApplication</param-value>

    </init-param>

  </filter>

  <filter-mapping>

    <filter-name>wicket.filter</filter-name>

    <url-pattern>/*</url-pattern>

  </filter-mapping> 

</web-app>

 

 

And my Hibernate Base Generic DAO:

 

public abstract class HibernateGenericDao implements GenericDao {

 

                private final Class persistentClass;

                

                @Inject

                Provider<Session> hibernateSession;

                

                public HibernateGenericDao(Class persistentClass) {

                                this.persistentClass = persistentClass;

                }

 

                @Override

                public List<Object> findAll() {

                                Session session =
hibernateSession.get();

                                List objects = null;

                                Transaction tx = null;

                                try {

                                                tx =
session.beginTransaction();

                                                Criteria criteria =
session.createCriteria(persistentClass);

                                                objects =
criteria.list();

                                                tx.commit();

                                                return objects;

                                } catch (HibernateException e) {

                                                if (tx != null)
tx.rollback();

                                                throw e;

                                } finally {

                                }                              

                }

}

Reply via email to