Introdução ao Suporte para a tecnologia Java EE no IDE NetBeans
O IDE NetBeans foi criado em cooperação estreita com as equipes Java EE e GlassFish para oferecer a maior integração e a de mais fácil uso possível da especificação Java EE. O IDE NetBeans é o modo mais fácil de aprender e se tornar produtivo em programação Java EE.
Este documento oferece uma introdução aos conceitos principais das especificações Java EE e de como eles se relacionam com sua programação prática. Os seguintes tópicos são tratados:
A plataforma Java EE simplifica a implementação removendo a necessidade de descritores de implementação, exceto do descritor de implementação de que a especificação do servlet necessita, o arquivo web.xml. Outros descritores de deployment, como o ejb-jar.xml e entradas relacionadas aos serviços Web no web.xml, estão obsoletos. Os descritores de deployment do J2EE 1.4 eram em geral complexos e era fácil cometer erros ao preenchê-los. Em vez disso, a plataforma Java EE usa “anotações”. Anotações são modificadores Java, semelhantes a público e privado, que você especifica no código. Por exemplo, a especificação do EJB 3, que é um subconjunto da especificação do Java EE , define anotações para o tipo de Bean, tipo de interface, referências de recurso, atributos de transação, segurança, e mais. Um conjunto de anotações similar é fornecido para serviços Web pela especificação do JAX-WS 2.0. Algumas anotações são usadas para gerar artefatos. Outras são usadas para documentar seu código. Outras ainda fornecem serviços otimizados, como segurança ou lógica específica do tempo de execução. Em resumo, a plataforma Java EE fornece anotações para as seguintes tarefas, entre outras:
Definir e usar serviços Web
Desenvolver aplicativos do software EJB
Mapear classes da tecnologia Java para XML
Mapear classes da tecnologia Java para bancos de dados
Mapear métodos para operações
Especificar dependências externas
Especificar informações de deployment, inclusive atributos de segurança
Anotações são marcadas com um caractere @. No IDE, quando você cria um tipo que faz uso de anotações no Java EE , espaços reservados relacionados são fornecidos no código gerado. Por exemplo, quando você usa o IDE para criar um Bean de sessão sem estado, é gerado o código abaixo, que inclui a anotação @Stateless():
package mypackage;
import javax.ejb.*;
@Stateless()
public class HelloWorldSessionBean implements mypackage.HelloWorldSessionLocal {
}
O auto-completar de código oferece acesso a atributos de anotação específicos do item sob o cursor. Por exemplo, quando você pressiona Ctrl-Espaço nos parênteses de uma anotação @WebService(), você vê o seguinte:
Cada atributo tem valores padrão. Portanto, não é necessário especificar quaisquer atributos, a não ser que você deseje usar um valor diferente do valor padrão. Em casos simples, o valor padrão é suficiente, o que significa que você nem sequer precisa fornecer atributos.
Desenvolvimento simplificado do software EJB
A nova API do EJB 3.0 facilita o desenvolvimento do software ao reduzir e simplificar a quantidade de trabalho exigida do desenvolvedor. Em outras palavras, menos classes e menos códigos.
Isto é possível porque uma quantidade maior do trabalho é agora executada pelo contêiner.
Eis alguns recursos e benefícios do EJB 3:
Menos classes e interfaces obrigatórias. Não são mais necessárias interfaces iniciais e de objeto para componentes EJB, porque o contêiner agora é responsável pela exposição dos métodos necessários. É necessário somente fornecer a interface empresarial. Você pode usar anotações para declarar componentes EJB e o contêiner irá gerenciar as transações.
Não há mais descritores de deployment. Você pode usar anotações diretamente na classe para informar ao contêiner sobre dependências e configurações que anteriormente eram definidas em descritores de deployment. Se não houver instruções específicas, o contêiner usará regras padrão para manipular as situações mais comuns.
Pesquisas simples. O EJBContext permite que você pesquise objetos no espaço de nome JNDI diretamente na classe.
Mapeamento relacional de objeto simplificado. A nova API de persistência de Java torna mais simples e transparente o mapeamento relacional de objeto ao permitir que você use anotações em POJOs para mapear objetos de Java para bancos de dados relacionais.
No IDE, você pode codificar Beans empresariais assim como codificaria classes Java, usando auto-completar de código e dicas do editor para implementar os métodos corretos e manter as classes em sincronia com as interfaces. Não é necessário usar comando e caixas de diálogo especiais para gerar coisas como métodos empresariais ou operações de serviço Web, embora os comandos ainda estejam disponíveis para ajudar você a se familiarizar com a sintaxe de código do Java EE.
Uso de injeção de dependência para acessar recursos
A injeção de dependência permite que um objeto use anotações para solicitar recursos externos diretamente. Isto resulta em código mais limpo, porque não é mais necessário sobrecarregar o código com a criação de recursos e código de pesquisa.
Você pode usar injeção de recursos em componentes EJB, contêineres da Web e clientes.
Para solicitar a injeção de um recurso, um componente usa a anotação @Resource ou, no caso de alguns recursos especializados, as anotações @EJB e @WebServiceRef. Entre os recursos que podem ser injetados estão:
Objeto SessionContext
Objeto DataSources
Interface EntityManager
Outros Beans empresariais
Serviços Web
Filas de mensagem e tópicos
Fábricas de conexão para adaptadores de recursos
No IDE, o Editor de código-fonte fornece autocompletar de código completo para anotações de injeção de recursos fornecidas pela plataforma Java EE. Além disso, o IDE injeta automaticamente recursos nos arquivos quando você executa comandos como Chamar EJB e Usar banco de dados.
Modelo de API da persistência de Java
A plataforma Java EE introduz a nova API da persistência de Java, que foi desenvolvida como parte do JSR-220. A API da persistência de Java também pode ser usada fora de componentes EJB, por exemplo em aplicativos Web e clientes de aplicativos, assim como também fora da plataforma Java EE, em aplicativos Java SE.
A API da persistência de Java tem os seguintes recursos-chave:
Entidades são POJOs. Ao contrário de componentes EJB, que usavam persistência gerenciada por contêiner (CMP), objetos de entidade que usam as novas APIs não são mais componentes e não precisam mais estar em um módulo EJB.
Mapeamento relacional de objeto padronizado. A nova especificação padroniza a manipulação do mapeamento relacional de objeto, liberando o desenvolvedor de aprender estratégias específicas do fornecedor.
A API da persistência de Java usa anotações para especificar informações do mapeamento relacional de objeto, mas ainda oferece suporte a descritores XML.
Consultas nomeadas. Uma consulta nomeada é agora uma consulta estática expressada em metadados. A consulta pode ser uma consulta da API da persistência de Java ou uma consulta nativa. Isto simplifica muito a reutilização de consultas.
Regras de empacotamento simples. Uma vez que os beans de entidade são classes de tecnologia Java simples, eles podem ser empacotados praticamente em qualquer local em um aplicativo Java EE. Por exemplo, Beans de entidade podem fazer parte de um JAR de EJB, JAR de cliente-aplicação, WEB-INF/lib, WEB-INF/classes, ou mesmo parte de um JAR de utilitário em um arquivo de arquivo de aplicação empresarial (EAR). Com estas regras de empacotamento simples, não é mais necessário fazer com que um arquivo EAR use Beans de entidade de uma aplicação Web ou de um cliente de aplicativo.
Entidades desanexadas. Uma vez que os beans de entidade são POJOs, eles podem ser serializados e enviados na rede para um espaço de endereço diferente e usados em um ambiente alheio a persistência. Como resultado, não é mais necessário usar objetos de transferência de dados (DTOs).
API de EntityManager. Os programadores de aplicativos agora podem usar uma API de EntityManager padronizada para desempenhar operações Create Read Update Delete (CRUD) que envolvem entidades.
O IDE oferece ferramentas para trabalhar com a nova API da persistência de Java. Você pode gerar classes de entidade automaticamente a partir de um banco de dados, ou classes de entidade de código manualmente.
O IDE também fornece modelos e editores de gráfico para criar e manter unidades de persistência. Consulte Introdução aos aplicativos do Java EE 6 para obter mais informações sobre o uso da API Java Persistence.
Serviços Web
Na plataforma Java EE , o uso de anotações aperfeiçoou e simplificou bastante o suporte de serviços Web. As especificações seguintes contribuíram para esta área: JSR 224, Java API para serviços Web baseados em XML (JAX-WS) 2.0; JSR 222, arquitetura Java para vinculação de XML (JAXB) 2.0; e JSR 181, metadados de serviços Web para a plataforma Java.
JAX-WS 2.0
JAX-WS 2.0 é a nova API para serviços Web na plataforma Java EE. Como um sucessor do JAX-RPC 1.1,
o JAX-WS 2.0 mantém o modelo de programação RPC natural enquanto se aprimora em vários sentidos: vinculação de dados,
protocolo e independência de transporte, suporte ao estilo REST de serviços Web, e facilidade de desenvolvimento.
Uma diferença crucial do JAX-RPC 1.1 é que toda a vinculação de dados agora foi delegada ao JAXB 2.0.
Isso permite que serviços Web baseados em JAX-WS usem 100% do Esquema XML, o que resulta em uma interoperabilidade aprimorada e facilidade de uso. As duas tecnologias são bem integradas, de modo que os usuários não precisam manipular dois conjuntos de ferramentas. Ao iniciar a partir de classes da tecnologia Java, JAXB 2.0 pode gerar documentos do Esquema XML que são incorporados automaticamente a um documento de Web Service Description Language (WSDL), de maneira que os usuários não precisam executar manualmente esta integração propensa a erros.
Pronta para ser utilizada, JAX-WS 2.0 oferece suporte aos protocolos SOAP 1.1, SOAP 1.2 e XML/HTTP. A extensibilidade de protocolos foi uma meta desde o início, e JAX-WS 2.0 permite que os fornecedores ofereçam suporte a protocolos e codificações adicionais para um melhor desempenho -- por exemplo, o FAST Infoset -- ou para aplicativos especializadas. Os serviços Web que usam anexos para otimizar o envio e o recebimento de dados binários grandes podem tirar proveito do MTOM/XOP (abreviatura de mecanismo de otimização de transmissão de mensagens/pacote otimizado binário XML) padronizado de W3C sem qualquer efeito adverso sobre o modelo de programação. (Veja esta página para obter informações sobre MTOM/XOP.)
Antes da tecnologia Java EE , a definição de um serviço Web requeria descritores longos e difíceis de manejar. Agora é fácil como colocar a anotação @WebService em uma classe de tecnologia Java. Todos os métodos públicos na classe são publicados automaticamente como operações de serviço Web e todos os argumentos são mapeados para tipos de dados do Esquema XML usando JAXB 2.0.
Serviços Web assíncronos
Uma vez que as invocações do serviço Web ocorrem em uma rede, as chamadas podem ter uma duração de tempo imprevisível. Diversos clientes, principalmente os interativos, como aplicativos de área de trabalho baseadas em JFC/Swing, experimentam séria degradação de desempenho por terem de aguardar uma resposta do servidor. Para evitar tal degradação, JAX-WS 2.0 fornece uma nova API de cliente assíncrona. Com esta API, os programadores de aplicativos já não precisam criar encadeamentos próprios. Em vez disso, podem confiar no tempo de execução da JAX-WS para gerenciar invocações remotas de longa duração.
Os métodos assíncronos podem ser usados juntamente com qualquer interface gerada por WSDL, assim como com a API Dispatch mais dinâmica. Para sua conveniência, ao importar um documento WSDL, você pode precisar de métodos assíncronos a serem gerados por qualquer uma das operações definidas pelo serviço Web.
Existem dois modelos de uso:
No modelo de sondagem, você faz uma chamada. Quando está preparado, solicita os resultados.
No modelo de retorno de chamada, você registra um manipulador. Quando a resposta chega, você é notificado.
Observe que o suporte de invocação assíncrona não é totalmente implementado no lado do cliente, de maneira que nenhuma alteração é necessária no serviço Web de destino.
O IDE oferece ferramentas para trabalhar com a JAX-WS. Você pode usar modelos no assistente para Novo arquivo para gerar artefatos JAX-WS. Os serviços Web assíncronos podem ser criados por meio de um editor de Personalização de serviço Web. A funcionalidade de autocompletar código inclui anotações que você pode utilizar nos serviços Web.
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 .