| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/12/2011 12:23:19
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
Estou tentando migrar uma aplicação que utiliza JBoss 4 para o JBoss 7.
A aplicação utiliza diversas bibliotecas, .jar pro Jasper, Lucene, etc.
Andei lendo sobre os módulos do novo JBoss e vi que algumas bibliotecas já estão integradas como "módulo", por exemplo API do Apache Commons.
E no caso, bastaria setar no MANIFEST como depedência e pronto.
Até ai deu certo, mas e as Libs que não estão como módulo?
Achei que fosse simplesmente colocar na pasta standalone/deployment/lib mas não deu certo.
Quando subo o server aparece logo um ClassNotFoundException.
Alguém sabe o que precisa fazer para minhas libs que já funcionavam no JBoss anterior funcionar no novo também?
Valeu
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/01/2012 07:18:55
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
Resolvi o problema criando meu próprio módulo, com todas as libs que a minha aplicação utiliza.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 11:11:00
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
danilowz wrote:Resolvi o problema criando meu próprio módulo, com todas as libs que a minha aplicação utiliza.
Tenho exatamente o mesmo problema que foi descrito no início deste post, porém eu tenho a limitação de não poder cadastrar meus módulos no diretório modules, pois só tenho permissão de leitura.
Alguém conhece alguma forma de carregar os módulos direto do WEB-INF/lib da aplicação?
Obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 11:24:08
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
cara, se você não pode trabalhar como módulo,
acho que só resta pra você colocar as libs no WEB-INF/lib no caso de .war e ear/lib no caso do .EAR
funciona normalmente.
o chato é ficar "replicando" biblioteca se você tiver várias app.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 11:58:15
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
danilowz wrote:cara, se você não pode trabalhar como módulo,
acho que só resta pra você colocar as libs no WEB-INF/lib no caso de .war e ear/lib no caso do .EAR
funciona normalmente.
o chato é ficar "replicando" biblioteca se você tiver várias app.
Danilowz, obrigado por responder.
É um projeto war e deixei todos os jars dentro do WEB-INF/lib, como faria com o Tomcat, só que o JBoss AS 7.1, não acha nenhuma classe e não deixa nem fazer o deploy...
Não sei se está faltando algum arquivo de configuração ou coisa do tipo, no Glassfish 3.1.1 o problema é o mesmo.
No link abaixo tem mais detalhes do problema.
http://www.guj.com.br/java/267293-webapp-deploy-jboss-as-71glassfish-311
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 12:09:40
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
Que erro você está tendo ao deployar?
Bem cara, eu não cheguei a subir um .war, eu subi um .EAR que tinha um .war dentro
No caso eu tinha algumas bibliotecas de core do EAR, e algumas libs de view no .war
rolou sem problemas.
Creio que não deveria ter problemas rodando um .war sozinho, ainda mais que na nova especificação você não precisa mais empacotar um .war pra rodar EJB (por exemplo).
Eu tentaria:
- Subir o .war sozinho, setando no MANIFEST o Class-Path para toda as /libs
se não der, tente empacotar seu .war em um .ear (é estranho funfar assim e não sozinho, mas vale a pena tentar)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 12:56:19
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
Esse é o erro na hora do deploy:
JEE/WebContent/META-INF/MANIFEST.MF está assim:
Classe que está dentro do h3.jar, que o Weld deveria ter enxergado para ser injetada:
A interface que está no projeto Web:
A classe que deveria ter recebido injeção:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 13:36:47
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
cara, existe algum motivo especial para vc instanciar manualmente seu EntityManagerFactory ?
você podia aproveitar que está usando um servidor de aplicação e utilizar o @PersistenceContext ou até mesmo usar o Seam Persistence pra container Web.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 13:53:23
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
bem, quanto ao erro.
isso não está parecendo falta de biblioteca do CDI.
se não teria dado pau nos outros dois @Inject também, mas aí diz que só foi no atributo "observer".
o que tá estranho, é esse construtor padrão protected da classe HibernateSessionFactory.
deixa ele público que talvez o CDI não consiga instanciar assim.
This message was edited 2 times. Last update was at 09/03/2012 13:55:17
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 14:10:38
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
danilowz wrote:cara, existe algum motivo especial para vc instanciar manualmente seu EntityManagerFactory ?
você podia aproveitar que está usando um servidor de aplicação e utilizar o @PersistenceContext ou até mesmo usar o Seam Persistence pra container Web.
Danilowz, concordo com tudo o que você disse, as implementações não estão como deveriam. Tanto que assim que conseguir superar o problema atual de deploy, a maior parte desse código vai ser refatorado.
Alterei o Manifest para adicionar os outros jars que talvez estejam fazendo falta na implementação concreta do Observador:
Também aumentei o nível de log do JBoss para o máximo:
Mas mesmo com esse nível de log, ainda não tenho pistas de onde está o problema. Talvez seja a falta de algum arquivo xml de configuração exclusivo do JBoss no diretório WEB-INF, pois tenho apenas: beans.xml (vázio), faces-config.xml e o web.xml.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 14:20:12
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
danilowz wrote:bem, quanto ao erro.
isso não está parecendo falta de biblioteca do CDI.
se não teria dado pau nos outros dois @Inject também, mas aí diz que só foi no atributo "observer".
o que tá estranho, é esse construtor padrão protected da classe HibernateSessionFactory.
deixa ele público que talvez o CDI não consiga instanciar assim.
Eu também desconfiei disso, e utilizei o JBoss Aquillian Junit (http://www.jboss.org/arquillian) para testar se ele poderia ser injetado desta forma. O teste passa sem nenhum erro:
Se eu copiar o package com a classe HibernateSessionFactory, dentro da aplicação web, o deploy é feito com sucesso.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 14:20:16
|
digaoneves
GUJ Ranger
![[Avatar]](/images/avatar/ede1b1327caaacabbae94b39575445cb.jpg)
Membro desde: 14/05/2011 14:24:45
Mensagens: 950
Localização: São Paulo - Butantã
Offline
|
danilowz, você pode mostrar a estrutura de como fez seu module?
as pastas e o xml.. só um exemplo.. porque acho que isso pode resolver um problema que estou tendo.
Obrigado
|
- Rodrigo Sasaki |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 14:47:23
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
thiago-dev
aquelas classes "Bean" e "Annoted" estão no mesmo projeto dessa classe que está dando pau? todas estão no h3.jar?
digaoneves
cria uma estrutura de pastas, ex: /jboss7/modules/br/com/teste/main
dentro da pasta main/, cria um arquivo module.xml com a estrutura:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="br.com.teste">
<resources>
<resource-root path="biblioteca1.jar"/>
<resource-root path="biblioteca2.jar"/>
</resources>
</module>
e ai coloca a biblioteca1.jar e biblioteca2.jar dentro da mesma main/ também junto com o module.xml
para criar o módulo é só isso,
depois quando for utilizar o módulo em algum app.
no META-INF/MANIFEST dessa aplicação deve conter uma linha: "Dependencies: br.com.teste" que é o nome do módulo criado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 14:53:08
|
thiago-dev
Entusiasta Java
Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline
|
danilowz wrote:thiago-dev
aquelas classes "Bean" e "Annoted" estão no mesmo projeto dessa classe que está dando pau? todas estão no h3.jar?
digaoneves
cria uma estrutura de pastas, ex: /jboss7/modules/br/com/teste/main
dentro da pasta main/, cria um arquivo module.xml com a estrutura:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="br.com.teste">
<resources>
<resource-root path="biblioteca1.jar"/>
<resource-root path="biblioteca2.jar"/>
</resources>
</module>
e ai coloca a biblioteca1.jar e biblioteca2.jar dentro da mesma main/ também junto com o module.xml
para criar o módulo é só isso,
depois quando for utilizar o módulo em algum app.
no META-INF/MANIFEST dessa aplicação deve conter uma linha: "Dependencies: br.com.teste" que é o nome do módulo criado.
Não, elas pertencem ao container JEE dentro do package javax.enterprise.inject.spi.
É uma pena eu não ter permissão de escrita nessa pasta modules, ai o problema já estaria resolvido...
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/03/2012 15:01:47
|
danilo.akamine
JavaBaby
![[Avatar]](/images/avatar/17373c334f8faa51a00155d7a014ccf0.jpg)
Membro desde: 08/10/2009 17:12:03
Mensagens: 75
Offline
|
thiago-dev
engraçado, a classe injetada no mesmo projeto rola?
cara, não quer tentar empacotar seu .war num .EAR ?
pega esse projeto h3.jar e transforma em módulo tbm.
eles estando no mesmo .EAR funciona perfeitamente, pq isso já cheguei a fazer, tudo bem que era um módulo EJB, mas pelo menos pra tentar descobrir o erro você podia ver se funciona ai também.
outra coisa que tive que fazer, é criar um META-INF/beans.xml dentro do módulo EJB tbm.
não sei o porquê mas não tava rolando se não tivesse o beans.xml nos dois módulos.
|
|
|
 |
|
|
|
|