Edita el archivo pom.xml en la raíz de tu proyecto, allí añade la siguiente dependencia dentro de la parte <dependencies>:
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc8</artifactId>
<version>23.26.2.0.0</version>
</dependency>
Quizás ya tengas este código en tu pom.xml pero comentado, en ese caso simplemente descoméntalo. <dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>orai18n</artifactId>
<version>19.3.0.0</version>
</dependency>
OpenXava 8.0 o posterior (Spring Boot): Edita src/main/resources/application.properties de tu proyecto para ajustar la fuente de datos para que apunte a Oracle, algo así:
spring.datasource.username=root
spring.datasource.password=ao49fmsk
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:misid
spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
En lugar de localhost deberías poner la dirección del servidor que alberga Oracle y en lugar de misid el sid de tu base de datos Oracle. También pon el username y password correctos. No olvides comentar o quitar las entradas de la fuente de datos para HSQLDB (incluida por defecto al crear un nuevo proyecto OpenXava), sólo una fuente de datos debería estar activa.
OpenXava 7.x o anterior: Edita src/main/webapp/META-INF/context.xml de tu proyecto y ajusta la definición de tu fuente de datos para que apunte a Oracle, algo así:
<Resource name="jdbc/MiAplicacionDS" auth="Container"
type="javax.sql.DataSource"
maxTotal="100" maxIdle="20" maxWaitMillis="10000"
username="root" password="ao49fmsk"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:misid"/>
La diferencia está en driverClassName y url. La parte final de la url, misid en este ejemplo, es el sid de tu base de datos Oracle. Obviamente, en lugar de localhost deberías poner la dirección del servidor que alberga Oracle. También pon el username y password correctos. Puede que el código de arriba ya esté en tu context.xml pero comentado, en ese caso simplemente descoméntalo. No olvides comentar o quitar la fuente de datos para HSQLDB (incluida por defecto al crear un nuevo proyecto OpenXava), sólo una fuente de datos (con el mismo nombre) debería estar activa.
CREATE USER root IDENTIFIED BY ao49fmsk;
<!-- Unidad de persistence por defecto para Oracle -->
<persistence-unit name="default">
...
<properties>
...
<!-- AÑADE LA SIGUIENTE PROPIEDAD -->
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle12cDialect"/>
</properties>
</persistence-unit>
Después de los cambios has de reconstruir (rebuild) tu proyecto. En OpenXava Studio pulsa con el botón derecho del ratón en tu proyecto y escoge Run As > Maven install, así:
O si tienes Maven instalado en tu ordenador y prefieres usar la línea de órdenes:
$ cd miaplicacion
$ mvn install
Nota de optimización: En lugar de mvn install, que hace un build de Maven completo, puedes usar mvn war:exploded, suficiente para aplicar los cambios de arriba para desarrollo. Puedes llamar a mvn war:exploded desde el OpenXava Studio con Run As > Maven build... y tecleando war:exploded para goal.
Ejecuta tu aplicación, debería funcionar bien contra tu base de datos Oracle. Si fallara, verifica que tu base de datos está funcionando, que el usuario y la contraseña en tu configuración de fuente de datos (application.properties en 8.0+, context.xml en 7.x) son correctos, que la IP del servidor es correcta. Verifica también que el usuario tiene privilegios para crear bases de datos y tablas (si quieres usar la generación automática de esquema de OpenXava, no necesario si las tablas ya existen).
Si sigue fallando pregúntanos en el foro de ayuda de OpenXava. Incluye el contenido de tu persistence.xml, tu configuración de fuente de datos (application.properties en 8.0+, context.xml en 7.x) (quita las contraseñas) y sobre todo la traza generada, puedes encontrar la traza en la pestaña Console del OpenXava Studio.
Cuando usas OpenXava con HSQLDB (el valor por defecto), la clase lanzadora incluye una línea DBServer.start() para arrancar la base de datos. Dado que ahora usas Oracle, esta línea ya no es necesaria. Puedes comentarla o eliminarla para mejorar el rendimiento de arranque:
OpenXava 8.0 o posterior (Spring Boot): Clase lanzadora en el paquete raíz (miaplicacion)
@SpringBootApplication
public class MiAplicacion extends OpenXavaApplication {
public static void main(String[] args) throws Exception {
// DBServer.start("miaplicacion-db"); // Comenta o elimina, HSQLDB ya no es necesario
SpringApplication.run(MiAplicacion.class, args);
}
}
OpenXava 7.x o anterior: Clase lanzadora en el paquete run
public class miaplicacion {
public static void main(String[] args) throws Exception {
// DBServer.start("miaplicacion-db"); // Comenta o elimina, HSQLDB ya no es necesario
AppServer.run("miaplicacion");
}
}