Como trabalhar com componentes e Jobs no Vraptor com TaskScheduler Spring  XML
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Autor Mensagem
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Caros, boa tarde.

Em minha aplicação necessito de alguns jobs com scopo de aplicação. E como se sabe não conseguimos injetar os componentes de request nesses jobs de application. Enfim, preciso de vários Daos e outros componentes nesses jobs.

O que devo fazer para utilizar estes componentes em meus jobs? Devo duplicar esses componentes para application scoped? Ou seja duplicar vários daos, sessionfactorys e etc, para poder trabalhar com eles dentro do job? Ou existe outra maneira de fazer isso de forma "correta"?

[]'s
Leonardo
[MSN] [ICQ]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

o problema é que os jobs executam fora de requisições, então vc não pode usar nenhum componente de request ou session...


um dos jeitos de resolver o problema é criar controllers que executam as lógicas e os jobs chamarem urls desses controllers... daí vc faz de um jeito que esses controllers só possam ser chamados desses jobs.

--
Caelum
www.caelum.com.br

leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Lucas Cavalcanti wrote:o problema é que os jobs executam fora de requisições, então vc não pode usar nenhum componente de request ou session...


um dos jeitos de resolver o problema é criar controllers que executam as lógicas e os jobs chamarem urls desses controllers... daí vc faz de um jeito que esses controllers só possam ser chamados desses jobs.


Entendi lucas, obrigado pela dica. Uma dúvida: É possível resgatar, apartir desse job, informações de dominio, contexto e etc? Para não ficar hardcode a chamada da URL, de forma a ficar mais dinâmico. Tentei injetar o HttpServletRequest e também não foi possível.

Mas a dica já resolveu o problema... valew!


This message was edited 1 time. Last update was at 19/10/2011 15:55:52

[MSN] [ICQ]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

injete o ServletContext, assim vc consegue qual é o context-path...


e como vc tá no servidor vc pode chamar por localhost:8080

--
Caelum
www.caelum.com.br

leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

Lucas Cavalcanti wrote:injete o ServletContext, assim vc consegue qual é o context-path...


e como vc tá no servidor vc pode chamar por localhost:8080



Opa funcionou perfeitamente! Thanks!
[MSN] [ICQ]
wpivotto
Thread.start()

Membro desde: 04/01/2010 14:44:33
Mensagens: 34
Offline

leoloko esse projeto pode ajudar

https://github.com/wpivotto/vraptor-tasks

Criando algumas classes daria para fazer algo desse tipo:

This message was edited 1 time. Last update was at 23/10/2011 21:33:08

leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

wpivotto wrote:leoloko esse projeto pode ajudar

https://github.com/wpivotto/vraptor-tasks

Criando algumas classes daria para fazer algo desse tipo:



Parece legal este método, utilizando essa forma, como restringiria no controller a chamada somente apartir dessa task?

This message was edited 1 time. Last update was at 24/10/2011 07:14:11

[MSN] [ICQ]
wpivotto
Thread.start()

Membro desde: 04/01/2010 14:44:33
Mensagens: 34
Offline

leoloko wrote:
wpivotto wrote:leoloko esse projeto pode ajudar

https://github.com/wpivotto/vraptor-tasks

Criando algumas classes daria para fazer algo desse tipo:



Parece legal este método, utilizando essa forma, como restringiria no controller a chamada somente apartir dessa task?



Então, uma maneira de fazer isso é assim: https://gist.github.com/1312993

Utilizando um interceptor que bloqueia qualquer requisição fora do servidor (127.0.0.1)
leoloko
JavaChild
[Avatar]
Membro desde: 15/05/2005 12:05:19
Mensagens: 149
Offline

wpivotto wrote:


Então, uma maneira de fazer isso é assim: https://gist.github.com/1312993

Utilizando um interceptor que bloqueia qualquer requisição fora do servidor (127.0.0.1)


Show de bola, essa eu já implementei, mas o esquema do vraptor com o quartz ainda não, mas em breve farei.


Agora uma outra questão, implementei dois jobs aqui, ambos rodam de 1 em 1 minuto, porém um dos jobs demora 5 minutos pra executar, enquanto o mais demorado está executando o outro não roda ele fica esperando o de 5 terminar. Alguém saberia me dizer porque isso está ocorrendo? Pois pra mim esses jobs eram multi-thread, não deveriam possuir nenhum tipo de dependência, ou seja, se um dos jobs demorar 30 minutos pra rodar, o outro deveria continuar rodando de 1 em 1 minuto em paralelo, pelo menos esse é o meu conceito... hehehe

[]'s
Leonardo

This message was edited 1 time. Last update was at 26/10/2011 16:14:58

[MSN] [ICQ]
miltonjr27
Thread.start()

Membro desde: 10/10/2011 16:26:08
Mensagens: 28
Offline

wpivotto wrote:leoloko esse projeto pode ajudar

https://github.com/wpivotto/vraptor-tasks

Criando algumas classes daria para fazer algo desse tipo:



Estou precisando criar uma classe para rodar em background num sistema que estou implementando. Quais classes devo criar para poder utilizar esse Task e por que o VRaptor não reconhece a interface Task aqui? É preciso configurar o Spring para utilizar essa anotação @Scheduled?
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

isso é um plugin do VRaptor:

https://github.com/wpivotto/vraptor-tasks

--
Caelum
www.caelum.com.br

 
Índice dos Fóruns » Frameworks e Bibliotecas brasileiros
Ir para:   
Powered by JForum 2.1.8 © JForum Team