私はEclipseLinkを使用しており、Oracleで監査する必要があるため、純粋なJDBCを使用して監査V$session
でき、この方法でOracleでアプリケーション名を監査できますが、ここでEclipseLink JPAでは監査対象のアプリケーション名を設定できません。私が試してきたのは、使用したいセッションパラメーターを動的に設定するSessionCustomizer
ことですが、本来の動作はしません...エラーは表示されませんが、オラクルで名前を監査しません...これに苦労する時間があります結果はありません。私が使用しているコードは次のとおりです。
カスタマイザー クラスは次のとおりです。
package com.util;
import org.eclipse.persistence.config.SessionCustomizer;
import org.eclipse.persistence.sessions.Session;
public class ProgramCustomizer implements SessionCustomizer {
public void customize(Session s) throws Exception {
//s.getDatasourceLogin().setProperty("v$session.program","Employees"); //tried with this method
//s.getLogin().setProperty("v$session.program","Employees"); //tried with this one as well
}
}
上記のコメント行のいずれかを使用すると、機能するはずですが、機能しませんでした...
また、これらの行を次のように変更してみました:
DatabaseLogin login= (DatabaseLogin) s.getDatasourceLogin();
login.setProperty("v$session.program","Clients");
うまくいきませんでした。
私は日食のリンクhttp://wiki.eclipse.org/Configuring_a_Session_(ELUG)を読んでいましたが、この方法で行われます...
編集方法は次のとおりです。
public void edit(Employee employee) {
emProperties.put(PersistenceUnitProperties.SESSION_CUSTOMIZER, "com.util.ProgramCustomizer");
factory = Persistence.createEntityManagerFactory("EJBLocalPU", emProperties);
em = factory.createEntityManager();
em.merge(employee);
}
マージは非常にうまく実行されますが、データベースに入れたいアプリケーション名を監査しません。
この問題を解決する方法について何か考えはありますか。