Migração aplicação: BES para Jboss

6 respostas
plentz

Bom pessoal, probleminha grande. Estou migrando uma aplicação que atualmente roda no BES(Borland Enterprise Server) para o Jboss. Como se não bastasse, existem outros detalhes:

  • O Java utilizado era o 1.4.2 e passará a ser o 5 update 7.
  • A aplicação foi feita inteira com uso do JBuilder, com wizards e semelhantes.
  • O banco de dados é Ingress (que acredito não dará dor de cabeça)
  • A pasta com os fontes tem ~300mb.
  • Atualmente usam Struts, EJB 1.x e EJB 2.0
  • Session Bean pra Entity Bean 1:1
  • Absolutamente nada de XDoclet.

Conforme for encontrando problemas(e também as soluções) vou deixando no diário de bordo.

PS: Eu já tinha colocado esse tópico e duas pessoas tinham respondido(nem lembro quem tinha sido), mas o gênio aqui foi responder e acabou apagando o tópico :frowning:

6 Respostas

plentz

Surpresa boa: existia um ejb com um método equals() que sempre retornava false(estava faltando um return dentro do if). O Jboss detectou isso e não deixou fazer o deploy até acertar o problema.

plentz

Bom, depois de muitaaa alteração, cheguei num ponto agora que não ta tão fácil de achar a origem do problema. Starto o Jboss e ele começa a fazer deploy dos EJB, até ai tudo normal. Após passar por diversos EjbModules ele lança a exceção abaixo e não completa o deploy de mais nenhum EJB.

19:19:39,861 INFO  [EjbModule] Deploying MensagemSessionFacade
19:19:39,885 INFO  [EjbModule] Deploying MensagemControleSessionFacade
19:19:40,726 WARN  [EJBDeployer] Verify failed; continuing
java.lang.NoClassDefFoundError: org/cieers/pempresa/EmpEfetividade
       at java.lang.Class.getDeclaredMethods0(Native Method)
       at java.lang.Class.privateGetDeclaredMethods(Class.java:2365)
       at java.lang.Class.privateGetPublicMethods(Class.java:2488)
       at java.lang.Class.getMethods(Class.java:1406)
       at org.jboss.verifier.strategy.EJBVerifier11.verifyEntityHome(EJBVerifie
r11.java:725)

...muitos outros

       at org.jboss.Main$1.run(Main.java:464)
       at java.lang.Thread.run(Thread.java:595)
19:19:40,841 ERROR [MainDeployer] Could not create deployment:
file:/usr/local/j
boss/server/default/tmp/deploy/tmp45919ServiceBrokerEAR.ear-contents/Empresa.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise
Beans faile d, see above for error messages.
       at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:610)
       at sun.reflect.GeneratedMethodAccessor76.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)

...muitos outros

       at org.jboss.Main$1.run(Main.java:464)
       at java.lang.Thread.run(Thread.java:595)
19:19:41,067 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

--- Incompletely deployed packages ---
org.jboss.deployment.DeploymentInfo@9db9babf {
url=file:/usr/local/jboss/server/ default/deploy/ServiceBrokerEAR.ear
}
 deployer: org.jboss.deployment.EARDeployer@16877f8
 status: Deployment FAILED reason: Verification of Enterprise Beans
failed, see  above for error messages.
 state: FAILED
 watch: file:/usr/local/jboss/server/default/deploy/ServiceBrokerEAR.ear
 altDD: null
 lastDeployed: 1150150751412
 lastModified: 1150150748000
 mbeans:

19:19:41,271 INFO  [Http11BaseProtocol] Starting Coyote HTTP/1.1 on
http-0.0.0.0 -8080
19:19:42,835 INFO  [ChannelSocket] JK: ajp13 listening on /0.0.0.0:8009
19:19:42,870 INFO  [JkMain] Jk running ID=0 time=0/62  config=null
19:19:43,038 INFO  [Server] JBoss (MX MicroKernel) [4.0.4.GA (build:
CVSTag=JBos s_4_0_4_GA date=200605151000)] Started in 1m:22s:700ms

Já verifiquei e ta tudo aparentemente bunitinho dentro do ejb-jar e vizinhos de maloca. Any idea?

plentz

Bom, passei pelo problema acima (removi o EJB que estava dando problema mesmo), mas agora estou com outro problema. E pior, esse não da pra "passar por cima". Não sei o que ele esta fazendo(ou o que está deixando de fazer)…eu tenho um CMP "Senha", que quando eu tento carregá-lo usando o método findByPrimaryKey ocorre um erro. Linha em que ocorre o problema:

Tudo roda bem (inclusive alguns SQL’s na mão via JDBC) até esta linha. Já verifiquei e o “vo.id” realmente tem valor (3509, que é o id(cd_colab) da “senha” que preciso recuperar). Acredito que o problema esteja acontecendo porque o Jboss está “ignorando” o jaws.xml (onde fica mapeado class-atributo => tabela-coluna), pois ele está acusando problema de query. Segue o início do stack trace:

11:15:38,018 ERROR [Senha#findByPrimaryKey] Find failed ca.gcf.util.SqlEx: line 1, Table 'senha' owned by 'ingres' does not contain column 'id'.
A tabela realmente se chama senha(assim como o ejb), mas o atributo na classe se chama “id” e a coluna da tabela é “cd_colab”. Confirmei isso porque antes de chegar no ponto que da erro é feito um select via jdbc para recuperar o cd_colab através do login(nm_identificacao) e funciona perfeitamente:

Tudo me leva a crer que ele está usando o próprio nome do entity e o nome do atributo para montar a query, e simplesmente ignorando o jaws.xml, sendo que fiz mais dois testes:

  • trocando no jaws.xml o <table-name> de “senha” para “senha2” e ainda assim ele da a mesma mensagem de erro(que a tabela senha(e não senha2 como deveria ser) não possui uma coluna chamada id).
  • criei um outro ejb com o nome de Senha2 e criei o deployment descritor apontando para “senha3”. A mensagem de erro, como eu já esperava, diz que a tabela “senha2” não existe.

Qualquer vaga idéia está sendo aceita :slight_smile:

plentz

Opa, problema resolvido. Era um problema de mapeamento que o Jboss não suporta mais. Surgiram outros problemas mas já solucionoei. Em breve vou fazer um resumão com tudo :wink:

Fabricio_Cozer_Marti

oh loco, isso q eu chamo de SingleThreadModel :smiley:

plentz

Se todo mundo colocasse a solução pros problemas no fórum facilitaria muito pra quem tivesse a mesma dúvida futuramente :wink:

Criado 1 de junho de 2006
Ultima resposta 24 de jun. de 2006
Respostas 6
Participantes 2