Definição de Recursos de Origem de Dados nos Aplicativos
Os aplicativos podem definir as origens de dados em anotações ou no descritor de implementação. Esse tópico revisa semelhanças e compatibilidade com as origens de dados do WebSphere Application Server definidas no nível do servidor, do nó, do cluster ou da célula. Recursos opcionais na definição da origem de dados também são discutidos.
Propriedades Padrão para a Definição de Origem de Dados
Elemento de anotação | Elemento do descritor | Comentários |
---|---|---|
nome | nome | Nome JNDI da origem de dados. O nome deve estar em um dos espaços de nome java:global, java:app, java:module ou java:comp. |
className | nome de classe | O nome completo de classe a partir do driver JDBC que implementa javax.sql.XADataSource, javax.sql.ConnectionPoolDataSource, ou javax.sql.DataSource. |
databaseName | nome do banco de dados | O valor é fornecido para o driver JDBC. |
descrição | descrição | O valor é fornecido para o MBean DataSource. |
initialPoolSize | tamanho inicial do conjunto | O valor da propriedade é ignorado. No WebSphere Application Server, o tamanho inicial do conjunto sempre é 0. |
isolationLevel | nível de isolamento | Equivalente à propriedade customizada da origem de dados do WebSphere Application Server, webSphereDefaultIsolationLevel. Esse é um nível de isolamento de transação padrão para as novas conexões. |
loginTimeout | tempo limite de login | O valor é fornecido para o driver JDBC. |
maxIdleTime | tempo máximo de inatividade | Equivalente à propriedade do conjunto de conexões do WebSphere Application Server, unusedTimeout. Essa proprieadade é ignorada no contêiner do cliente onde o conjunto de conexões não é fornecido. |
maxPoolSize | tamanho máximo do conjunto | Equivalente à propriedade do conjunto de conexões do WebSphere Application Server, maxConnections. Essa proprieadade é ignorada no contêiner do cliente onde o conjunto de conexões não é fornecido. |
maxStatements | máximo de instruções | Define o número máximo de instruções para o conjunto de conexões. No WebSphere Application Server, cada conexão verificada possui seu próprio cache de instrução. Consequentemente, maxStatements é dividido (igualmente por arredondamento) entre o maxPoolSize para o conjunto. Se maxPoolSize for ilimitado, a verificação da instrução será desativada. |
minPoolSize | tamanho mínimo do conjunto | Equivalente à propriedade do conjunto de conexões do WebSphere Application Server, minConnections. Essa proprieadade é ignorada no contêiner do cliente onde o conjunto de conexões não é fornecido. |
password | password | Senha padrão para as solicitações de conexão que não especificam uma senha. Considere usar o alias de autenticação em vez de codificar permanentemente o nome de usuário e a senha no aplicativo. |
portNumber | número da porta | O valor é fornecido para o driver JDBC. |
serverName | nome do servidor | O valor é fornecido para o driver JDBC. |
transacional | transacional | No WebSphere Application Server, a propriedade transactional controla se a conexão está listada nas transações JTA. Quando transactional=false, as conexões não são listadas nas transações JTA, mas ainda é possível executar transações com relação ao banco de dados usando autocommit=true ou connection.commit/rollback com autocommit=false. Equivalente ao contrário da propriedade customizada da origem de dados do WebSphere Application Server, nonTransactionalDataSource. |
url | url | O valor é fornecido para o driver JDBC. Quando a URL é especificada, os valores databaseName, serverName, portNumber são ignorados. |
user | user | Nome do usuário padrão para as solicitações de conexão que não especificam um nome de usuário. Considere usar o alias de autenticação em vez de codificar permanentemente o nome de usuário e a senha no aplicativo. |
Propriedades do Fornecedor e Propriedades Customizadas
As propriedades do fornecedor do driver JDBC podem ser incluídas na definição da origem de dados. A maioria das propriedades customizadas do WebSphere Application Server também pode ser incluída na definição da origem de dados.
@DataSourceDefinition
(
name="java:app/env/myDataSource",
className="org.apache.derby.jdbc.EmbeddedXADataSource40",
databaseName="myDB",
properties=
{
// Vendor properties for Derby Embedded JDBC driver:
"createDatabase=create",
"connectionAttributes=upgrade=true",
// Custom properties for WebSphere Application Server:
"connectionTimeout=60",
"dataStoreHelperClass=com.ibm.websphere.rsadapter.DerbyDataStoreHelper",
"validateNewConnection=true",
"validateNewConnectionRetryCount=5"
},
serverName=""
)
O exemplo a seguir ilustra como a definição de origem de dados
é incluída no descritor de implementação:<data-source>
<name>java:app/env/myDataSource</name>
<class-name>org.apache.derby.jdbc.EmbeddedXADataSource40</class-name>
<database-name>myDB</database-name>
<property><name>createDatabase</name><value>create</value></property>
<property><name>connectionAttributes</name><value>upgrade=true</value></property>
<property><name>connectionTimeout</name><value>60</value></property>
<property><name>dataStoreHelperClass</name><value>com.ibm.websphere.rsadapter.DerbyDataStoreHelper</value></property>
<property><name>validateNewConnection</name><value>true</value></property>
<property><name>validateNewConnectionRetryCount</name><value>5</value></property>
<server-name/>
</data-source>
A seguir há uma lista de propriedades customizadas
do WebSphere Application
Server que podem ser configuradas dessa maneira: - Propriedades do conjunto de conexões:
- agedTimeout
- authDataAlias
- authMechanismPreference
- connectionTimeout
- defaultConnectionTypeOverride
- globalConnectionTypeOverride
- mappingConfigAlias
- purgePolicy
- reapTime
- stuckThreshold
- stuckTime
- stuckTimerTime
- surgeCreationInterval
- surgeThreshold
- testConnection
- testConnectionInterval
- XA_RECOVERY_AUTH_ALIAS
- Propriedades customizadas da origem de dados:
- beginTranForResultSetScrollingAPIs
- beginTranForVendorAPIs
- connectionSharing
- enableMultithreadedAccessDetection
- errorDetectionModel
- freeResourcesOnClose
- oracleRACXARecoveryDelay (apenas Oracle)
- preTestSQLString
- userDefinedErrorMap
- validateNewConnection
- validateNewConnectionRetryCount
- validateNewConnectionRetryInterval
- validateNewConnectionTimeout
Referências de Recurso
É recomendado para os aplicativos sempre usarem referências de recursos quando acessar as origens de dados, o que facilita para o implementador fazer a substituição.
Compartilhamento de conexões
Por padrão, para a definição de origem de dados, uma solicitação de conexão pode compartilhar uma conexão em uso existente se ela corresponder às configurações solicitadas originalmente para essa conexão (connectionSharing=MatchOriginalRequest). Como alternativa, o compartilhamento de conexão pode ser feito ao corresponder a solicitação da conexão com relação ao estado atual da conexão (connectionSharing=MatchCurrentState).
Ciclo de Vida
O ciclo de vida de uma origem de dados é vinculado ao ciclo de vida dos aplicativos que a definir. Como consequência, poderá atualizar seu aplicativo para alterar a definição da origem de dados sem precisar reiniciar o servidor. Se diversos aplicativos incluírem a mesma definição de origem de dados, por exemplo, ambas as definições da origem de dados possuírem nomes java:global idênticos, conjunto de propriedades configuradas idênticas e valores idênticos para as propriedades, todos os aplicativos deverão ser desinstalados antes de atualizar a definição da origem de dados e reinstalar os aplicativos.
Conflitos Entre as Definições de Origens de Dados
Os módulos de aplicativos e os componentes devem cuidar para não definir as origens de dados com o mesmo java:global de outro aplicativo porque esse processo impossibilita os aplicativos de coexistirem. Em um aplicativo, os componentes e componentes devem cuidar para não definir as origens de dados com o mesmo java:app de outro módulo ou componente. Esse conflito faz com que a instalação do aplicativo falhe. Em um módulo, os componentes devem cuidar para não definir as origens de dados com o mesmo java:module de outros componentes. Esse conflito faz com que a instalação do aplicativo falhe. Em um módulo da Web, os componentes devem cuidar para não definir as origens de dados com o mesmo java:comp de outros componentes. Esse conflito faz com que a instalação do aplicativo falhe.