Pessoas do GUJ,
Estava tendo um problema de performance no banco e resolvi usar o pool de conexões do servidor, no meu caso o glassfish.
Uso JPA + hibernate + Postgres
Meu persistence.xml está assim:
<persistence-unit name="PatrimonioppPU2" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/pgresources</jta-data-source>
<class>patrimonio.entidade.Bem</class>
<class>patrimonio.entidade.Campus</class>
<class>patrimonio.entidade.CentroCusto</class>
<class>patrimonio.entidade.Compra</class>
<class>patrimonio.entidade.Convenio</class>
<class>patrimonio.entidade.Descricao</class>
<class>patrimonio.entidade.Doacao</class>
<class>patrimonio.entidade.EstadoConservacao</class>
<class>patrimonio.entidade.FonteRecurso</class>
<class>patrimonio.entidade.FormaAquisicao</class>
<class>patrimonio.entidade.FormaBaixa</class>
<class>patrimonio.entidade.Fornecedor</class>
<class>patrimonio.entidade.Incorporacao</class>
<class>patrimonio.entidade.ModalidadeLicitacao</class>
<class>patrimonio.entidade.OrgaoFinanciador</class>
<class>patrimonio.entidade.Setor</class>
<class>patrimonio.entidade.Siafi</class>
<class>patrimonio.entidade.Situacao</class>
<class>patrimonio.entidade.TermoBem</class>
<class>patrimonio.entidade.Termos</class>
<class>patrimonio.entidade.UnidadeGestora</class>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect" />
<property name="hibernate.transaction.factory_class"
value="org.hibernate.transaction.JTATransactionFactory"/>
<property name="hibernate.transaction.manager_lookup_class"
value="org.hibernate.transaction.SunONETransactionManagerLookup" />
</properties>
</persistence-unit>
Meu sun-resources.xml está assim:
<resources>
<jdbc-resource enabled="true" jndi-name="jdbc/pgresources" object-type="user" pool-name="patrimonioPool">
<description/>
</jdbc-resource>
<jdbc-connection-pool allow-non-component-callers="false"
associate-with-thread="false" connection-creation-retry-attempts="0"
connection-creation-retry-interval-in-seconds="10"
connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0"
connection-validation-method="auto-commit"
datasource-classname="org.postgresql.ds.PGSimpleDataSource"
fail-all-connections="false" idle-timeout-in-seconds="300"
is-connection-validation-required="false"
is-isolation-level-guaranteed="true" lazy-connection-association="false"
transaction-isolation-level="" lazy-connection-enlistment="false"
match-connections="false" max-connection-usage-count="0"
max-pool-size="32" max-wait-time-in-millis="60000"
name="patrimonioPool" non-transactional-connections="false"
pool-resize-quantity="2" res-type="javax.sql.DataSource"
statement-timeout-in-seconds="-1" steady-pool-size="8"
validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
<property name="User" value="postgres"/>
<property name="Password" value="*******"/>
<property name="DatabaseName" value="patrimonio"/>
<property name="Ssl" value="false"/>
<property name="ServerName" value="xxx.xxx.xxx.xxx"/>
<property name="PorNumber" value="5432"/>
<property name="LoginTimeout" value="0"/>
<property name="PrepareThreshold" value="0"/>
</jdbc-connection-pool>
</resources>
Qdo executo minha aplicação ela vai no BD e traz os dados, mas na hora de gravar da o erro " A JTA EntityManager cannot use getTransaction()"
Pq não conseguiu pegar a transacao???
Alguém sabe no que estou errando???
Obrigada.