Dicas de relacionamentos e solução de problemas de EJBDEPLOY

Utilize estas informações para resolver problemas relacionados ao EJBDEPLOY.

[z/OS]

DB2 for z/OS Versão 7.x

Podem existir problemas quando o EJBDeploy cria um relacionamento de dados no DB2 for z/OS Versão 7.x. O EJBDeploy cria uma tabela com um composto das duas chaves primárias dos EJBs que estão relacionadas entre si. Se as chaves compostas tiverem mais de 254 caracteres, o DB2 para z/OS V7.x não aceitará este relacionamento e ocorrerá o seguinte erro:
DSNT408I SQLCODE = -613, ERRO:  A CHAVE PRIMÁRIA OU UMA RESTRIÇÃO EXCLUSIVA 
É MUITO LONGA OU TEM MUITAS COLUNAS                                         
DSNT418I SQLSTATE   = 54008 SQLSTATE RETURN CODE              
Este problema pode ser visto quando as chaves primárias criadas para os dois beans relacionados tiverem chaves primárias que são cadeias. Isso resulta no composto ser formato por 2 chaves primárias varchar(250) chegando a um total de 500, que é maior do que o máximo de 254 do DB2 for z/OS versão 7.x.
Coisas a serem consideradas ao usar mapeamentos de cima para baixo para assegurar que este problema não ocorra:
  • Os mapeamentos de cima para baixo são uma orientação e devem ser revisados com o DBA.
  • Os esquemas criados de cima para baixo por EJBDeploy foram projetados apenas para teste, e como uma diretriz para o esquema real necessário. O uso do mapeamento meet-in-the-middle não apresenta este problema.
  • O problema de restrição de chave composta não ocorre ao usar o DB2 V8, que tem um comprimento de chaves de, no máximo, 2 K.

EJBDEPLOY_JVM_ARGS:

Configure a propriedade EJBDEPLOY_JVM_ARGS para substituir opções da Java Virtual Machine (JVM) que são transmitidas ao código que implementa EJBs (ejbdeploy.sh). Defina essa propriedade em uma das seguintes localizações: deploymentmanager/bin/setupCmdLine.sh ou appServerHome/bin/setupCmdLine.sh

Por exemplo, a seguir é especificado que o SQL não qualificado deve ser gerado:

export EJBDEPLOY_JVM_ARGS="-DEJBDEPLOY_GENERATE_UNQUALIFIED_SQL=true" 

O conversor definido para a chave primária não será chamado no seu valor de chave estrangeira

O mapeamento de campos de chaves primárias a colunas de banco de dados pode usar um conversor para transformar os valores das chaves. Se um bean CMP (Container-Managed Persistence) usar um conversor para mapear sua chave primária, e se o bean tiver um relacionamento em que o bean na outra extremidade mantenha uma chave estrangeira, o mapeamento para a chave estrangeira não utilizará o conversor.

Os seguintes erros podem ocorrer, indicando que o conversor definido para a chave primária não foi chamada nesse valor de chave estrangeira. Durante a execução do comando ejbDeploy, a seguinte mensagem é recebida:
Nenhum mapeamento de tipo definido de Java datatype1
para Banco de Dados datatype2
Durante o tempo de execução, o aplicativo não localiza o bean CMP na outra extremidade do relacionamento.

Para contornar esta limitação, defina a sua própria chave estrangeira na tabela do banco de dados, e crie um mapeamento que utilize o mesmo conversor como definido para a chave primária nos beans corporativos na outra extremidade do seu relacionamento.


Ícone que indica o tipo de tópico Tópico de Referência



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rtrb_ejbdeploy390
Nome do arquivo: rtrb_ejbdeploy390.html