Para projetos convertidos do EJB 1.1 para EJB 2.x, devem ser executadas
etapas para migrar os projetos EJB 1.1 existentes para o EJB 2.x.
Nota: Os beans do EJB 2.x são suportados somente em um projeto EJB 2.x (apesar do projeto 2.x também suportar os beans 1.1).
- Para qualquer bean CMP 1.1, substitua cada campo CMP por métodos abstratos getXXX e setXXX.
(Então, é necessário que a classe de beans seja abstrata).
- Para qualquer CMP, crie um método getXXX e setXXX abstrato para a chave primária.
- Para qualquer método localizador CMP 1.1, crie um método EJBQL (EJB Query Language)
para cada método localizador.
Nota: EJB Query Language tem as seguintes limitações no
Rational Application
Developer V6.0:
- As consultas do EJB Query Language envolvendo EJBs com chaves compostas de relações
com outros EJBs aparecerão como inválidas e provocarão erros no tempo de implementação.
- O suporte ao IBM EJB
Query Language estende a especificação do EJB 2.x de diversas maneiras,
diminuindo algumas restrições, incluindo suporte para mais funções do DB2 e
assim por diante. Se a portabilidade através de diversos bancos de
dados de fornecedores ou ferramenta de implementação de EJB for uma
preocupação, deve-se tomar cuidado para gravar todas as consultas do
EJB Query Language estritamente de acordo com as instruções descritas
no Capítulo 11 da especificação do EJB 2.x.
- Para qualquer localizador CMP 1.1, retorne
java.util.Collection em vez de
java.util.Enumeration.
- Para qualquer bean CMP 1.1, altere todas as ocorrências de this.field = value para setField(value) em ejbCreate() e no código todo.
- Atualize seu tratamento de exceção (comportamento de reversão) para exceções
não de aplicativos:
- Ative javax.ejb.EJBException ao invés de java.rmi.RemoteException para comunicar exceções que não sejam do
aplicativo.
- No EJB 2.x e 1.1, todas as exceções não de aplicativos lançadas pela
instância resultam na reversão da transação na qual a instância foi executada e
no descarte da instância.
- Atualize seu tratamento de Exceção (comportamento de reversão) para exceções de
aplicativos:
- No EJB 2.x e 1.1, uma exceção de aplicativo não faz com que o contêiner
reverta uma transação automaticamente.
- No EJB 1.1, o contêiner executa a reversão apenas se a
instância tiver sido chamada com o método setRollbackOnly()
em seu objeto EJBContext.
- Atualize todos os valores padrão específicos da definição de aplicativo do CMP para que estejam em ejbCreate (não utilizando variáveis globais, pois os contêineres do EJB 1.1
definiram todos os campos como valores padrão genéricos antes de chamar ejbCreate, que sobrescreverá todos os padrões específicos do aplicativo anterior).