EJB - application.xml - Duvida

7 respostas
R

Galera,

Estou com uma duvida,

Estava estudando um pouco sobre EJB e criando alguns exemplo, mas 2 coisas nao conseguir entender.

No arquivo application.xml eu tenho 2 tags que nao sei o que deve ser colocado exatamente.
Elas sao



ejb-api-3.0.jar



e a


war-ic.war

O que sao estes arquivo jar e war que esta declarados ai ?

E o que eh um arquivo war ?

Poderiam me ajudar ?

Segue o XML completo:

<?xml version="1.0" encoding="UTF-8"?> <application xmlns="http://java.sun.com/xml/ns/j2ee" version="1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/application_1_4.xsd"> <description xml:lang="pt"> Application description </description> <display-name xml:lang="pt"> Mey Primeiro EJB </display-name> <module> <ejb> ejb-api-3.0.jar </ejb> </module> <module> <web> <web-uri> war-ic.war </web-uri> <context-root> mensagem </context-root> </web> </module> </application>

7 Respostas

W

Fala camarada…

Uma pergunta: vc está usando o EJB 3 ? Se sim, vc não precisa mais configurarar/criar esta arquivo. Vc vai fazer tudo com anotações.
E vc vai precisar um servidor como o Jboss 5.1 ou GlassFish 3.

O EJB 3 é bem mais simples de implementar q o 2 e não tem este monte de configuação chata para fazer!

Veja este tutorial que está fácil e legal de entender: http://www.jspbrasil.com.br/mostrar/110

Abraço.

A

Corrigindo: Esse arquivo (application.xml) é sim necessário independente da versão do EJB caso esteja trabalhando com projetos do tipo EAR.

Essas tags em questão, são utilizadas para definir dentro do Enterprise Application (EAR), os modulos que o compoe. Dentro de um projeto EAR podemos ter N projetos EJBs e N Web, cada um compartilhando o mesmo classloader do EAR. Sendo assim, os mesmos devem ser declarados para que possam ser publicados corretamente no servidor. Neste mesmo arquivo, você também declara o caminho que sua aplicação web terá, lembrando que quando você trabalha com projeto web de forma isolada, o caminho da aplicação é o nome da pasta que o mesmo é publicada. Neste ponto, você consegue customizar com outro nome diferente da forma como foi publicada a aplicação dentro da tag .

Abraços

W

Hummm… Eu nunca precisei de criar o arquivo aplication.xml pq eu nunca precisei colocar em um EAR mais de uma aplicação .war e mais de uma aplicação EJB. Sempre fiz uma aplicação war e um jar do EJB. Para falar a verdade eu nunca visto na prática.

Mas muito bom saber que eu posso colocar vários projetos EJBs e Webs no mesmo EAR. Mas eu ainda prefiro criar os projetos separados. E com isto eu não tenho q usar o aplication.xml. Bom eu faço isto e nunca tive nenhum problema.

Abraço

A

Certo.

Pergunta: Hoje como você injeta os EJBs (3.0) em seus managed beans? Cria um Service Locator para faze-lo?

Dica: Em um projeto EAR, você conseguiria injetar os seus serviços EJBs dentros dos managed bean apenas com um @EJB.

Observacao: Mesmo com um projeto EAR, os seus projetos EJB e Web ainda continuaria separados. O projeto EAR apenas empacota os mesmos para permitir que tanto o projeto EJB e WEB rodem dentro de um mesmo classloader, já que os projeto EJBs não os possuem. Neste caso, sem um projeto EAR, os seus projetos EJBs dependeria de jar já publicados no servidor, o que não enxergo como uma boa prática. Esses jar, poderiam ficar isolados no projeto EAR e tanto os EJB quando Web acessá-los sem depender do Endorsed do servidor.

Abraços

A

O que o alexmdo falou está certinho.

Só adicionando mais uma informação pro tópico: No EJB 3.1 não precisa mais do EAR. Você pode deployar tudo dentro do WAR e o app server trata de scannear o seu classpath para achar os seus EJB’s.

Se eu nao me engano, o unico release estável de servidor que atualmente que implementa o JavaEE 6 (e por consequencia EJB 3.1) é o Glassfish 3. O JBoss ainda está com a versão 6 em Milestone, mas jajá deve sair a estável.

[]'s

W

alexmdo,

Acho que não escrevi muito bem no texto anterior. No trabalho que estou fazendo neste momento eu tenho uma aplicação web e uma aplicação EJB 3. Quando eu crio o deploy do arquivo EAR o meu deploy fica com o arquivo war (que é a minha aplicação web) e o meu jar do EJB dentro do mesmo EAR.

Para acessar os EJBs da aplicação web eu uso a anotação @EJB e tudo isto sem criar o arquivo aplication.xml. Eu acho que o aplication server (no meu caso o JBoss 5.1) já faz o mapeamento das distribuições, pq nunca deu erro e sempre funcionou normalmente os EBJs com as a notações e tudo mais.

Eu vou fazer alguns testes colocando o arquivo aplication.xml para ver, mas acho q tudo vai continuar funcionando como sempre funcionou.

Abraço.

R

Bem consegui rodar meu EJB, mas agora fiquei em duvida como funciona esse EAR !

Eu gerei um Projeto no NetBeans que gerou a estrutura exatamente como voces falaram, incluindo ou nao o application.xml !
Rodou Bacana.

Agora estou dedicado a aprender a utilizar estes arquivos EAR.

Criado 23 de abril de 2010
Ultima resposta 26 de abr. de 2010
Respostas 7
Participantes 4