# Conformidade com o J2EE: API de transação Java e extensões javax.sql

A J2EE, ou Java 2 Platform, Enterprise Edition, é um padrão para desenvolvimento de aplicativos empresariais, baseado em componentes reutilizáveis em um ambiente de várias camadas (multi-tier). Além das funcionalidades da Java 2 Platform, Standard Edition (J2SE), a J2EE adiciona suporte a Enterprise Java Beans (EJBs), Java Server Pages (JSPs), Servlets, XML, e muito mais. A arquitetura J2EE é utilizada para unir tecnologias existentes e aplicativos empresariais em um único ambiente gerenciável.

O Derby é um componente em conformidade com a J2EE em um sistema J2EE distribuído. Como tal, é parte de um sistema maior que inclui, entre outras coisas, um servidor JNDI , um módulo de pool de conexões, um gerenciador de transações, um gerenciador de recursos, e aplicativos dos usuários. Dentro deste sistema, o Derby pode servir como gerenciador de recursos.

Para obter mais informações sobre a J2EE, deve ser vista a especificação da J2EE disponível na página http://java.sun.com/j2ee/docs.html.

Para se qualificar como um gerenciador de recursos em um sistema J2EE, é requerido pela J2EE suporte a estas áreas básicas:

- Suporte JNDI.

  Permite aos aplicativos que fazem a chamada registrar nomes para os bancos de dados, e acessá-los através destes nomes em vez de através de URL de conexão com o banco de dados. A implementação de uma das extensões do JDBC, javax.sql.DataSource, fornece este suporte.

- Pool de conexões.

  Mecanismo pelo qual um servidor de pool de conexões mantém um conjunto de conexões abertas para o gerenciador de recursos (Derby). Um usuário requisitando uma conexão pode obtê-la entre as conexões disponíveis no pool. Este pool de conexões é útil em ambientes cliente/servidor, porque o estabelecimento de uma conexão é relativamente dispendioso. Em um ambiente incorporado as conexões são muito menos dispendiosas, tornando a melhoria de desempenho do pool de conexões insignificante. A implementação de duas extensões do JDBC, javax.sql.ConnectionPoolDataSource e javax.sql.PooledConnection, fornecem este suporte.

- Suporte ao XA.

  O XA é um dos diversos padrões para gerenciamento de transações distribuídas. É baseado na efetivação de duas fases (two-phase commit). As interfaces javax.sql.XAxxx, junto com o pacote java.transaction.xa, são uma implementação abstrata do XA. Para obter mais informações sobre o XA deve ser consultado X/Open CAE Specification-Distributed Transaction Processing: The XA Specification, X/Open Document No. XO/CAE/91/300 ou ISBN 1 872630 24 3. A implementação da API do JTA, as interfaces do pacote java.transaction.xa (javax.sql.XAConnection, javax.sql.XADataSource, javax.transaction.xa.XAResource, javax.transaction.xa.Xid, e javax.transaction.xa.XAException), fornecem este suporte.

Exceto pelas interfaces JDBC do núcleo, estas interfaces não são visíveis pelos aplicativos do usuário final; em vez disso, são utilizadas no sistema somente pelos outros componentes do lado servidor.
Nota: Para obter informações sobre as classes que implementam estas interfaces, e como utilizar o Derby como gerenciador de recursos, deve ser visto o capítulo 6, "Utilização do Derby como gerenciador de recursos J2EE", no Guia do Desenvolvedor do Derby.

- JVM e bibliotecas para as funcionalidades do J2EE
- A API do JTA
- javax.sql: Extensões JDBC