É possível configurar dois arquivos de referência de recurso na mesma origem de
dados. Isso permite que você estenda as propriedades customizadas para que a fonte de dados seja estendida para incluir dois nomes de esquemas diferentes (currentSQLId no z/OS® ou currentSchema name nas propriedades customizadas) que podem ser usados para explorar as capacidades do servidor de aplicação.
Sobre esta Tarefa
Quando um EntityManager é criado, o servidor de aplicativos obtém uma conexão
com o banco de dados. Quando você estiver utilizando uma transação pessimista, o
EntityManager reterá essa conexão até que o EntityManager seja fechado. Quando há dois EntityManagers que estendem as definições de origem de dados, oopenjpa.jdbc.TransactionIsolationpropriedade pode causar um problema com a transação. Esta propriedade pode ser encontrada nopersistence.xmlarquivo na entrada a seguir:property name="openjpa.jdbc.TransactionIsolation" value="read-committed"
Para satisfazer esta solicitação, Java™ Persistence API (JPA) irá obter uma conexão e chamar imediatamentesetTransactionIsolation(READ_COMMITTED). Quando você tem dois EntityManagers compartilham uma conexão física única com o banco de dados, o primeiro EntityManager cria uma conexão com o banco de dados e envolve essa conexão em uma transação. Quando o segundo EntityManager criar uma
conexão, ele não poderá mudar o nível de isolamento.É possível evitar esse problema
criando dois arquivos de referência de recurso na mesma origem de dados. Você pode criar as referências de recursos com o Rational® Application Developer ou editando os arquivos XML. Você precisará fazer mudanças no
ejb-jar.xml,
ibm-ejb-jar-bnd.xml,
ibm-ejb-jar-ext.xml,
persistence.xmlarquivos.
Nota: Para IBM® Optim™ PureQuery Runtime, se esta for uma fonte de dados XA você deve definir uma nova propriedade customizada na origem de dados em que nome_proprio = downgradeHoldCursorsUnderXa e valor booleano = true.
Consulte as seções a seguir para obter informações
sobre como fazer isso:
Procedimento
- Configure dois arquivos de referência de recursos na mesma fonte de dados usando o Rational Application Developer.
- Editar oejb-jar.xmlfile
- Crie o descritor de implementação se ele não existir ainda:
- Acesse o menu de contexto do projeto Enterprise Java beans (EJB) e selecione .
- Edite o descritor de implementação:
- Acesse o diretório META-INF do projeto e selecione oejb-jar.xml.
- Inclua o elemento do enterprise bean no descritor de implementação se ele não existir
ainda:
- Selecione Nó do Projeto EJB. Clique em Adicionar.
- No diálogo, selecione Enterprise Beans. Clique em OK.
- Inclua o bean de sessão no descritor de implementação se ele não existir ainda:
- Selecione Enterprise Beans. Clique em Adicionar.
- Selecione Sessão Bean. Clique em OK.
- Digite o nome do bean de sessão no diálogo. Clique em OK.
- No painel do lado direito, digite o EJB
Class, o business local e as interfaces remotas de negócios.
- Inclua os elementos de referência de recurso no bean de sessão:
- Selecione o bean de sessão e clique em Incluir.
- Selecione Referência de Recursos. Clique em OK.
- No diálogo Incluir Referência de Recurso, digite os campos de
nome, tipo, autenticação e escopo de compartilhamento. Clique em OK.
- Repita para a segunda referência de recurso.
- Salve o editor.
- Editar oibm-ejb-jar-bnd.xmlfile
- Crie o descritor de ligações do WebSphere® EJB se ele já não existe
- Acesse o menu de contexto do projeto Enterprise JavaBeans (EJB) e selecione .
- Edite o descritor de ligações:
- No diretório META-INF do projeto, selecione oibm-ejb-jar-bnd.xml.
- Inclua um elemento de ligação para o bean de sessão no descritor de ligações:
- Selecione EJB Jar Ligações nó e clique em Adicionar.
- No diálogo, selecione Sessão e clique em OK.
- Insira o nome de um bean de sessão.
- Inclua as ligações para as referências de recursos no bean de sessão:
- Selecione o bean de sessão e clique em Incluir.
- No diálogo, selecione Referência de Recursos e clique em OK.
- Selecione a referência de recurso.
- Insira o nome de o nome da ligação para a referência
- Repita para a segunda referência de recurso.
- Salve o editor.
- Editar oibm-ejb-jar-ext.xml.
- Crie o descritor de extensões do WebSphere EJB se ele já não existe:
- Acesse o menu de contexto do projeto Enterprise JavaBeans (EJB) e selecione .
- Edite o descritor de extensões:
- No diretório META-INF do projeto, selecione oibm-ejb-jar-ext.xml.
- Inclua um elemento de extensões para o bean de sessão no descritor de extensões:
- Selecione o nó EJB Jar Extensions e clique em Add.
- No diálogo, selecione Sessão e clique em OK.
- Insira o nome de um bean de sessão.
- Defina o nível de isolamento para as referências de recursos:
- Selecione o bean de sessão e clique em Incluir.
- No diálogo, selecione Referência de Recursos e clique em OK.
- Selecione a referência de recurso.
- Insira o nome e o nível de isolamento.
- Repita para a segunda referência de recurso.
- Salve o editor.
- Editar opersistence.xml.
- Inclua o suporte JPA no projeto EJB, que criará o arquivo persistence.xml:
- No menu de contexto do projeto, selecione Propriedades.
- Selecione o nó Máscaras de Projeto.
- Marque a caixa ao lado de Persistência Java.
- Clique em OK.
- Editar opersistence.xmlarquivo:
- No diretório META-INF do projeto, selecione opersistence.xmlfile
- O criadopersistence.xmlarquivo já contém uma definição de unidade de persistência. Editar issopersistence.xmlfile
- Selecione o nó Unidade de persistência . Defina o nome, a origem de dados JTA e exclua os campos de
classes não listados.
- Crie uma nova definição de unidade de persistência no arquivo:
- Selecione o nó Persistence e clique em Adicionar .
- No diálogo, selecione Unidade de persistência e clique em OK.
- Selecione o nó Unidade de persistência . Defina o nome, a origem de dados JTA e exclua os campos de
classes não listados.
- Inclua classes na unidade de persistência:
- Selecione o nó da unidade de persistência e clique em Incluir .
- No diálogo, selecione Class e clique em OK.
- Insira o nome da classe.
- Repita para cada classe.
- Inclua propriedades na unidade de persistência
- Se ainda não houver um elemento Propriedades no arquivo, selecione o nó da unidade de persistência e clique em Incluir.
- No diálogo, selecione Propriedades e clique em OK.
- Selecione o nó Propriedades e clique em Adicionar.
- No diálogo, selecione Propriedade e clique em OK.
- Insira o nome e o valor para a propriedade
- Repita as três etapas anteriores para incluir as propriedades adicionais.
- Salve o editor.
- Configure dois arquivos de referência de recurso na mesma
origem de dados editando os arquivos XML.
- Editar oejb-jar.xmlarquivo:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar id="ejb-jar_ID" metadata-complete="false" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<enterprise-beans>
<session>
<ejb-name>NewOrderSessionFacadeBean</ejb-name>
<business-local>newordersession.ejb3.NewOrderSessionFacade</business-local>
<business-remote>newordersession.ejb3.NewOrderSessionFacadeRemote</business-remote>
<ejb-class>newordersession.ejb3.NewOrderSessionFacadeBean</ejb-class>
<session-type>Stateless</session-type>
<resource-ref>
<description></description>
<res-ref-name>jdbc/ERWWDataSourceV5</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<description></description>
<res-ref-name>jdbc/ERWWDataSourceV5_HP</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</session>
</enterprise-beans>
</ejb-jar>
- Editar oibm-ejb-jar-bnd.xmlarquivo:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-bnd xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-bnd_1_0.xsd"
version="1.0">
<session name="NewOrderSessionFacadeBean" simple-binding-name="ejb/session/NewOrderSessionFacadeBean">
<resource-ref name="jdbc/ERWWDataSourceV5" binding-name="jdbc/ERWWDataSourceV5"></resource-ref>
<resource-ref name="jdbc/ERWWDataSourceV5_HP" binding-name="jdbc/ERWWDataSourceV5"></resource-ref>
</session>
</ejb-jar-bnd>
- Editar oibm-ejb-jar-ext.xmlarquivo:
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar-ext xmlns="http://websphere.ibm.com/xml/ns/javaee"
xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-ejb-jar-ext_1_0.xsd"
version="1.0" metadata-complete="true">
<session name="NewOrderSessionFacadeBean">
<resource-ref name="jdbc/ERWWDataSourceV5"
isolation-level="TRANSACTION_READ_COMMITTED" />
<resource-ref name="jdbc/ERWWDataSourceV5_HP"
isolation-level="TRANSACTION_READ_COMMITTED" />
</session>
</ejb-jar-ext>
- Editar opersistence.xmlarquivo:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
version="1.0" xsi:schemaLocation=
"http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="NewOrderSessionEJB3">
<jta-data-source>java:comp/env/jdbc/ERWWDataSourceV5</jta-data-source>
<class>warehouseejb3.WarehouseJPA</class>
<class>districtejb3.DistrictJPA</class>
<class>customerejb3.CustomerJPA</class>
<class>stockejb3.StockJPA</class>
<class>orderejb3.OrderJPA</class>
<class>orderlineejb3.OrderlineJPA</class>
<class>neworderejb3.NewOrderJPA</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="openjpa.LockManager" value="pessimistic"/>
<property name="openjpa.ReadLockLevel" value="read"/>
<property name="openjpa.WriteLockLevel" value="write"/>
<property name="openjpa.LockTimeout" value="30000"/>
<property name="openjpa.FetchBatchSize" value="1" />
<property name="openjpa.jdbc.TransactionIsolation" value="read-committed" />
<property name="openjpa.Log" value="none"/>
</properties>
</persistence-unit>
<persistence-unit name="ItemEJB3">
<jta-data-source>java:comp/env/jdbc/ERWWDataSourceV5_HP</jta-data-source>
<class>itemejb3.ItemJPA</class>
<exclude-unlisted-classes>true</exclude-unlisted-classes>
<properties>
<property name="openjpa.LockManager" value="pessimistic"/>
<property name="openjpa.ReadLockLevel" value="read"/>
<property name="openjpa.WriteLockLevel" value="write"/>
<property name="openjpa.LockTimeout" value="30000"/>
<property name="openjpa.FetchBatchSize" value="1" />
<property name="openjpa.jdbc.TransactionIsolation" value="read-committed" />
<property name="openjpa.Log" value="none"/>
</properties>
</persistence-unit>
</persistence>