2010-06-10 6 views
1

EclipseLink를 사용 중이고 oracle에서 감사해야 순수 JDBC를 V$session과 함께 감사 할 수 있으며 이런 식으로 Oracle에서 응용 프로그램 이름을 감사 할 수 있습니다. 그러나 여기에서 EclipseLink JPA에서는 설정할 수 없습니다 감사 할 응용 프로그램 이름, 내가 시도한 방식은 SessionCustomizer을 사용하여 원하는 세션 매개 변수를 동적으로 설정하는 것이지만 수행 할 작업을 수행하지 않습니다 ... 오류는 표시되지 않지만 이름은 감사하지 않습니다. 오라클에서 ...이없이 결과 고투 시간을 가지고, 내가 사용하고있는 코드는 다음과 같습니다EclipseLink를 사용하여 Oracle 감사 JPA

사용자 정의 기능 클래스는 다음과 같습니다

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"); 

도 작동하지 않았다.

public void edit(Employee employee) { 
    emProperties.put(PersistenceUnitProperties.SESSION_CUSTOMIZER, "com.util.ProgramCustomizer"); 
    factory = Persistence.createEntityManagerFactory("EJBLocalPU", emProperties); 
    em = factory.createEntityManager(); 
    em.merge(employee); 
} 

그것은 아주 잘 병합을 수행하지만 응용 프로그램을 감사하지 않습니다

나는

방법 편집 ...하는 식 링크 http://wiki.eclipse.org/Configuring_a_Session_(ELUG)을 읽고 있었다 그것은이 방법으로 이루어집니다 name 나는 데이터베이스에 넣고 싶다.

이 문제를 해결하는 방법에 대해 알고 계신가요?

답변

1

JDBC 연결을 만들거나 데이터 소스에서 가져올 때마다 콜백을받을 수 있도록 SessionEventListener를 사용하는 것이 좋습니다.

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

여기에서 사용하기 전에 연결에 필요한 모든 값을 설정할 수 있습니다.

더그