Importando aplicativos Java EE no NetBeans IDE 5.5
Este documento explica como importar aplicativos empresariais existentes do JavaTM EE para projetos do NetBeansTM IDE. Como exemplo, importaremos o aplicativo de exemplo cmpcustomer que está incluído nas amostras do J2EE 1.4 SDK.
O aplicativo cmpcustomer tem uma pasta src que contém os descritores de implantação do aplicativo empresarial, uma pasta cmpcustomer-ejb que contém a fonte do módulo EJB e uma pasta cmpcustomer-war que contém a fonte para o cliente do aplicativo da Web.
O código-fonte de exemplo cmpcustomer está localizado na pasta Sun/AppServer/samples/ejb/cmp/apps/cmpcustomer. Se você não tiver as amostras do J2EE 1.4 SDK, pode fazer o download no endereço http://java.sun.com/j2ee/1.4/download.html. Certifique-se de extrair as amostrar para a pasta samples do diretório de instalação do servidor de aplicativos.
Observação: Este guia usa a mesma fonte de projeto para demostrar como importar um projeto das seguintes maneiras:
Importar um aplicativo empresarial inteiro.
Importar somente o módulo EJB.
Importar o módulo EJB e usar o script Ant existente do módulo para construir e implantar o projeto.
No IDE, porém, uma raiz de origem só pode ser usada em um projeto por vez. Se você desejar criar cada um dos três tipos de projetos, será necessário excluir cada projeto existente antes de criar um novo. Para excluir um projeto, clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Excluir projeto. Na caixa de diálogo Excluir projeto, certifique-se de que a opção para excluir as fontes do projeto não esteja selecionada.
Guia de introdução
Antes de continuar, vamos reunir todo o software necessário e definir o ambiente.
Instalação do software
Antes de começar, é necessário instalar os seguintes softwares no computador:
Sun JavaTM System Application Server Platform Edition 9.0 (download)
Java Standard Development Kit (JDKTM), versão 5.0 ou versão 6.0 (download)
Observação: O NetBeans IDE 5.5 também oferece suporte ao servidor de aplicativos Sun Java System 8.1 e 8.2. A versão 8.1 do servidor de aplicativos usa o servidor do banco de dados PointBase, em vez do Apache Derby, mas o procedimento para a importação de projetos é o mesmo.
Registrando o servidor de aplicativos Sun Java System
Antes de poder trabalhar com projetos do J2EE, é necessário registrar uma instância do servidor de aplicativos Sun Java System. Se você instalou o conjunto NetBeans IDE 5.5/servidor de aplicativos Sun Java System, o servidor de aplicativos local será registrado automaticamente.
Na janela principal, escolha Ferramentas > Gerenciador de servidores.
Clique em Adicionar servidor. Selecione o servidor de aplicativos Sun Java System e dê um nome à instância. Em seguida clique em Próximo.
Especifique o diretório de instalação do servidor de aplicativos (por exemplo, C:\Sun\Appserver).
Deixe marcado o botão de opção Registrar domínio local padrão e selecione um domínio.
Opcionalmente, clique em Próximo e insira o nome de usuário e a senha de administrador. Se não desejar armazenar o nome de usuário e a senha no diretório de usuário do IDE, deixe estes campos vazios. Você terá de fornecer informações toda vez que o IDE as solicitar. Observação: A senha de administração padrão é adminadmin.
Você não deseja usar o script de construção Ant existente para construir os módulos do aplicativo empresarial. O IDE irá criar um script de construção para cada módulo.
Observação: Algumas versões mais antigas do exemplo cmpcustomer não são compatíveis com BluePrints. Se o IDE não permitir que você abra o exemplo como um projeto, vá para http://java.sun.com/j2ee/1.4/download.html e faça o download da versão mais recente das amostras do J2EE.
Criando os projetos
Se já criou um projeto usando qualquer uma das raízes de origem no exemplo cmpcustomer, clique com o botão direito do mouse no projeto e escolha Excluir projeto. Na caixa de diálogo Excluir projeto, certifique-se de que a opção para excluir as fontes do projeto não esteja selecionada.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N).
Escolha Empresa > Aplicativo empresarial com fontes existentes. Clique em Próximo.
No campo Local, digite ou navegue para a pasta que contém o aplicativo empresarial. Deve ser a pasta que contém a pasta src para o aplicativo empresarial e a pasta de nível superior para cada módulo do aplicativo. Em nosso exemplo, você deve inserir a pasta samples/ejb/cmp/apps/cmpcustomer.
Nomeie o projeto cmpcustomer (ou dê a ele o nome que achar conveniente) e especifique um local para a pasta do projeto. Chamaremos este local de NetBeans_projects. Para aplicativos empresariais com fontes existentes, não é possível criar as pastas de projeto no mesmo local que as pastas de fontes.
Selecione a versão J2EE para o projeto. Esta configuração define a versão da especificação do J2EE que o IDE usa para gerar código e manter os descritores de implantação. Em nosso exemplo, vamos deixar a versão do J2EE em J2EE 1.4.
Defina o servidor de aplicativos de destino para o projeto e clique em Finalizar. O IDE cria um projeto IDE padronizado para o aplicativo empresarial e cada um dos módulos.
Quando você cria os projetos, o IDE exibe um aviso para verificar o elemento context-root no arquivo sun-application.xml. Isto ocorre porque o IDE não conhece os nomes dos arquivos JAR e WAR do módulo, e dá a eles seus próprios nomes. O IDE, portanto, cria novos descritores de implantação com os nomes de arquivo JAR e WAR corrigidos. Os descritores de implantação originais também são salvos. Você deve usar os novos descritores de implantação, mas é necessário alterar algumas das configurações.
Defina a raiz do contexto correta para o módulo da Web em application.xml e sun-application.xml. Clique duas vezes em application.xml e altere o elemento de context-rootcmpcustomer-war para customer. Em seguida clique duas vezes em sun-application.xml para abri-lo no editor visual, expanda o nó EAR e selecione o nó cmpcustomer-war.war. Altere o campo Raiz do contexto de cmpcustomer-war para customer.
No projeto cmpcustomer-ejb, expanda Arquivos de configuração, clique duas vezes em sun-ejb-jar.xml e defina Criar tabelas ao implantar como Verdadeiro. Escolha Arquivo > Salvar tudo para salvar as alterações.
O arquivo LocalStrings.properties do módulo da Web está no local errado. Mova o arquivo da pasta cmpcustomer-war/src/conf para a pasta cmpcustomer-war/src/java.
Definindo a classpath do projeto
Uma vez que os descritores de implantação do aplicativo empresarial não contêm quaisquer informações sobre os relacionamentos da classpath entre os módulos do aplicativo, é necessário que você mesmo configure a classpath.
Na janela Projetos, expanda o nó Bibliotecas para o nó do projeto cmpcustomer-war. Observe que ele somente lista o JDK de destino do projeto e o servidor de aplicativos.
Clique com o botão direito do mouse no nó Bibliotecas e escolha Adicionar projeto.
Selecione a pasta de projeto para o projeto cmpcustomer-ejb (NetBeans_projects/cmpcustomer/cmpcustomer-ejb) e clique em OK. As classes do módulo EJB são adicionadas à classpath do módulo da Web.
Observação: Você deve selecionar a pasta de projeto para o projeto cmpcustomer-ejb na pasta NetBeans_projects, não na pasta de origem cmpcustomer-ejb na pasta samples.
Configurando o banco de dados e o recurso JDBC
O aplicativo cmpcustomer é definido para criar todas as tabelas de banco de dados quando o aplicativo é implantado. Basta especificar o banco de dados Derby no qual as tabelas são criadas. Quando você registra o servidor de aplicativos do Sun Java System no IDE, um banco de dados Derby preconfigurado chamado sample é criado na pasta .netbeans-derby na pasta base. Você pode usar este banco de dados como o banco de dados de destino.
Para que o módulo EJB acesse este banco de dados, é necessário criar um agrupamento de conexões e um recurso de banco de dados para o banco de dados no servidor. Para isso, use os arquivos de recurso do servidor no projeto do módulo EJB.
Clique com o botão direito do mouse no projeto cmpcustomer-ejb e escolha Novo > Arquivo/Pasta. Na categoria Recursos da Sun, selecione o modelo Agrupamento de conexões JDBC e clique em Próximo.
No campo Nome do agrupamento de conexões JDBC, digite cmpcustomerPool. Selecione Extrair no botão de opção Conexão existente e selecione o banco de dados sample na caixa de combinação. Clique em Próximo.
Digite app para o valor da propriedade Senha e clique em Finalizar. O nó do agrupamento de conexões aparece no nó Recursos do servidor do projeto.
Agora vamos criar o recurso do banco de dados que se conecta ao agrupamento de conexões.
Clique com o botão direito do mouse no projeto cmpcustomer-ejb e escolha Novo > Arquivo/Pasta. Na categoria Recursos da Sun, selecione o modelo Recurso JDBC e clique em Próximo.
Selecione Usar agrupamento de conexões JDBC existente e selecione cmpcustomerPool na caixa de combinação.
Digite jdbc/cmpcustomer no campo Nome JNDI e clique em Finalizar. O nó do recurso aparece no nó Recursos do servidor do projeto.
Por fim, temos de configurar o módulo EJB para usar o nome JNDI correto ao pesquisar o banco de dados.
Expanda o nó Arquivos de configuração e clique duas vezes em sun-ejb-jar.xml.
Na seção Recurso CMP, digite jdbc/cmpcustomer no campo Nome JNDI. Salve e feche o arquivo.
Executando o aplicativo
Se o projeto cmpcustomer não estiver no projeto principal, clique com o botão direito do mouse no nó do projeto e escolha Definir projeto principal.
Escolha Executar > Executar projeto principal. O IDE constrói o arquivo EAR para o projeto e o implanta no servidor de aplicativos.
Solução de problemas
O IDE não permite que você conclua o assistente para Novo e informa que o local selecionado não contém um aplicativo BluePrints estruturado. Você provavelmente tem uma versão antiga do exemplo cmpcustomer. Vá para http://java.sun.com/j2ee/1.4/download.html e faça o download da versão mais recente das amostras do J2EE.
Quando você tenta criar um cliente ou procura clientes, obtém uma mensagem EJBException. Verifique se o servidor do banco de dados Derby está em execução escolhendo Ferramentas > Banco de dados Derby > Iniciar servidor Derby.
Nenhuma página JSP tem o texto de exibição correto. Certifique-se de que moveu o arquivo LocalStrings.properties da pasta src/conf para a pasta src/java no aplicativo da Web.
Quando você tenta criar um cliente ou procura clientes, obtém o seguinte erro: Falha na criação de cliente: javax.ejb.EJBException: Transação anulada; exceção aninhada é: javax.transaction.RollbackException: Transação marcada para reversão. Verifique se você criou e configurou corretamente o recurso JDBC para o exemplo. Além disso, verifique se o agrupamento de conexões cmpcustomerPool existe e contém a senha padrão. Para exibir o agrupamento de conexões, vá para a janela Tempo de execução e expanda JDBC > Agrupamentos de conexão para o servidor de aplicativos. Para verificar se contém a senha, clique duas vezes em cmpcustomerPool, clique no botão de reticências para Propriedades e certifique-se de que a propriedade Senha esteja definida como app.
Importando módulos individuais
Talvez seja necessário importar módulos individuais nos seguintes casos:
O aplicativo empresarial não está conforme às recomendações de BluePrints.
O módulo é um módulo EJB independente ou um aplicativo da Web.
Você deseja utilizar seu próprio script de construção Ant para construir, implantar e depurar o módulo.
Como exemplo, importaremos o módulo cmpcustomer-ejb sozinho. Há dois modelos que podem ser usados para importar um módulo EJB individual:
Módulo EJB com fontes existentes. Use um modelo de projeto para criar um projeto de módulo EJB padronizado. Um projeto de módulo EJB padronizado usa o IDE para compilar, executar e depurar um módulo EJB.
Módulo EJB com script Ant existente. Use um modelo de projeto para criar um projeto de módulo EJB de forma livre. Um projeto de módulo EJB de forma livre usa o script Ant para compilar e executar um módulo EJB, e para iniciar o depurador do NetBeans.
Quando você cria um projeto de módulo EJB, o IDE cria um script de construção Ant e arquivos de propriedade que controlam como o projeto é construído e implantado. O IDE atualiza o script Ant quando você define opções para o projeto.
Criando um projeto
Se já criou um projeto usando qualquer uma das raízes de origem no exemplo cmpcustomer, clique com o botão direito do mouse no projeto e escolha Excluir projeto. Na caixa de diálogo Excluir projeto, certifique-se de que a opção para excluir as fontes do projeto não esteja selecionada.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N).
Escolha Empresa > Módulo EJB com fontes existentes. Clique em Próximo.
No campo Local, digite ou navegue para a pasta que contém a fonte do módulo EJB. Em geral deve ser a pasta que contém a pasta src para o módulo EJB, mas pode ser qualquer pasta. O IDE pode conter qualquer estrutura de módulo EJB. Em nosso exemplo, você deve inserir a pasta samples/ejb/cmp/apps/cmpcustomer/cmpcustomer-ejb.
Nomeie o projeto cmpcustomer-ejb-standard (ou dê a ele o nome que achar conveniente) e especifique um local para a pasta do projeto. Observe que você não pode usar a pasta cmpcutomer-ejb como a pasta do projeto, uma vez que ela já contém um build.xml, que entraria em conflito com o build.xml gerado pelo IDE.
Defina o servidor de aplicativos de destino para o projeto.
Selecione a versão J2EE para o projeto. Esta configuração define a versão da especificação do J2EE que o IDE usa para gerar código e manter os descritores de implantação.
Clique em Próximo. A página de fonte existente e bibliotecas é onde você configura projetos de módulo EJB mais complexos. Você pode adicionar múltiplas pastas de origem, especificar o local da pasta conf, se estiver em um local irregular, e especificar uma pasta de bibliotecas. Quando você cria o projeto, todas as pastas e todos os arquivos JAR na pasta de bibliotecas são adicionados à classpath do projeto.
Clique em Finalizar sem alterar quaisquer configurações na página de Fonte e bibliotecas existentes. O IDE cria o projeto de módulo EJB. Observação: Se desejar executar o módulo, talvez seja necessário configurar o banco de dados e o recurso JDBC.
Usando seu próprio script Ant para construir, implantar e depurar
Quando você cria um projeto de módulo EJB de forma livre, o IDE usa seu script de construção Ant para construir e implantar o projeto. No IDE, é necessário configurar o projeto para espelhar as configurações que estão contidas no script Ant do projeto. É necessário também escrever seu próprios destinos para depurar o projeto no NetBeans.
Observação: Antes de poder usar o script Ant do aplicativo cmpcustomer para construir e implantar o projeto, é necessário fornecer informações sobre a instalação e a configuração do domínio do servidor no arquivo Sun/AppServer/samples/common.properties.
Criando um projeto
Se já criou um projeto usando qualquer uma das raízes de origem no exemplo cmpcustomer, clique com o botão direito do mouse no projeto e escolha Excluir projeto. Na caixa de diálogo Excluir projeto, certifique-se de que a opção para excluir as fontes do projeto não esteja selecionada.
Escolha Arquivo > Novo projeto (Ctrl-Shift-N).
Selecione Empresa > Módulo EJB com script Ant existente. Clique em Próximo.
Digite ou navegue para a pasta que contém a fonte do módulo EJB. Em geral deve ser a pasta que contém a pasta src para o módulo EJB, mas pode ser qualquer pasta. O IDE pode conter qualquer estrutura de módulo EJB. Em nosso exemplo, você deve inserir a pasta samples/ejb/cmp/apps/cmpcustomer/cmpcustomer-ejb. O IDE preenche o nome do script de construção para você. Observação: O script de construção para o módulo cmpcustomer-ejb importa o script de construção padronizado common-ant.xml que está no diretório Sun/AppServer/samples/. O script de construção pressupõe que o diretório de exemplos também esteja localizado no diretório AppServer. Se você fez o download das amostras separadamente e as instalou em um local diferente, o IDE irá informar que build.xml não é um script de construção válido. Abra o script de construção em um editor de texto e edite a seguinte linha para apontar para o local correto de common-ant.xml:
<!DOCTYPE project [ <!ENTITY include SYSTEM "../../../../../common-ant.xml"> ]>
Nomeie o projeto cmpcustomer-ejb-freeform e especifique um local para a pasta do projeto. Em seguida clique em Próximo.
Na página Construir e executar do assistente, especifique os destinos que o IDE deve executar para os comandos do projeto. O IDE sugere destinos para cada ação. Especifique os seguintes destinos para cada ação:
Na página Fontes de EJB do assistente, especifique a pasta que contém os descritores de implantação do módulo. Em nosso exemplo, a pasta Arquivos de configuração é cmpcustomer/cmpcustomer-ejb/src/conf.
No campo Pastas de recursos do servidor, você pode especificar uma pasta que contenha quaisquer arquivos de recursos do servidor gerados pelo IDE. Os arquivos de recursos do servidor são arquivos XML que o IDE usa para configurar recursos automaticamente, como agrupamentos de conexões e fontes de dados JDBC, no servidor de aplicativos Sun Java System.
Na caixa de combinação Tipo de servidor, escolha Servidor de aplicativos Sun Java System.
Na caixa de combinação da versão do J2EE, escolha J2EE 1.4. Esta configuração define a versão da especificação do J2EE que o IDE usa para gerar código e manter os descritores de implantação.
Clique em Próximo.
Na página Pacotes de fontes do assistente, você pode adicionar raízes de fontes extras e testar raízes de pacotes. Uma vez que nosso exemplo tem somente uma raiz de fonte, não é necessário qualquer configuração nesta página.
Na caixa de combinação Nível das fontes, selecione JDK 1.4. Esta configuração indica para o IDE quais classes da plataforma Java SE usar na conclusão de código e no realce de erros. Ela não define o JDK de destino para o projeto. Você deve definir o JDK de destino no script Ant. Observação: O IDE verifica todas as plataformas Java registradas para uma plataforma com um número de versão coincidente e usa esta plataforma para fornecer Javadoc e código-fonte para depuração. Para registrar uma plataforma Java e especificar o código-fonte e a localização do Javadoc da plataforma, escolha Ferramentas > Gerenciador de plataformas.
Clique em Finalizar. O projeto de forma livre cmpcustomer-ejb é exibido na janela Projetos e na janela Arquivos.
Configurando a classpath do projeto
Em projetos de forma livre, o script Ant gerencia todas as configurações da classpath. No IDE, você declara a classpath do projeto para coincidir com as configurações definidas no script Ant. Essas configurações são usadas para fornecer a conclusão de código, o realce de erros e a refatoração do projeto.
Para todos os projetos de módulo EJB de forma livre, é necessário adicionar à classpath a biblioteca j2ee.jar da instalação local do servidor de aplicativos da Sun Java System.
Na janela Projetos, clique com o botão direito do mouse no nó do projeto cmpcustomer-ejb-freeform e escolha Propriedades.
Clique em Classpath das fontes Java no painel direito da caixa de diálogo. Clique em Adicionar JAR/pasta. Navegue até a pasta lib na pasta de instalação do servidor de aplicativos, selecione j2ee.jar e clique em Abrir.
Configurando saídas de projetos
Para definir dependências entre projetos, o IDE precisa conhecer o nome e o local das saídas de construção e o diretório de saída do Javadoc. Você deve declarar essas dependências nas propriedades do projeto.
Na janela Projetos, clique com o botão direito do mouse no nó do projeto cmpcustomer-ejb-freeform e escolha Construir projeto para gerar saídas de construção.
Na janela Projetos, clique com o botão direito do mouse no nó do projeto cmpcustomer-ejb-freeform e escolha Construir projeto para gerar saídas de construção.
Clique com o botão direito do mouse no nó do projeto cmpcustomer-ejb-freeform e escolha Propriedades.
Clique em Saída no painel direito da caixa de diálogo. Especifique cada saída de construção, assim como o diretório de saída do Javadoc, e clique em Fechar.
Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .