Details
Description
I'm using log4j2 in a Payara 5.183 server and I've enabled a JDBC Appender connected to a JNDI datasource.
<JDBC name="DBAppender" tableName="LOG_TABLE">
<DataSource jndiName="myJNDI"></DataSource>
<Column ..." />
<Column ..." />
</JDBC>
The same datasource is used by the application to talk with the db. If the application, that uses EJB3, marks the transaction to be rolled back (sessionContext.setRollbackOnly()), each statement sent to the database (flush(), executeUpdate()) inside the transaction must not be committed.
What happens is that using the jdbc appender causes a commit that writes to the database everything, causing database inconsistency.
Using DriverManager instead of a JNDI works fine, but I don't know if I can set a connection pool with it.
When log4j is inside a JTA transaction it should use another JDBC connection to log.