2012-05-10 62 views
5

Implementuję aplikację internetową (JEE6, EJB WebProfile), która korzysta z bazy danych Oracle. Mój problem polega na tym, że muszę zmienić używany schemat bazy danych (nazwę) bez ponownej kompilacji/przepakowania aplikacji. Więc to, czego chcę (to tylko pomysł, może ktoś ma lepszy), to mieć jakąś konfigurację (JNDI) w Serwerze, która określa nazwę schematu. Ale w jaki sposób skonfigurować Eclipse Link do używania innej nazwy schematu w środowisku wykonawczym?JPA - EclipseLink - Jak skonfigurować nazwę schematu bazy danych w czasie wykonywania

Szczegóły:

Obecnie używam plik orm.xml, aby określić nazwę schematu. Ale aplikacja używa trzech różnych nazw schematów (jeden do programowania, jeden do testu integracji i jeden do produkcji), więc muszę skompilować i spakować (maven) aplikację 3 razy.

Mam aplikację WebProfile EJB JEE6 uruchomioną na GlassFish przy użyciu bazy danych Oracle DB, a połączenie z bazą danych jest obsługiwane przez serwer aplikacji i dostarczane do aplikacji za pośrednictwem interfejsu JNDI.

Czy każdy organ ma pomysł, jak skonfigurować nazwę schematu bazy danych w środowisku wykonawczym.

+0

Można utworzyć skrypt, który będzie wyjście 3 artefakty dla każdego środowiska z tego samego kodu źródłowego, ale innym orm.xml więc nie będzie trzeba zmienić nazwę schematu w czasie wykonywania – DaTroop

+0

Patrz http://stackoverflow.com/ q/5104185/366964 i http://stackoverflow.com/q/9315593/366964 mogą pomóc. –

Odpowiedz

8

można użyć EclipseLink SessionCustomizer.

package some.java.package; 

import org.eclipse.persistence.config.SessionCustomizer; 
import org.eclipse.persistence.sessions.Session; 
import org.eclipse.persistence.sessions.DatabaseLogin; 

public class MySessionCustomizer implements SessionCustomizer { 

    private String schema = "some_schema"; 
    public MySessionCustomizer() { 
     schema = ... // read from property, jndi, etc. 
    } 

    public void customize(Session session) { 
     session.getLogin().setTableQualifier(schema); 
    } 
} 
Powiązane problemy