Spring + Wicket + JPA

49 views
Skip to first unread message

Diogo Capistrano

unread,
Aug 3, 2009, 2:07:45 PM8/3/09
to wicke...@googlegroups.com

Alguém já fez a integração do wicket ao spring integrado com jpa?

Se sim teriam alguma material para indicar?

 

 

diogo.capistrano

unread,
Aug 3, 2009, 6:24:17 PM8/3/09
to Wicket em Português
E mais uma coisa, teria algum ganho integrando o spring ao wicket?

On 3 ago, 15:07, "Diogo Capistrano" <diogo.capistr...@gmail.com>
wrote:

Cassio

unread,
Aug 4, 2009, 6:55:40 AM8/4/09
to wicke...@googlegroups.com
Hehe acredito que você SÓ vai ter ganhos ao integrar o Wicket ao Spring.
No momento estou integrando Wicket, Spring, JPA (Hibernate) e jBPM!
E está freakin awsome!

2009/8/3 diogo.capistrano <diogo.ca...@gmail.com>

Thiago Senna

unread,
Aug 4, 2009, 7:44:09 AM8/4/09
to wicke...@googlegroups.com
dê uma procurada por 'wicket-iolite'. Trata-se de um archetype com tudo já integrado... você pode usá-lo como base/referência para o seu projeto! ;)

http://wicketstuff.org/confluence/display/STUFFWIKI/Wicket-Iolite

2009/8/4 Cassio <zig...@gmail.com>



--
Thiago Senna
Arquiteto Java em Pet Projects / Desenvolverdor Java Pleno / Senior de vez em quando / Leitor de vários livros / Pleno em adotar tecnologias desconhecidas

Marcell Manfrin Barbacena

unread,
Aug 4, 2009, 8:43:54 AM8/4/09
to wicke...@googlegroups.com
Eu só ainda não consegui utilizar hot-deploy com Spring, wicket,
maven2, e eclipse... alguma dica pessoal?

[]s

===
"Nobody knows who i really am
I never felt this empty before
And if I never need someone to come along
Who's gonna comfort me and keep me strong?"
--
Marcell Manfrin Barbacena
barb...@gmail.com
mbarb...@tre-pb.gov.br
Skype: callto://marcell84bruk
+55 (83) 8808-8555 (Mobile)
+55 (83) 3224-5945 (Home)



2009/8/4 Thiago Senna <trs...@gmail.com>:

Alan Romaniuc

unread,
Aug 4, 2009, 9:55:06 AM8/4/09
to wicke...@googlegroups.com
Cassio,

Voce tem problemas em juntar o jbpm e o JPA ao mesmo tempo (como
variaveis salvas). Vc esta usando o jbpm 4 certo?

Estou perguntando, pq vou ter q fazer o mesmo q vc...

Valeu



2009/8/4 Cassio <zig...@gmail.com>:
--
Albert

Cassio

unread,
Aug 4, 2009, 10:00:57 AM8/4/09
to wicke...@googlegroups.com
Estou utilizando o jBPM4.

Quando utilizo conexões diferentes (uma para os DAOs e outra para o jBPM) tudo funciona perfeitamente!
No momento estou tendo problemas quando tento utilizar a mesma conexão e transação para os processos executados pelo jBPM.

Está ocorrendo este erro: No CurrentSessionContext configured!
O jBPM está tentando buscar uma sessão já aberta do sessionFactory mas provavelmente o JPA não trabalha desta forma e tudo vai por água abaixo...

Estou esperando resposta de alguns fóruns onde postei este problema.


2009/8/4 Alan Romaniuc <a.rom...@gmail.com>

bruno....@gmail.com

unread,
Aug 4, 2009, 10:02:01 AM8/4/09
to wicke...@googlegroups.com
Você deve utilizar JTA para isso. :-)

[]'s
Bruno

Cassio

unread,
Aug 4, 2009, 10:06:41 AM8/4/09
to wicke...@googlegroups.com
É... vou ser obrigado a citar o Chapolin Colorado
- "Suspeitava desde o princípio!"

Hehe, valeu pela confirmação Bruno!

[]s

&gt



tetsuo

unread,
Aug 4, 2009, 4:22:06 PM8/4/09
to wicke...@googlegroups.com
Ou, criar um CurrentSessionContext customizado que pega a Session a partir do JPA (EntityManager).

JTA seria para utilizar 2PC? Se for o caso, ainda haveriam duas conexões, não (apenas seriam commitadas em conjunto)?

Tetsuo




&gt



Cassio

unread,
Aug 4, 2009, 4:45:15 PM8/4/09
to wicke...@googlegroups.com
Eu desisto de tentar configurar um transaction manager para JTA usando o jetty... ainda mais usando o maven-jetty-plugin.

2009/8/4 tetsuo <ronald...@gmail.com>

Diogo Capistrano

unread,
Aug 4, 2009, 6:50:33 PM8/4/09
to wicke...@googlegroups.com

Como eu pego o context do spring dentro de um componente do wicket? Para que o spring instancie a minha DAO.

Ou tem como fazer isso por annotation?

Diogo Capistrano

unread,
Aug 4, 2009, 7:34:42 PM8/4/09
to wicke...@googlegroups.com

Estou recebendo este erro na hora que entro na página para listar o conteúdo do banco

 

SEVERE: Error attaching this container for rendering: [Page class = br.com.game.transformer.view.games.ListGames, id = 2, version = 0]

org.apache.wicket.WicketRuntimeException: Error attaching this container for rendering: [Page class = br.com.game.transformer.view.games.ListGames, id = 2, version = 0]

        at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1717)

        at org.apache.wicket.Component.onBeforeRender(Component.java:3757)

        at org.apache.wicket.Page.onBeforeRender(Page.java:1458)

        at org.apache.wicket.Component.internalBeforeRender(Component.java:1037)

        at org.apache.wicket.Component.beforeRender(Component.java:1071)

        at org.apache.wicket.Component.prepareForRender(Component.java:2193)

        at org.apache.wicket.Component.prepareForRender(Component.java:2220)

        at org.apache.wicket.Page.renderPage(Page.java:885)

        at org.apache.wicket.request.target.component.BookmarkablePageRequestTarget.respond(BookmarkablePageRequestTarget.java:249)

        at org.apache.wicket.request.AbstractRequestCycleProcessor.respond(AbstractRequestCycleProcessor.java:104)

        at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1194)

        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1265)

        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1366)

        at org.apache.wicket.RequestCycle.request(RequestCycle.java:498)

        at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:444)

        at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:282)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)

        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)

        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)

        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)

        at java.lang.Thread.run(Thread.java:619)

Caused by: java.lang.NullPointerException

        at br.com.game.transformer.view.games.ListGames$LoadGames.load(ListGames.java:64)

        at org.apache.wicket.model.LoadableDetachableModel.getObject(LoadableDetachableModel.java:119)

        at org.apache.wicket.Component.getDefaultModelObject(Component.java:1604)

        at org.apache.wicket.markup.html.list.PageableListView.getViewSize(PageableListView.java:141)

        at org.apache.wicket.markup.html.list.ListView.onPopulate(ListView.java:524)

        at org.apache.wicket.markup.repeater.AbstractRepeater.onBeforeRender(AbstractRepeater.java:131)

        at org.apache.wicket.Component.internalBeforeRender(Component.java:1037)

        at org.apache.wicket.Component.beforeRender(Component.java:1071)

        at org.apache.wicket.MarkupContainer.onBeforeRenderChildren(MarkupContainer.java:1705)

        ... 27 more

 

 

 

A minha classe está desta maneira

 

public final class ListGames extends HomePage {

   

    private static Games GAMES;

 

    public ListGames() {

        super ();

        ….

    }

 

    public ListGames(PageParameters parameters) {

        super();

         ….

    }

 

 

 

    private final class LoadGames extends LoadableDetachableModel {

 

        private int page = 0;

        private int totalPerPage = 10;

 

        @SpringBean( name = "gameDao" )

        private GameDAO dao;

 

        @Override

        protected Object load() {

            return this.dao.findGameEntities(this.totalPerPage, this.page);

        }

 

        public LoadGames() {

        }

 

        public LoadGames(int page) {

            this.page = page;

        }

 

    }

.

.

.

De: wicke...@googlegroups.com [mailto:wicke...@googlegroups.com] Em nome de Cassio
Enviada em: terça-feira, 4 de agosto de 2009 17:45
Para: wicke...@googlegroups.com
Assunto: [wicket-ptbr] Re: Spring + Wicket + JPA

 

Eu desisto de tentar configurar um transaction manager para JTA usando o jetty... ainda mais usando o maven-jetty-plugin.

Bruno Borges

unread,
Aug 4, 2009, 11:44:21 PM8/4/09
to wicke...@googlegroups.com
Cara, tem um NullPointerException no seu código. Olha o stackTrace... :-)

[]'s

Bruno Borges
blog.brunoborges.com.br
+55 21 76727099

"The glory of great men should always be
measured by the means they have used to
acquire it."
- Francois de La Rochefoucauld


2009/8/4 Diogo Capistrano <diogo.ca...@gmail.com>

Diogo Capistrano Nobre

unread,
Aug 4, 2009, 11:53:21 PM8/4/09
to wicke...@googlegroups.com
Isso eu vi e sei que ocorre porque o spring não está "injetando" a DAO na componente do wicket que irá criar a lista.
Queria ver a opinião de vocês no que eu estou fazendo de errado.

Moacir da Roza

unread,
Sep 14, 2009, 12:29:07 PM9/14/09
to Wicket em Português
Ola Pessoal vejo que vcs estão utilizando bem o Wicket com jpa e
hibernate e Spring, eu não consegui fazer absolutamente nada, minhas
Colections não populam os models mas enfim..., então pesquisando na
net, ouvi falar de um tal de Databinder, mas não gostei muito pois me
obrigaria a utilizar apenas o Hibernate e parece não se compativer
com a versao recente do wicket. O Hibernate é o que eu mais gosto de
usar, mas se desse para usar o JPA e entityManager e quem sabe o
Spring (acegi) seria mais interessante para min.

Vocês utilizam esse Databinder?


Obrigado.





On 3 ago, 19:24, "diogo.capistrano" <diogo.capistr...@gmail.com>
wrote:

Diogo Capistrano

unread,
Sep 14, 2009, 12:40:08 PM9/14/09
to wicke...@googlegroups.com
Eu utilizo wicket + spring + jpa sem problemas, você deve está fazendo
alguma coisa de errado, posta ai o seu teste que ai a gente pode ajudar :)

Abs!

-----Mensagem original-----
nome de Moacir da Roza
Enviada em: segunda-feira, 14 de setembro de 2009 13:29
Para: Wicket em Português
Assunto: [wicket-ptbr] Re: Spring + Wicket + JPA


Cristiano Kliemann

unread,
Sep 14, 2009, 3:15:04 PM9/14/09
to wicke...@googlegroups.com
Aqui onde trabalho usamos um gerenciador JTA (Atomikos) com Spring,
Hibernate, Wicket e Jetty, tanto iniciado pelo maven-jetty-plugin
quanto embarcado.

Cristiano

2009/8/4 Cassio <zig...@gmail.com>:

Alan Romaniuc

unread,
Sep 14, 2009, 8:45:35 PM9/14/09
to wicke...@googlegroups.com
O meu problema e quando uso um modalPanel, estou tendo problemas
LazyInitializationException, de resto, tudo funciona OK....

9/14 Cristiano Kliemann <crist...@gmail.com>:
--
Albert

Claudio Miranda

unread,
Sep 16, 2009, 8:08:29 AM9/16/09
to Wicket em Português
Uso o Jetty+JTA(com atomikos)+JPA e funciona muito bem.

Rodrigo Mibielli

unread,
Sep 16, 2009, 8:35:29 AM9/16/09
to wicke...@googlegroups.com
Para resolver o problema de LazyInitializationException adicione no seu web.xml as seguintes linhas:

    <filter>
        <filter-name>openEntityManager</filter-name>
        <filter-class>
               org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter
        </filter-class>
    </filter>   

   <filter>
        <filter-name>wicket.core-web</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>
    </filter>

   (O filtro acima ilustra a integração com Spring).

 E *IMPORTANTE!* : Este filtro deve ser *o primeiro* a ser declarado antes dos demais para que faça realmente efeito:

Exemplo:

   <filter-mapping>
     <filter-name>openEntityManager</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping>

   <filter-mapping>
      <filter-name>wicket.core-web</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

(openEntityManager está declarado antes de wicket.core-web que é o filtro do Wicket com Spring).

Desta forma, consegui integrar Wicket + Spring + JPA.

Além de declarar as linhas acima no seu web.xml, defina o ponto de entrada da aplicacao do Wicket dentro de um arquivo applicationContext.xml dentro de WEB-INF como abaixo:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
    http://www.springframework.org/schema/jee
    http://www.springframework.org/schema/jee/spring-jee-2.0.xsd
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
    "
    >
   
    <!-- Wicket Application Root Entry Point: -->
    <bean id="wicketApplication" class="com.test.WicketMainApplication">
    </bean>
</beans>

E dentro de WicketMainApplication dentro do metodo protected void init() adicione a seguinte declaracao:

addComponentInstantiationListener(new SpringComponentInjector(this));

Pronto! Já temos a integração entre Wicket e Spring. Para declarar um atributo de classe dentro de uma classe Wicket a ser injetado pelo Spring, utilize a notacao @SpringBean, porem esta anotacao so funciona para classes que são *componentes* do wicket. Para aqueles que nao sao (como DataProviders e modelos), voce deve declarar dentro do construtor a seguinte declaracao:

        InjectorHolder.getInjector().inject(this);


 Espero ter ajudado!

abs,

Rodrigo Mibielli.
   


2009/9/14 Alan Romaniuc <a.rom...@gmail.com>

Alan Romaniuc

unread,
Sep 19, 2009, 10:43:34 AM9/19/09
to wicke...@googlegroups.com
Obrigado pelas informações Rodrigo, mas eu já estava usando esse
padrão. O que ainda não descobri é porque isso não está funcionando
nas minhas ModalWindows.

Ninguém teve esse problema?

Até



2009/9/16 Rodrigo Mibielli <rodrigo....@gmail.com>:
--
Albert
Reply all
Reply to author
Forward
0 new messages