Métodos de Consulta JNDI Diretos e Indiretos para Origens de Dados
É possível utilizar um método direto ou indireto para o nome da JNDI (Java™ Naming and Directory Interface), como jdbc/DataSource, para consultar uma origem de dados.
Direto
[10/5/07 11:40:38:468 CDT] 0000002e ConnectionFac W J2CA0294W: Consulta direta da JNDI do recurso jdbc/myDatasource.
Os seguintes valores padrão são utilizados:
[Resource-ref CMConfigData key items]
res-auth: 1 (APPLICATION)
res-isolation-level: 0 (TRANSACTION_NONE)
res-sharing-scope: true (SHAREABLE)
loginConfigurationName: null
loginConfigProperties: null
[Resource-ref non-key items]
isCMP1_x: false (não CMP1.x)
isJMS: false (não JMS)
commitPriority 0
Java EE Name: not set
Resource ref name: not set
isCMP: false (not set)
O primeiro desses atributos, res-auth, determina o tipo de autenticação feito. Essa configuração padrão informa que o alias de autenticação gerenciado pelo componente será utilizado se você não especificar uma especificação de ativação ou não especificar o nome do usuário e a senha na chamada getConnection. Ela informa que o alias gerenciado por contêiner não é utilizado.
A segunda dessas configurações, res-isolation-level, informa que o nível de isolamento é configurado com as definições "padrão". Para um enterprise bean, você pode definir isso no próprio bean EJB (Enterprise JavaBeans). Para um servlet que obtém uma conexão, isso resulta no nível de isolamento sendo Repeatable_Read. Esse é um nível de isolamento bem restritivo. Isso pode levar a uma diminuição no desempenho, porque os pedidos de aplicativos bloquearão mais linhas do que com um nível de isolamento menos restritivo.
Finalmente, o res-sharing-scope é configurado como Compartilhável, o que significa o uso de uma conexão que pode ser compartilhada. Para alguns aplicativos, uma conexão que pode ser compartilhada está adequado. Para outros, especificamente aqueles servlets que obtém várias conexões com um único método service(), não está.
Para evitar surpresas que possam acompanhar essas configurações, altere seu aplicativo para que utilize um nome de JNDI indireto em vez do nome de JNDI direto e crie uma referência de recurso.
Indireto
Para utilizar valores diferentes dos padrões, utilize uma ferramenta de montagem para definir sua referência de recurso. A referência de recurso também pode ser criada nos editores do Descritor de Implementação EJB (ejb-jar.xml), do Descritor de Implementação da Web (web.xml) ou do Descritor de Implementação do Aplicativo Cliente (application-client.xml) utilizando uma ferramenta de montagem. Após a definição da referência de recurso, você pode realizar uma consulta de JNDI indireta (utilizando o contexto java:comp/env). Em seguida, os valores para as propriedades da referência de recurso definidos na referência de recurso serão utilizados e a mensagem J2CA0122I não mais aparecerá. Leia o tópico sobre criação de uma referência de recurso para obter informações adicionais.