2009年4月30日星期四

Wicket+Guice+Warp-Persist+Hibernate配置

Wicket1.4中已经有独立的Guice模块,但Guice只是一个IoC框架,不支持对事务等的管理;Warp-Persist是Guice下的一个支持事务管理的框架,它支持多种ORM框架,如:Hibernate、Jpa等。当前,配置Wicket+Guice+Warp-Persist+Hibernate已经非常简单,几个步骤即可:

1. download相应框架的jar包和运行时必须的lib;Guice当前的版本已经升级到2.0 snapshot,只需要guice-core.jar和aopalliance.jar,warp-persist也只需求找一个最新的jar包即可;Wicket和Hibernate所需的lib比较多,主要需要注意cglib和slf4j(日志)。

2. 创建一个Guice的Module,扩展AbstractModule即可。

3. Module中首先装载Warp-Persist:
install(PersistenceService.usingHibernate().across(UnitOfWork.REQUEST).buildModule());

4. 然后配置hibernate configuation,我这里用的是AnnotationConfiguration,切记:configuration中一定要指定current_session_context_class这个参数。hibernate.cfg.xml放在WEB-INF/classes目录下。
AnnotationConfiguration result = new AnnotationConfiguration();
result.configure(ServiceModule.class.getResource("/hibernate.cfg.xml"));
result .setProperty("hibernate.current_session_context_class", "managed");
bind(Configuration.class).toInstance(result);


5. 最后,配置web.xml,一定要注意Warp‘s Filter和WicketFilter的位置,Warp‘s Filter一定要放置在WicketFilter的前面。并且指定WicketFilter的applicationFactoryClassName和module参数。
<filter>
<filter-name>sessionPerRequestFilter<filter-name>
<filter-class>com.wideplay.warp.persist.PersistenceFilter<filter-class>
</filter>
<filter-mapping>
<filter-name>sessionPerRequestFilter<filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>

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

<init-param>
<param-name>applicationFactoryClassName<param-name>
<param-value>org.apache.wicket.guice.GuiceWebApplicationFactory<param-value>
</init-param>
<init-param>
<param-name>module<param-name>
<param-value>com.deversoft.test.guice.WicketModule<param-value>
</init-param>
<init-param>
<param-name>wicket-guice.stage<param-name&gt
<param-value>DEVELOPMENT<param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>wicketFilter<filter-name>
<url-pattern>/*<url-pattern>
</filter-mapping>



参考资料:
  1. Bleeding Edge Transactional Wicket Web Applications with Warp and Guice
  2. Warp
  3. Wicket
  4. Google-Guice

没有评论:

发表评论