A transformação de UML para EJB transforma elementos de modelo UML (Unified Modeling Language) em beans corporativos e código Java. A transformação de UML para EJB é igual à Transformação de UML para Java, exceto que também pode gerar beans corporativos de elementos UML que são marcados com estereótipos a partir do perfil da transformação EJB.
Você deve estar familiarizado com a Transformação de UML para Java antes de utilizar a transformação de UML para EJB.
Guias de Configuração da Transformação de UML para EJB
Interpretação de Objetos de Origem
Classes <<entity>>
Classes <<service>>
Classes <<messageprocesso>>
Suporte para Tecnologias de Transformação Comuns
Integração com a Funcionalidade de Equipe
Relacionamentos de Origem para Destino
Você pode selecionar um ou vários itens na visualização Explorador de Modelos como a origem da transformação de UML para EJB. A tabela a seguir lista os itens aceitos pela transformação como uma origem válida:
Origem |
Resultado |
Modelo UML |
Transforma todos os pacotes, classes e interfaces contidos no modelo |
Pacote UML |
Transforma o pacote e todas as classes e interfaces contidos no pacote |
Classe UML |
Transforma a classe e todos os atributos, operações, classes e interfaces nessa classe Nota: O pai da classe deve ser um pacote UML |
Interface UML |
Transforma a interface e todos os atributos, operações, classes e interfaces nessa interface Nota: O pai da interface deve ser um pacote UML |
Enumeração UML |
Transforma a enumeração e todos os literais da enumeração Nota: O pai da enumeração deve ser um pacote UML |
Para gerar beans corporativos a partir de um modelo de origem, o modelo de origem deve ter o perfil da transformação EJB aplicado e os elementos do modelo devem ser marcados com os estereótipos do perfil da transformação EJB.
A transformação de UML para EJB aceita um único projeto EJB como seu destino. Você pode criar o projeto EJB com ou sem um projeto cliente. A transformação gera código na primeira pasta de origem detectada no projeto EJB (normalmente ejbModule) e na primeira pasta de origem detectada no projeto cliente (normalmente src), se existir.
A versão do contêiner EJB que está associada ao projeto EJB afeta a transformação de UML para EJB. Cada versão do contêiner EJB possui regras diferentes que devem ser seguidas para que a transformação de UML para EJB funcione e seja processada corretamente. A tabela a seguir lista as regras que estão associadas às diferentes versões de contêineres EJB:
Versão do contêiner EJB |
Regras que afetam a transformação |
2.1 |
Beans CMP (persistência gerenciada por contêiner) 1.1 devem ser gerados apenas com interfaces remotas |
2.0 |
Beans CMP 1.1 devem ser gerados apenas com interfaces remotas |
1.1 |
|
Se as regras citadas não forem seguidas antes da execução da transformação, a transformação EJB não processará o modelo de origem e não transformará nada.
O perfil de transformação EJB define estereótipos que a transformação de UML para EJB interpreta para gerar beans corporativos. A tabela a seguir lista os estereótipos que o perfil da transformação EJB define:
Estereótipo |
Elemento de destino |
Interpretação da Transformação de UML para EJB |
<<Entidade>> |
Classe UML |
Representa um bean de entidade |
<<service>> |
Classe UML |
Representa um bean de sessão com uma propriedade de estereótipo, hasState, definida inicialmente como false, significando que o bean de sessão é sem preservação de estado. |
<<messageprocessor>> |
Classe UML |
Representa um bean orientado a mensagens |
<<id>> |
Atributo UML |
Representa um campo CMP ou BMP a ser utilizado como parte da chave principal de um bean de entidade |
<<Query>> |
Operação UML |
Representa um método de consulta em um bean de entidade |
O perfil da transformação EJB também define as restrições a seguir:
Quando você validar um modelo com o perfil da transformação EJB, essas restrições gerarão avisos. Antes de executar a transformação de UML para EJB, você deverá corrigir os problemas que geram os avisos. Entretanto, os avisos não impedem que você execute a transformação.
A janela de configuração da transformação EJB contém seis guias: Destino, Entidade, Sessão, Avançado, Mapeamento e Comum. Esta seção descreve como as três primeiras guias afetarão a transformação EJB.
Você pode utilizar a guia Destino para selecionar o projeto EJB de destino no qual a transformação EJB gerará os arquivos de saída. Você pode criar um novo contêiner de destino mesmo que um projeto EJB esteja disponível. Cada projeto é associado a um único contêiner EJB. A transformação EJB suporta todas as versões de contêiner EJB disponíveis que o assistente de projetos EJB fornecerá.
A versão do contêiner de projetos EJB de destino pode restringir as opções disponíveis nas guias Entidade e Sessão. Para obter informações adicionais sobre as restrições de cada tipo de contêiner EJB, consulte a seção Contêiner EJB de Destino.
Você pode utilizar a guia Entidade para personalizar os beans de entidade recém-gerados. É possível configurar duas opções diferentes na guia Entidade: Tipo do bean de entidade e Interface do bean de entidade. A figura a seguir mostra a guia Entidade na janela de configuração da transformação EJB:
Dependendo da versão do contêiner EJB no projeto, é possível selecionar apenas determinadas combinações de propriedades antes de executar a transformação EJB. A tabela a seguir lista os tipos de beans de entidade suportados pela transformação, as interfaces suportadas pelos beans de entidade e a seleção da interface padrão:
Versão do contêiner EJB |
Tipo de bean de entidade |
Interfaces suportadas pelos beans de entidade |
Seleção padrão |
2.x |
CMP 2.x |
Local e remota |
Somente interfaces locais |
2.x |
CMP 1.1 |
Remota |
Somente interfaces remotas |
2.x |
BMP |
Local e remota |
Somente interfaces locais |
1.1 |
CMP 2.x |
Nenhum |
N/D |
1.1 |
CMP 1.1 |
Remota |
Somente interfaces remotas |
1.1 |
BMP |
Remota |
Somente interfaces remotas |
As seleções padrão na tabela refletem o comportamento padrão do assistente de criação do bean de entidade.
Se você selecionar uma combinação inválida de opções, será exibida uma mensagem de erro no início da janela de configuração da transformação EJB e o botão Executar que executa a transformação ficará indisponível. Quando você selecionar uma combinação válida de opções, o botão Executar ficará disponível e a mensagem de erro desaparecerá.
Você pode utilizar a guia Sessão para personalizar a geração de interfaces para beans de sessão recém-gerados. A figura a seguir mostra a guia Sessão na janela de configuração da transformação EJB:
Dependendo da versão do contêiner EJB no projeto, é possível selecionar apenas determinadas combinações de propriedades antes de executar a transformação EJB. A tabela a seguir lista as interfaces suportadas pela transformação para os beans de sessão, de acordo com a versão do contêiner, e a seleção da interface padrão:
Versão do contêiner EJB |
Interfaces suportadas pelos beans de sessão |
Seleção padrão |
1.1 |
Remota |
Somente interfaces remotas |
2.0 |
Local e remota |
Somente interfaces remotas |
2.1 |
Local e remota |
Somente interfaces remotas |
Se você selecionar uma combinação inválida de opções, será exibida uma mensagem de erro no início da janela de configuração da transformação EJB e o botão Executar que executa a transformação ficará indisponível. Quando você selecionar uma combinação válida de opções, o botão Executar ficará disponível e a mensagem de erro desaparecerá.
Para obter informações sobre a guia Avançado, consulte a documentação Transformação de UML para Java.
Esta seção descreve como a transformação de UML para EJB interpreta os elementos em um modelo UML e o que a transformação gera como saída.
A transformação de UML para EJB interpreta os tipos primitivos da mesma maneira que a Transformação de UML para Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.
A transformação de UML para EJB interpreta os pacotes da mesma maneira que a Transformação de UML para Java e os transforma em pacotes Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.
A transformação de UML para EJB interpreta as classes não marcadas da mesma maneira que a Transformação de UML para Java e as transforma em classes Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.
Se uma classe não marcada contiver atributos cujo tipo for de uma classe com estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não gerará os atributos. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
A transformação de UML para EJB interpreta as interfaces não marcadas da mesma maneira que a Transformação de UML para Java e as transforma em interfaces Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.
Se uma interface não marcada contiver atributos cujo tipo for de uma classe com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não gerará os atributos. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
A transformação de UML para EJB interpreta as enumeração não marcada da mesma maneira que a Transformação de UML para Java e as transforma em interfaces Java. Para obter informações adicionais, consulte a documentação Transformação de UML para Java.
A transformação de UML para EJB transforma uma classe marcada com o estereótipo <<entity>> em um bean de entidade CMP 2.x, CMP 1.1 ou BMP com um nome de bean igual ao nome da classe UML de origem. O tipo de bean de entidade gerado corresponde à opção selecionada na janela de configuração da transformação EJB, na guia Entidade.
A transformação sempre gera as classes Java a seguir para beans de entidade:
A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Somente interfaces remotas:
A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Somente interfaces locais:
A transformação gera as classes Java a seguir quando, na guia Entidade, você clica em Interfaces locais e remotas:
A transformação gera todas as classes na pasta de pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação gerará um pacote padrão denominado ejbs.
A transformação gera os arquivos de classe do bean e de classe da chave na árvore de origem do projeto EJB de destino.
A transformação gera os quatro arquivos de interface na árvore de origem do projeto cliente do projeto EJB de destino. Se não existir nenhum projeto cliente, a transformação gerará os arquivos de interface no projeto EJB de destino.
A transformação inclui dados que definem o bean de entidade para o descritor de implementação (ejb-jar.xml).
Relacionamentos de Generalização
Se a classe UML de origem do bean de entidade tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<entity>>, o bean de entidade representado pela classe se tornará a superclasse EJB do bean de entidade a ser gerado.
Ambos os beans de entidade devem ter o mesmo tipo. Portanto, os dois deverão ser CMP 2.x, CMP 1.1 ou BMP. Por exemplo, se o superbean for um bean de entidade CMP 2.x, todos os beans-filho deverão ser beans de entidade CMP 2.x. Se o superbean não tiver o mesmo tipo que o bean-filho esperado, a transformação gerará o bean-filho sem um relacionamento de generalização.
Relacionamentos de Realização
Se a classe UML de origem do bean de entidade tiver relacionamentos de realização (por exemplo, relacionamentos de implementação) com elementos da interface, as interfaces representadas pelas interfaces de origem serão implementadas pelas quatro interfaces (remota, home, local, home local).
Atributos Não Marcados - CMP 2.x
A transformação transforma atributos na classe UML de origem em campos CMP no bean de entidade, com as propriedades listadas na tabela a seguir:
Propriedade do campo CMP 2.x |
Valor do campo CMP |
Nome |
Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula |
Tipo |
Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.) |
Campo de chave |
Falso |
Gerar campo na classe de implementação do bean |
Falso |
Gerar getter e setter |
Verdadeiro |
Promover getter e setter para interfaces locais |
Verdadeiro (se existirem interfaces locais) |
Promover getter e setter para interfaces remotas |
Verdadeiro (se existirem interfaces remotas) |
IsArray |
Verdadeiro se o atributo UML tiver um valor superior finito |
Se o tipo de atributo for aquele de outro bean de entidade CMP 2.x, a transformação não transformará o atributo em um campo CMP, mas assumirá que ele faça parte de uma associação que deve ser transformada em um relacionamento EJB. Entretanto, se o tipo de atributo for aquele de outro bean corporativo que não é um bean de entidade CMP 2.x, a transformação não transformará o atributo em um campo CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Atributos Não Marcados - CMP 1.1
A transformação transforma atributos na classe UML de origem em campos CMP no bean de entidade, com as propriedades listadas na tabela a seguir:
Propriedade do campo CMP 1.1 |
Valor do campo CMP |
Nome |
Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula |
Tipo |
Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.) |
Campo de chave |
Falso |
Gerar campo na classe de implementação do bean |
Falso |
Gerar getter e setter |
Verdadeiro |
Promover getter e setter para interfaces locais |
Falso |
Promover getter e setter para interfaces remotas |
Verdadeiro (sempre) |
IsArray |
Verdadeiro se o atributo UML tiver um valor superior finito |
Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Atributos Não Marcados - BMP
A transformação transforma atributos na classe UML de origem em campos BMP no bean de entidade, com as propriedades listadas na tabela a seguir:
Propriedade do campo BMP |
Valor do campo BMP |
Nome |
Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula |
Tipo |
Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.) |
Campo de chave |
Falso |
Gerar campo na classe de implementação do bean |
Verdadeiro |
Gerar getter e setter |
Verdadeiro |
Promover getter e setter para interfaces locais |
Verdadeiro (se existirem interfaces locais) |
Promover getter e setter para interfaces remotas |
Verdadeiro (se existirem interfaces remotas) |
IsArray |
Verdadeiro se o atributo UML tiver um valor superior finito |
Se o tipo de atributo for aquele de outro bean de entidade ou EJB, a transformação não transformará o atributo em um campo BMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Atributos <<id>> - CMP 2.x e CMP 1.1
A transformação também transforma atributos na classe UML de origem marcados com o atributo <<id>> em campos CMP, mas com valores de propriedades diferentes, conforme listado na tabela a seguir. Esses campos CMP ajudam a formar a chave principal.
Propriedade dos campos CMP 2.x e CMP 1.1 |
Valor do campo CMP |
Nome |
Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula |
Tipo |
Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.) |
Campo de chave |
Verdadeiro |
Gerar campo na classe de implementação do bean |
Falso |
Gerar getter e setter |
Verdadeiro |
Promover getter e setter para interfaces locais |
Falso |
Promover getter e setter para interfaces remotas |
Falso |
IsArray |
Verdadeiro se o atributo UML tiver um valor superior finito |
Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo de chave CMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Atributos <<id>> - BMP
A transformação também transforma atributos na classe UML de origem marcados com <<id>> em campos BMP, mas com valores de propriedades diferentes, conforme listado na tabela a seguir. Esses campos BMP ajudam a formar a chave principal.
Propriedade do campo BMP |
Valor do campo BMP |
Nome |
Nome do atributo UML, com o primeiro caractere do nome do campo alterado para letra minúscula |
Tipo |
Tipo determinado a partir do tipo de atributo (consulte a tabela Mapa de Tipo.) |
Campo de chave |
Verdadeiro |
Gerar campo na classe de implementação do bean |
Verdadeiro |
Gerar getter e setter |
Verdadeiro |
Promover getter e setter para interfaces locais |
Falso |
Promover getter e setter para interfaces remotas |
Falso |
IsArray |
Verdadeiro se o atributo UML tiver um valor superior finito |
Se o tipo de atributo for aquele de outro bean de entidade ou bean corporativo, a transformação não transformará o atributo em um campo de chave BMP ou em uma associação. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Conforme ilustra a tabela a seguir, a transformação gera os campos CMP e BMP com tipos baseados no tipo de atributo de origem:
Tipo de atributo UML |
Tipo de campo CMP/BMP |
booleano |
booleano |
byte |
byte |
caractere |
caractere |
flutuante |
flutuante |
int |
int |
longo |
longo |
curto |
curto |
Booleano |
java.lang.Boolean |
Byte |
java.lang.Byte |
Caractere |
java.lang.Char |
Flutuante |
java.lang.Float |
Inteiro |
java.lang.Integer |
Longo |
java.lang.Long |
Curto |
java.lang.Short |
Cadeia |
java.lang.String |
outro |
Nome completo |
Operações Não Marcadas
A transformação transforma operações não marcadas na classe UML de origem em métodos de negócios no bean de entidade. Inicialmente, a operação é transformada da mesma maneira que uma operação em uma classe UML não marcada. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome do método em letra minúscula, se ele for um caractere em letra maiúscula válido. A operação transformada é incluída nas classes listadas na tabela a seguir, com algumas modificações.
Classe |
Modificações de métodos |
Classe de bean |
Sem alteração |
Interface local |
Método de interface |
Interface remota |
Método de interface, emite java.rmi.RemoteException |
Operações <<query>> - CMP 2.x
A transformação transforma operações <<query>> na classe UML de origem em um dos dois tipos de métodos de consulta: métodos localizadores e métodos de seleção. Os métodos de seleção existem somente em beans de entidade CMP 2.x.
A transformação gera métodos localizadores nas classes listadas na tabela a seguir, com algumas modificações:
Classe |
Modificações de métodos |
Interface home local (se existirem interfaces locais) |
|
Interface home remota (se existirem interfaces remotas) |
|
Nome da operação UML |
Nome do método localizador |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo de retorno analisado pela transformação Java |
Tipo de retorno do método localizador |
Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante) |
java.util.Collection |
<nome da classe de origem>[] |
java.util.Collection |
<nome da classe de origem> OU nulo |
|
<nome do tipo definido pelo usuário>[] |
java.util.Collection |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[] |
java.util.Collection |
<nome do tipo definido pelo usuário> |
Gerar um método de seleção em vez de um método localizador |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)> |
Gerar um método de seleção em vez de um método localizador |
A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método localizador gerado.
A transformação transformará uma operação de consulta em um método de seleção se a visibilidade da operação for privada ou se o tipo de retorno for diferente do nome da classe UML de origem e o tipo de bean de entidade for CMP 2.x.
Visibilidade da operação |
Tipo de retorno |
Tipo de método |
Privado |
Igual ao nome da classe de origem |
Método de seleção |
Não privado |
Igual ao nome da classe de origem |
Método localizador |
Privado |
Diferente do nome da classe de origem |
Método de seleção |
Não privado |
Diferente do nome da classe de origem |
Método de seleção |
A transformação gera métodos de seleção na classe de bean, com as modificações a seguir:
Nome da operação UML |
Nome do método de seleção |
xxx |
ejbSelectXxx |
selectXxx |
ejbSelectXxx |
SelectXxx |
ejbSelectXxx |
ejbSelectXxx |
ejbSelectXxx |
Tipo de retorno analisado pela transformação Java |
Tipo de retorno do método de seleção |
Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante) |
Nome completo do tipo de coleta (por exemplo, java.util.Collection) |
<nome da classe de origem>[] |
java.util.Collection |
<nome da classe de origem> OU nulo |
Nome da interface local |
<nome do tipo definido pelo usuário>[] |
java.util.Collection |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[] |
java.util.Collection |
<nome do tipo definido pelo usuário> |
Nome do tipo definido pelo usuário |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)> |
Diferente do nome da classe de origem |
A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método de seleção gerado.
Operações <<query>> - CMP 1.1
A transformação transforma operações <<query>> na classe UML de origem em um tipo de método de consulta: métodos localizadores. Os beans de entidade CMP 1.1 não suportam métodos de seleção, uma vez que estão disponíveis apenas para os beans de entidade CMP 2.x. Portanto, independentemente do tipo de retorno e da visibilidade da operação de <<query>>, a transformação sempre gerará um método localizador na interface home remota do bean de entidade.
Conforme ilustra a tabela a seguir, a transformação sempre gera métodos localizadores na interface home remota, com algumas modificações:
Classe |
Modificações de métodos |
Interface home remota |
|
Nome da operação UML |
Nome do método localizador |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
Tipo de retorno analisado pela transformação Java |
Tipo de retorno do método localizador |
Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante) |
java.util.Collection |
<nome da classe de origem>[] |
java.util.Collection |
<nome da classe de origem> OU nulo |
Nome da interface remota |
<nome do tipo definido pelo usuário>[] |
java.util.Collection |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[] |
java.util.Collection |
<nome do tipo definido pelo usuário> |
Nome da interface remota |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)> |
Nome da interface remota |
A transformação EJB cria uma tarefa que indica que você precisa incluir manualmente uma consulta no descritor de implementação de cada método localizador gerado.
Operações <<query>> - BMP
A transformação transforma operações <<query>> na classe UML de origem em um tipo de método de consulta: métodos localizadores. Os beans de entidade BMP de qualquer versão não suportam métodos de seleção, uma vez que estão disponíveis apenas para os beans de entidade CMP 2.x. Portanto, independentemente do tipo de retorno e da visibilidade da operação <<query>>, a transformação sempre gerará um método localizador na classe de implementação do bean. A transformação gerará então métodos localizadores nas interfaces existentes do bean de entidade.
Conforme ilustra a tabela a seguir, a transformação gera métodos localizadores nas classes a seguir, com algumas modificações:
Classe |
Modificações de métodos |
Interface home local |
|
Interface home remota (se existirem interfaces remotas) |
|
Classe de implementação do bean |
|
Nome da operação UML |
Nome do método localizador |
xxx |
findXxx |
findXxx |
findXxx |
FindXxx |
findXxx |
ejbFindXxx |
findEjbFindXxx |
EjbFindXxx |
findEjbFindXxx |
Nome da operação UML |
Nome do método localizador |
xxx |
ejbFindXxx |
findXxx |
ejbFindXxx |
FindXxx |
ejbFindXxx |
ejbFindXxx |
ejbFindEjbFindXxx |
EjbFindXxx |
ejbFindEjbFindXxx |
Tipo de retorno analisado pela transformação Java |
Tipo de retorno do método localizador |
Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante) |
java.util.Collection |
<nome da classe de origem>[] |
java.util.Collection |
<nome da classe de origem> OU nulo |
|
<nome do tipo definido pelo usuário>[] |
java.util.Collection |
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)>[] |
java.util.Collection |
<nome do tipo definido pelo usuário> |
|
<diferente do nome da classe de origem (por exemplo, Cadeia, Inteiro, etc.)> |
|
Tipo de retorno analisado pela transformação Java |
Tipo de retorno do método localizador |
Coleta mapeada (como Coleta, Lista, Conjunto e assim por diante) |
java.util.Collection |
<nome da classe>[] |
java.util.Collection |
<nome da classe> OU nulo |
Nome da classe da chave |
Classes Internas
Ignorado.
Interfaces Internas
Ignorado.
A transformação de UML para EJB transforma uma classe com o estereótipo <<service>> em um bean de sessão gerenciado por contêiner, sem preservação de estado ou com preservação de estado, com um nome de bean que seja igual àquele da classe UML de origem. A transformação sempre gera as classes Java a seguir para beans de sessão:
A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Somente interfaces remotas:
A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Somente interfaces locais:
A transformação gera as classes Java a seguir quando, na guia Sessão, você clica em Interfaces locais e remotas:
A transformação gera todas as classes na pasta de pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação criará um pacote padrão denominado ejbs.
A transformação gera o arquivo de classe de bean na árvore de origem do projeto EJB de destino.
A transformação gera os quatro arquivos de interface na árvore de origem do projeto cliente do projeto EJB de destino. Se não existir nenhum projeto cliente, a transformação gerará os arquivos de interface no projeto EJB de destino.
A transformação inclui dados que definem o bean de sessão para o descritor de implementação (ejb-jar.xml).
Propriedade de Estereótipo - hasState
Cada classe UML com um estereótipo <<service>> possui uma propriedade de estereótipo denominada hasState. Quando o valor de hasState for false, a transformação gerará essa classe UML como um bean de sessão sem preservação de estado. De modo contrário, quando o valor de hasState for verdadeiro, a transformação gerará a classe UML como um bean de sessão com preservação de estado.
Nota: A propriedade de estereótipo afeta somente aquelas classes UML que a transformação gera como novos beans de sessão.
Por padrão, o valor da propriedade hasState é false, que é consistente com as definições padrão no assistente de criação do bean de sessão.
Relacionamentos de Generalização
Se a classe UML de origem do bean de sessão tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<service>> e esse estereótipo tiver o mesmo valor da propriedade hasState, o bean de sessão representado pela classe se tornará a superclasse EJB do bean de sessão a ser gerado.
Relacionamentos de Realização
Se a classe UML de origem do bean de sessão tiver relacionamentos de realização (por exemplo, relacionamentos de implementação) com elementos da interface, as interfaces representadas pelas interfaces de origem serão implementadas pelas quatro interfaces (remota, home, local, home local).
Atributos
A transformação transforma atributos na classe UML de origem em propriedades Java na classe de bean. Para obter informações adicionais sobre como os atributos são transformados, consulte a documentação Transformação de UML para Java. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome da propriedade em letra minúscula, se ele for um caractere em letra maiúscula válido.
Se o tipo do atributo for de outro bean corporativo, a transformação EJB não gerará um campo e uma associação para o bean de sessão. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Operações
A transformação transforma operações na classe UML de origem em métodos de negócios no bean de sessão. Inicialmente, a operação é transformada da mesma maneira que uma operação em uma classe UML não marcada. A transformação reforça a nomenclatura com letras minúsculas tornando o primeiro caractere do nome do método em letra minúscula, se ele for um caractere em letra maiúscula válido. A operação transformada é incluída nas classes listadas na tabela a seguir, com algumas modificações.
Classe |
Modificações de métodos |
Classe de bean |
Sem alteração |
Interface local |
Método de interface |
Interface remota |
Método de interface, emite java.rmi.RemoteException |
A transformação aplica as seguintes regras para determinar o tipo de retorno da operação com base nos parâmetros da operação:
o A operação tem parâmetros de retorno e saída
o A operação tem mais de um parâmetro de saída
Classes Internas
Ignorado.
Interfaces Internas
Ignorado.
A transformação de UML para EJB transforma uma classe com o estereótipo <<messageprocessor>> em um bean orientado a mensagens com um nome de bean que seja igual àquele da classe UML de origem e que tenha dados padrão. A transformação gera a seguinte classe Java:
A transformação gera a classe na pasta do pacote que é gerada para o pacote-pai da classe UML de origem. Se você criar um modelo UML sem pacotes, a transformação criará um pacote padrão denominado ejbs.
A transformação gera o arquivo de classe de bean na árvore de origem do projeto EJB de destino.
A transformação inclui dados que definem o bean orientado a mensagens para o descritor de implementação (ejb-jar.xml).
Relacionamentos de Generalização
Se a classe UML de origem do bean orientado a mensagens tiver um relacionamento de generalização (por exemplo, um relacionamento de extensão) com outra classe UML com o estereótipo <<messageprocessor>>, o bean orientado a mensagens representado pela classe se tornará a superclasse EJB do bean de entidade a ser gerado.
Relacionamentos de Realização
Ignorado.
Atributos
A transformação transforma atributos na classe UML de origem em propriedades Java na classe de bean. Para obter informações adicionais sobre como os atributos são transformados, consulte a documentação Transformação de UML para Java. Se o tipo do atributo for de outro bean corporativo, a transformação EJB não gerará um campo e uma associação para o bean de sessão. Em vez disso, a transformação gravará uma mensagem no arquivo de log indicando que o atributo de origem não será transformado.
Operações
A transformação transforma operações na classe UML de origem em métodos Java comuns, como se o bean orientado a mensagens fosse uma classe Java.
Classes Internas
Ignorado.
Interfaces Internas
Ignorado.
Normalmente, a transformação transforma as associações da mesma maneira que a transformação de UML para Java: ela transforma os atributos de nó de extremidade em propriedades Java.
Se um nó de extremidade da associação for uma classe com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>, a transformação não o transformará. Em vez disso, a transformação gravará uma mensagem no arquivo de log no diretório de metadados indicando que a propriedade de nó de extremidade não foi transformada. A exceção a esta ocorrência ocorre quando a associação está entre duas classes com estereótipos <<entity>> e ambas são geradas como beans CMP 2.x. Desse modo, a transformação transformará a associação UML em um relacionamento EJB 2.0, que também é conhecido como um CMR (relacionamento gerenciado por contêiner). A tabela a seguir ilustra os mapeamentos entre as propriedades de associação e as propriedades de relacionamentos EJB:
Propriedade de associação |
Propriedade de relacionamento EJB |
End1 |
BeanA |
End2 |
BeanB |
Nome de End1 |
Nome CMR de BeanB |
Nome de End2 |
Nome CMR de BeanA |
Navegabilidade de End1 |
Navegabilidade de BeanB |
Navegabilidade de End2 |
Navegabilidade de BeanA |
|
|
|
|
A figura a seguir ilustra duas classes UML com estereótipos <<entity>>. A associação entre as classes será gerada em um CMR se a transformação gerar ambas as classes de entidade como beans de entidade CMP 2.x.
Depois que a transformação ocorrer, o descritor de implementação terá uma entrada para descrever o CMR entre AEntity e BEntity. Como ilustra a figura a seguir, o descritor de implementação do projeto pode exibir a associação entre os dois beans de entidade CMP 2.x:
A seguinte tabela lista como a transformação transforma dependências e gera referências EJB para classes com um estereótipo <<entity>>, <<service>> ou <<messageprocessor>>.
Origem da Dependência UML |
Destino da Dependência UML |
Destino do EJB |
Classe <<entity>> |
Classe <<entity>> |
Referência EJB |
Classe <<entity>> |
Classe <<service>> |
Referência EJB |
Classe <<messageprocessor>> |
Classe <<entity>> |
Referência EJB |
Classe <<messageprocessor>> |
Classe <<service>> |
Referência EJB |
Classe <<service>> |
Classe <<entity>> |
Referência EJB |
Classe <<service>> |
Classe <<service>> |
Referência EJB |
Quando um projeto J2EE (Java 2 Platform, Enterprise Edition) de destino incluir pelo menos um bean com o mesmo nome e espaço de nomes como uma classe UML na transformação, poderá ocorrer um cenário de reaplicação. Um cenário de reaplicação refere-se a quando o tipo do bean corporativo existente corresponde ao tipo do bean corporativo a ser gerado para a classe correspondente no modelo UML.
Quando o tipo do bean corporativo a ser gerado for incompatível com o tipo do bean corporativo existente, ocorrerá um cenário de confronto. Em um cenário de confronto, a transformação de UML para EJB não atualizará o bean existente e não gerará um novo bean corporativo.
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade CMP 2.x:
Bean corporativo a ser gerado |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
CMP 2.x |
CMP 2.x |
Reaplicação |
Atualizar campos CMP e métodos |
CMP 2.x |
CMP 1.1 |
Reaplicação |
Atualizar campos CMP e métodos como se fossem um cenário de reaplicação comum de CMP 1.1 para CMP 1.1 |
CMP 2.x |
BMP |
Reaplicação |
Atualizar campos BMP e métodos como se fossem um cenário de reaplicação BMP para BMP comum |
CMP 2.x |
Sessão (com ou sem preservação de estado) |
Confronto |
Deixar o bean de sessão intacto |
CMP 2.x |
Orientado a mensagens |
Confronto |
Deixar o bean orientado a mensagens intacto |
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade CMP 1.1:
Bean corporativo a ser gerado |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
CMP 1.1 |
CMP 2.x |
Reaplicação |
Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 2.x para CMP 2.x comum |
CMP 1.1 |
CMP 1.1 |
Reaplicação |
Atualizar campos CMP e métodos |
CMP 1.1 |
BMP |
Reaplicação |
Atualizar campos BMP, métodos e associações como se fossem um cenário de reaplicação BMP para BMP comum |
CMP 1.1 |
Sessão (com ou sem preservação de estado) |
Confronto |
Deixar o bean de sessão intacto |
CMP 1.1 |
Orientado a mensagens |
Confronto |
Deixar o bean orientado a mensagens intacto |
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de entidade BMP:
Bean corporativo a ser gerado |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
BMP |
CMP 2.x |
Reaplicação |
Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 2.x para CMP 2.x comum |
BMP |
CMP 1.1 |
Reaplicação |
Atualizar campos CMP e métodos como se fossem um cenário de reaplicação CMP 1.1 para CMP 1.1 comum |
BMP |
BMP |
Reaplicação |
Atualizar campos BMP e métodos |
BMP |
Sessão (com ou sem preservação de estado) |
Confronto |
Deixar o bean de sessão intacto |
BMP |
Orientado a mensagens |
Confronto |
Deixar o bean orientado a mensagens intacto |
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans de sessão:
Bean corporativo a ser gerado |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
Sessão (com ou sem preservação de estado) |
CMP 2.x |
Confronto |
Deixar o bean CMP 2.x intacto |
Sessão (com ou sem preservação de estado) |
CMP 1.1 |
Confronto |
Deixar o beanCMP 1.1 intacto |
Sessão (com ou sem preservação de estado) |
BMP |
|
Deixar o bean BMP intacto |
Sessão (com preservação de estado) |
Sessão (apenas com preservação de estado) |
Reaplicação |
Atualizar os campos e os métodos do bean de sessão |
Sessão (com preservação de estado) |
Sessão (apenas sem preservação de estado) |
Confronto |
Deixar o bean de sessão sem preservação de estado intacto |
Sessão (sem preservação de estado) |
Sessão (apenas com preservação de estado) |
Confronto |
Deixar o bean de sessão com preservação de estado intacto |
Sessão (sem preservação de estado) |
Sessão (apenas sem preservação de estado) |
Reaplicação |
Atualizar os campos e os métodos do bean de sessão |
Sessão (com ou sem preservação de estado) |
Orientado a mensagens |
Confronto |
Deixar o bean orientado a mensagens intacto |
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de reaplicação de beans orientados a mensagens:
Bean corporativo a ser gerado |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
Orientado a mensagens |
CMP 2.x |
Confronto |
Deixar o bean orientado a mensagens intacto |
Orientado a mensagens |
CMP 1.1 |
Confronto |
Deixar o bean orientado a mensagens intacto |
Orientado a mensagens |
BMP |
Confronto |
Deixar o bean orientado a mensagens intacto |
Orientado a mensagens |
Sessão (com ou sem preservação de estado) |
Confronto |
Deixar o bean orientado a mensagens intacto |
Orientado a mensagens |
Orientado a mensagens |
Reaplicação |
Atualizar os campos e os métodos do bean orientado a mensagens |
A tabela a seguir lista a resposta esperada da transformação para possíveis cenários de classes UML não marcadas:
Estereótipo na classe UML |
Bean corporativo existente |
Cenário esperado |
Resposta da transformação |
Não marcado |
CMP 2.x |
Reaplicação |
Atualizar os campos e os métodos do bean de entidade CMP 2.x em sua interface remota existente |
Não marcado |
CMP 1.1 |
Reaplicação |
Atualizar os campos e os métodos do bean de entidade CMP 1.1 em sua interface remota existente |
Não marcado |
BMP |
Reaplicação |
Atualizar os campos e os métodos do bean de entidade BMP em sua interface remota existente |
Não marcado |
Sessão (com ou sem preservação de estado) |
Reaplicação |
Atualizar os campos e os métodos da Sessão em sua interface remota existente |
Não marcado |
Orientado a mensagens |
Reaplicação |
Gerar uma classe Java comum |
Nos cenários de reaplicação de classes UML não marcadas, as atualizações de código para a interface remota do bean corporativo existente causam erros de construção no projeto EJB. Esses erros de construção ocorrem porque o código atualizado na interface remota não está de acordo com as especificações EJB para interfaces remotas. Se você pretende sobrescrever o bean corporativo inteiro, deverá remover o bean corporativo existente antes de executar a transformação EJB.
Esta seção discute a resposta da transformação a um cenário de reaplicação em mais detalhes e fornece informações adicionais sobre o que esperar da transformação após uma reaplicação.
Se ocorrer um cenário de reaplicação para um bean de entidade CMP 2.x, poderão ocorrer as modificações a seguir:
As modificações a seguir não deverão ocorrer:
Se ocorrer um cenário de reaplicação para um bean de entidade CMP 1.1, poderão ocorrer as modificações a seguir:
As modificações a seguir não deverão ocorrer:
Se ocorrer um cenário de reaplicação para um bean de entidade BMP, poderão ocorrer as modificações a seguir:
As modificações a seguir não deverão ocorrer:
Se ocorrer um cenário de reaplicação para um bean de sessão, poderão ocorrer as modificações a seguir:
As modificações a seguir não deverão ocorrer:
Se ocorrer um cenário de reaplicação para um bean orientado a mensagens, poderão ocorrer as modificações a seguir:
As modificações a seguir não deverão ocorrer:
A tabela a seguir lista como a transformação de UML para EJB processa relacionamentos:
Elemento de origem UML |
Elemento de origem visualizado |
Tipo de relacionamento |
Resultado da Transformação |
Classe com estereótipo <<entity>> ou <<service>> |
Interface Java (Interface UML) |
Implementação |
O bean corporativo gerado implementa a interface visualizada |
Classe com estereótipo <<entity>> ou <<service>> |
Interface Java (Interface UML) |
Realização |
O bean corporativo gerado implementa a interface visualizada |
Classe com estereótipo <<entity>> |
Bean de entidade visualizado (componente UML) |
Associação |
Relacionamento CMR |
Classe com estereótipo <<entity>>, <<service>> ou <<messageprocessor>> |
Bean de entidade ou bean de sessão visualizado (componente UML) |
Dependência |
Referência EJB |
A transformação de UML para EJB suporta a integração com a funcionalidade de equipe. Quando a transformação com um projeto de destino é executada em um ambiente controlado pela origem, o sistema avisa para incluir novos arquivos no controle de origem e para efetuar o registro de saída de arquivos existentes.
A transformação de UML para EJB fornece suporte de mapeamento semelhante àquele fornecido pela transformação de UML para Java. Para obter informações sobre como configurar e utilizar um modelo de mapeamento para executar uma transformação, consulte a documentação Transformação de UML para Java.
Quando as classes de origem são marcadas para serem transformadas em beans corporativos, a transformação utiliza o nome mapeado da classe de origem como o nome do bean para o bean corporativo gerado.
Se o recurso Gerar Relacionamentos de Origem para Destino estiver ativado, a transformação incluirá tags na documentação da API das classes e interfaces Java geradas. As tags contêm informações que permitem que as ferramentas rastreiem os arquivos gerados para o elemento de origem UML original.
Para beans corporativos gerados, todos os arquivos Java que a transformação gera para um bean corporativo possuem as tags da documentação API de origem para destino que apontam para a única classe de origem UML.
Termos de
uso | Feedback
(C) Direitos Autorais IBM Corporation 2004, 2005. Todos os Direitos Reservados.