1

私は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); 
} 

マージは非常にうまく実行されますが、データベースに入れたいアプリケーション名を監査しません。

この問題を解決する方法について何か考えはありますか。

4

1 に答える 1

1

JDBC 接続が作成されるかデータ ソースから取得されるたびにコールバックを取得できるように、SessionEventListener を使用することをお勧めします。

public void postAcquireConnection(SessionEvent event) {
    Connection conn = ((DatabaseAccessor)event.getResult()).getConnection();

ここでは、接続を使用する前に、接続に必要な値を設定できます。

ダグ

于 2010-07-29T16:40:23.570 に答える