Criando um cliente de aplicativo no NetBeans IDE
Este tutorial mostra como escrever e implantar um cliente de aplicativo simples que é usado para acessar um Enterprise JavaBean (EJB). O tutorial mostra como acessar o EJBs construído na plataforma Java EE 5 (EJB 3.0) e na plataforma J2EE 1.4 (EJB 2.x).
O IDE permite que você crie um cliente de aplicativo como um tipo de projeto independente. Você pode criar um projeto de cliente de aplicativo como parte de um aplicativo empresarial ou como um aplicativo independente.
Este documento usa a versão NetBeans IDE 6.1. As etapas destacadas neste documento também podem ser aplicadas se você estiver usando uma versão anterior do IDE, mas existem algumas opções disponíveis no NetBeans IDE 6.1 que não estão disponíveis em versões anteriores.
Duração esperada: 30 minutos
Exercícios do tutorial
Para seguir este tutorial, você precisa dos seguintes recursos e softwares.
| NetBeans IDE |
Web e Java EE, versão 6.1 ou
versão 6.0 |
| Java Development Kit (JDK) |
versão 6 ou
versão 5 |
GlassFish V2 oU
Servidor de aplicações Sun Java Systems |
UR1 ou UR2 |
Para este tutorial, é necessário registrar uma instância local do servidor da aplicação GlassFish/Sun Java System com o IDE. O servidor da aplicação GlassFish é incluído no IDE. Se você instalou o servidor da aplicação como uma opção quando instalou o IDE, o servidor já deve estar registrado no IDE.
Pré-requisitos
Este tutorial pressupõe que você tenha algum conhecimento básico das tecnologias a seguir, ou alguma experiência de programação com elas:
- Programação em Java
- NetBeans IDE
Criando um aplicativo cliente com parte de um aplicativo empresarial
A primeira coisa a fazer é criar um aplicativo empresarial do Java EE 5 chamado EnterpriseAppEE5. Você criará o cliente do aplicativo da mesma forma que cria o aplicativo empresarial.
Criando a aplicação empresarial
- Escolha Arquivo > Novo projeto no menu principal.
- Selecione Aplicação empresarial na categoria Empresa e clique em Próximo.
- Digite EnterpriseAppEE5 para o nome do projeto e especifique uma localização do projeto.
- Desmarque a opção Usar pasta dedicada, se ela estiver selecionada.
(Esta opção fica disponível se você estiver usando o NetBeans IDE 6.1. Para este tutorial, não há motivo para copiar as bibliotecas do projeto para uma pasta dedicada porque você não precisará compartilhar bibliotecas com outros usuários ou projetos.)
Clique em Próximo.
- Defina o servidor como GlassFish e defina a versão de Java EE Java EE 5.
- Selecione Criar módulo EJB e Criar módulo de cliente de aplicativo, caso não estejam selecionadas.
Você pode desmarcar Criar módulo de aplicação Web, pois não é necessário um módulo Web para este tutorial.
- Clique em Terminar.
Criando o bean de sessão no aplicativo empresarial
Agora você cria o bean EJB SessionBean no módulo EJB. Para criar o SessionBean, faça o seguinte:
- Clique com o botão direito do mouse no módulo EJB EnterpriseAppEE5-ejb na janela Projeto e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Na categoria Empresa, selecione Bean de sessão e clique em Próximo.
- Digite Sessão para o nome EJB e digite ejb para o pacote.
- Selecione Sem estado como o Tipo de sessão e selecione Remota para o tipo de interface a ser criada.
(Você pode desmarcar a interface local porque só usará a interface remota neste tutorial.)
Clique em Terminar.
Ao clicar em Terminar, a classe de entidade SessionBean.java irá se abrir no editor de código-fonte.
- Clique com o botão direito do mouse no editor de código-fonte e escolha Métodos EJB > Adicionar método comercial para gerar um método comercial para o bean.
- Na caixa de diálogo Adicionar método comercial, digite getResult para o nome, defina o Tipo de retorno como String, e selecione a caixa de interface Remota. Clique em OK.
- Em SessionBean.java, modifique o método getResult para o seguinte:
public String getResult() {
return "This is EJB 3.0 Bean";
}
- Salve as alterações.
Chamando o bean de sessão a partir do cliente de aplicativo
Agora você adiciona o código ao aplicativo cliente usado para chamar o bean EJB. Para modificar o cliente de aplicativo, faça o seguinte:
- Expanda EnterpriseAppEE5-app-client > Pacotes de códigos-fonte > enterpriseappee5 na janela Projetos e clique duas vezes em Main.java para abrir o arquivo no editor de código-fonte.
- Clique com o botão direito do mouse no editor de código-fonte e escolha Recursos comerciais > Chamar enterprise bean.
- Na caixa de diálogo Chamar enterprise bean, expanda o nó EnterpriseAppEE5-ejb e selecione SessionBean como o bean que você deseja chamar e selecione Remota como a interface referenciada. Clique em OK.
Quando você clica em OK, a anotação seguinte é adicionada a Main.java para chamar o bean de sessão:
@EJB
private static SessionRemote sessionBean;
- Modifique o método main com o código seguinte para gerar alguma saída simples. Você usará System.err.println para que possa ver facilmente a mensagem na janela Saída.
public static void main(String[] args) {
System.err.println("result=" + sessionBean.getResult());
- Salve as alterações.
Configurando o aplicativo empresarial
Agora quase tudo está feito, e a última coisa que você precisa fazer é configurar o cliente do aplicativo como um módulo, que deve ser executado quando você executa o aplicativo empresarial. Ele provavelmente já está configurado porque você criou o cliente do aplicativo e o aplicativo empresarial ao mesmo tempo.
Para configurar o aplicativo empresarial, faça o seguinte:
- Clique com o botão direito do mouse no nó do projeto de aplicativo empresarial EnterpriseAppEE5 na janela Projetos e escolha Propriedades.
- Selecione Executar na caixa de diálogo Propriedades do projeto.
- Escolha EnterpriseAppEE5-app-client para a URI do módulo cliente (que deve ser selecionada por padrão). Clique em OK.
Executando o aplicativo empresarial
Agora você pode executar o aplicativo empresarial para testar o cliente do aplicativo.
- Clique com o botão direito do mouse em EnterpriseAppEE5 na janela Projetos e escolha Executar.
Quando você executa o projeto, o IDE constrói e implante o aplicativo. A mensagem seguinte é exibida na janela Saída:
result = This is EJB 3.0 Bean
Usando um cliente de aplicativo independente para acessar um EJB
Neste exercício, você cria um projeto do módulo EJB e um projeto de aplicativo cliente que se conecta ao EJB.
Neste exercício, você não pode usar anotações do EJB para vincular o EJB ao cliente do aplicativo de forma que possa usar uma pesquisa a partir de um contexto. Como o código para a pesquisa de bean é diferente, se você possui mais de uma interface remota, este exercício é dividido em duas partes:
Acessando uma única interface remota
Neste exercício, você cria um módulo EJB com uma interface remota e, em seguida, cria um cliente de aplicativo que acessa o EJB.
Criando o módulo EJB
Neste exercício, você cria um módulo EJB chamado EJBModule30. Neste exercício, você não deseja adicionar o módulo EJB a um projeto comercial.
- Escolha Arquivo > Novo projeto no menu principal.
- Selecione Módulo EJB na categoria Empresa e clique em Próximo.
- Digite EJBModule30 para o nome do projeto e defina a localização do projeto.
- Desmarque a opção Usar pasta dedicada. Clique em Próximo.
- Garanta que o módulo EJB não seja adicionado a um aplicativo empresarial.
- Defina o servidor como GlassFish e defina a versão de Java EE Java EE 5.
- Clique em Terminar.
Criando um bean de sessão no módulo EJB
Neste exercício, você criará o bean de sessão Bean30 em seu módulo EJB. Para criar o Bean30, faça o seguinte:
- Clique com o botão direito do mouse no módulo EJB na janela Projetos e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Na categoria Empresa, selecione Bean de sessão e clique em Próximo.
- Digite Bean30 para o nome do EJB, digite ejb para o pacote, deixe o Tipo de sessão como Sem estado e selecione Remota para criar uma interface remota. Clique em Terminar.
Ao clicar em Terminar, a classe de bean Bean30Bean.java irá se abrir no Editor de código-fonte.
- No editor de código-fonte, clique com o botão direito do mouse no código-fonte e escolha Métodos EJB > Adicionar método comercial na janela pop-up para gerar um método comercial para o bean. Na caixa de diálogo Adicionar método comercial, digite getResult para o nome do método, defina o Tipo de retorno como String e garanta que a caixa de interface Remota esteja selecionada. Clique em OK.
- Em Bean30Bean.java, modifique o retorno do método getResult com o seguinte (em negrito):
public String getResult() {
return "This is EJB 3.0 Bean";
}
- Modifique a anotação do bean de sessão @Stateless para alterar o nome padrão usado para mapear o bean de Bean30Bean para Bean30. Em seguida, você usará Bean30 no cliente do aplicativo para procurar o bean. A anotação agora deve ter a seguinte aparência (alterações em negrito):
@Stateless(mappedName="Bean30")
public class Bean30Bean implements Bean30Remote {
- Salve as alterações.
Criando o projeto de cliente de aplicativo
Agora você cria o cliente de aplicativo ApplicationClientForTest que acessará o EJB.
- Escolha Arquivo > Novo projeto no menu principal.
- Selecione Cliente de aplicativo empresarial na categoria Empresa e clique em Próximo.
- Digite ApplicationClientForTest para o nome do projeto e defina a localização.
- Desmarque a opção Usar pasta dedicada. Clique em Próximo.
- Defina o servidor como GlassFish e defina a versão de Java EE Java EE 5.
- Clique em Terminar.
Chamando o EJB a partir do cliente do aplicativo
Agora você adiciona o projeto EJBModule30 a ApplicationClientForTest como uma biblioteca e adiciona o código para acessar Bean30.
- Expanda o nó do projeto ApplicationClientForTest na janela Projetos, clique com o botão direito do mouse em Bibliotecas e selecione Adicionar projeto.
Como alternativa, você pode abrir a janela de propriedades do projeto ApplicationClientForTest e clicar em Adicionar projeto na categoria Bibliotecas.
- Na caixa de diálogo Adicionar projeto, localize e selecione o projeto EJBModule30 project e clique em Adicionar arquivos JAR do projeto.
O arquivo JAR do EJBModule30 é adicionado à biblioteca de ApplicationClientForTest. Você pode ver as bibliotecas do projeto, expandindo o nó Bibliotecas do projeto na janela Projetos.
- Clique duas vezes em Main.java na janela Projetos para abrir o arquivo no editor de código-fonte.
- No editor de código-fonte, adicione o código seguinte ao método main de Main.java. Novamente, você usará System.err.println para que possa ver facilmente a mensagem na janela Saída.
public static void main(String[] args) {
InitialContext ctx = new InitialContext();
Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30");
System.err.println("EJB message is:" + br.getResult());
- Corrija as instruções de importação (Ctrl-Shift-I).
- Corrija quaisquer erros no código. Você pode usar o recurso de sugestão no IDE para ajudá-lo.
Observação: Nesse caso, o erro é causado por uma cláusula throws ausente. Para usar o recurso de sugestão do IDE, coloque o ponto de inserção na primeira linha do código que contém o erro, sublinhado em vermelho. Quando a lâmpada de sugestão aparecer na margem esquerda, clique na lâmpada e escolha "Adicionar cláusula throws..." para adicionar uma cláusula throws ao método. O IDE adiciona as instruções de importação apropriadas quando adicionar a cláusula throws ao método.

- Salve as alterações.
Agora tudo deve estar correto, portanto, você pode implantar o EJBModule30 e o ApplicationClientForTest no servidor, clicando com o botão direito do mouse no nó de projeto de cada um dos projetos na janela Projetos e escolhendo Desimplantar e Implantar. Depois que você implantar ambos os projetos, execute o cliente de aplicativo, clicando com o botão direito do mouse em ApplicationClientForTest na janela Projetos e escolhendo Executar. Na janela Saída você deve ver o seguinte:
A mensagem do EJB é: This is EJB 3.0 Bean
Observação: Se estiver usando um firewall, talvez você precise desativar o firewall para permitir que o cliente do aplicativo acesse o EJB.
Acessando duas ou mais interfaces remotas
Neste exercício, você cria uma segunda interface remota no EJBModule30. Em seguida, você modifica o código no cliente do aplicativo para que ele acesse cada uma das interfaces remotas. O código usado neste exercício para chamar o EJBs é ligeiramente diferente do código para chamar uma única interface remota. Este exercício irá ajudá-lo quando você quiser acessar duas ou mais interfaces remotas a partir de um único cliente de aplicativo independente.
Criando uma segunda interface remota para o EJB Bean30
Neste exercício, você cria uma segunda interface remota chamada Bean30Remote2 para o EJB Bean30.
Para criar a segunda interface, faça o seguinte:
- Clique com o botão direito do mouse no módulo EJB na janela Projetos e escolha Novo > Classe Java.
- Digite Bean30Remote2 para o nome da classe, digite ejb para o pacote e clique em Terminar.
Quando você clica em Terminar, a classe do bean Bean30Remote2.java se abre no editor de código-fonte.
- Adicione a anotação @Remote à classe para declarar a classe como uma interface remota.
- Modifique a definição da classe para declarar a classe uma interface e adicionar um método getResult. A classe agora deve ter a seguinte aparência (alterações em negrito):
@Remote
public interface Bean30Remote2 {
String getResult2();
}
- Corrija as instruções de importação. Agora você precisará importar javax.ejb.Remote.
- Salve as alterações.
Modifique Bean30 para implementar a interface
Neste exercício, você modifica Bean30 para implementar a interface Bean30Remote2.
- Em Bean30Bean.java, implemente o método getResult2 a partir de Bean30Remote2.java. O método deve ter uma aparência semelhante a esta:
public String getResult2() {
return "This is EJB 3.0 Bean 2";
}
- Modifique a definição da classe para implementar Bean30Remote2.
A classe deve ter uma aparência semelhante a esta:
E a estrutura do diretório deve ter esta aparência:
Modificando ApplicationClientForTest
Em seguida, modificamos o código de pesquisa na classe Main do cliente de aplicativo.
- Clique duas vezes na classe main.java de ApplicationClientForTest na janela Projetos para abrir a classe no editor de código-fonte.
- Modifique o código no método main para procurar a segunda interface. Nesse caso, quando há mais de uma interface remota, temos que usar o nome completo de cada uma das interfaces na pesquisa.
public static void main(String[] args) throws NamingException {
InitialContext ctx = new InitialContext();
Bean30Remote br = (Bean30Remote) ctx.lookup("Bean30#ejb.Bean30Remote");
System.err.println("EJB message is:" + br.getResult());
Bean30Remote2 br2 = (Bean30Remote2) ctx.lookup("Bean30#ejb.Bean30Remote2");
System.err.println("EJB message 2 is:" + br2.getResult2());
- Corrija as importações para adicionar uma instrução de importação de ejb.Bean30Remote2.
- Salve as alterações.
Agora, implante novamente o EJBModule30, e execute o cliente do aplicativo. Na janela Saída, você verá a seguinte saída:
A mensagem EJB é: This is EJB 3.0 Bean
A mensagem EJB 2 é: This is EJB 3.0 Bean 2
Resumo
Neste exercício, mostramos como usar um cliente de aplicativo para acessar o EJB 3.0 Enterprise JavaBeans. Mostramos como acessar o EJB a partir de um aplicativo que era comercial e também a partir de um cliente de aplicativo independente. Também demonstramos a diferença entre chamar um bean com uma única interface remota e beans com mais de uma interface remota.
Usando um cliente de aplicativo independente para acessar um EJB (EJB 2.1)
Se você quiser trabalhar com beans EJB 2.X, o processo é muito semelhante, mas não exatamente o mesmo. Este exercício mostra como o acesso aos beans EJB 2.x difere do acesso aos beans EJB 3.0.
Criando um módulo EJB EJBModule14
Primeiro crie o módulo EJB.
- Escolha Arquivo > Novo projeto no menu principal.
- Selecione Módulo EJB na categoria Empresa e clique em Próximo.
- Digite EJBModule14 para o nome do projeto e definida a localização do projeto.
- Desmarque a opção Usar pasta dedicada. Clique em Próximo.
- Garanta que o módulo EJB não seja adicionado a um aplicativo empresarial.
- Defina o servidor como GlassFish e defina a versão de Java EE como J2EE 1.4.
- Clique em Terminar.
Criando o bean de sessão em EJBModule14
Agora você cria o bean EJB Bean14 no módulo EJB. Para criar o Bean14, faça o seguinte:
- Clique com o botão direito do mouse no módulo EJB na janela Projetos e escolha Novo > Outro para abrir o assistente para Novo arquivo.
- Selecione Bean de sessão na categoria Empresa e clique em Próximo.
- Digite Bean14 para o nome da classe, digite ejb para o pacote, deixe o Tipo de sessão como Sem estado e selecione Remota para criar uma interface remota. Clique em Terminar.
Ao clicar em Terminar, a classe de bean Bean14Bean.java irá se abrir no editor de código-fonte.
- No editor de código-fonte, clique com o botão direito do mouse no código-fonte e escolha Métodos EJB > Adicionar método comercial no menu pop-up para abrir a caixa de diálogo Adicionar método comercial.
- Na caixa de diálogo Adicionar método comercial, digite getResult para o nome do método comercial, defina o Tipo de retorno como String, e selecione Remota para a interface. Clique em OK.
- Modifique o método getResult em Bean14Bean.java para que um método de retorno acesse o bean a partir de outro componente:
public String getResult() {
return "This is EJB 1.4 Bean";
}
- Salve as alterações.
Chamando o EJB a partir do cliente do aplicativo
Agora você adiciona o projeto EJBModule14 a ApplicationClientForTest como uma biblioteca e adiciona o código para acessar Bean14.
- Expanda o nó do projeto ApplicationClientForTest na janela Projetos, clique com o botão direito do mouse em Bibliotecas e selecione Adicionar projeto.
- Na caixa de diálogo Adicionar projeto, localize e selecione o projeto EJBModule14 e clique em Adicionar arquivos JAR do projeto.
O arquivo JAR de EJBModule14 é adicionado à biblioteca de ApplicationClientForTest. Você pode ver as bibliotecas do projeto, expandindo o nó Bibliotecas do projeto na janela Projetos.
- Clique duas vezes em Main.java na janela Projetos para abrir o arquivo no editor de código-fonte.
- No editor de código-fonte, remova ou comente o código usado para acessar o EJBModule30 e adicione o código seguinte (em negrito) ao método main de Main.java:
public static void main(String[] args) throws NamingException {
InitialContext ctx = new InitialContext();
Object remote = ctx.lookup("ejb/Bean14Bean");
Bean14RemoteHome sbrh = (Bean14RemoteHome) PortableRemoteObject.narrow(remote, Bean14RemoteHome.class);
Bean14Remote sbr = sbrh.create();
System.err.println("EJB 1.4 result:" + sbr.getResult());
- Corrija as instruções de importação.
- Corrija os erros no código-fonte. Existem erros porque o método precisa de uma cláusula throws para NamingException, CreateException e RemoteException a partir da pesquisa. Você pode usar o recurso de sugestão do IDE para ajudá-lo a resolver os erros.
Agora tudo deve estar correto, portanto, implante o EJBModule14 e o ApplicationClientForTest no servidor (clique com o botão direito do mouse em cada projeto e escolha Desimplantar e Implantar) e, em seguida, clique com o botão direito do mouse em ApplicationClientForTest e escolha Executar. Quando você executa o cliente, devemos ver o seguinte na janela Saída:
Resultado do EJB 1.4: This is EJB 1.4 Bean
Próximas etapas
Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos:
Informações sobre o uso do Enterprise Beans EJB 3.0 encontram-se no Tutorial do Java EE 5.
Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento do Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de nbj2ee.