Quarkus with hibernate without database

Viewed 403

We are currently developing a quarkus based MicroService application using the following extensions:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-hibernate-orm</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-health</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-smallrye-metrics</artifactId>
</dependency>

Depending on the deployment environment, the application needs a database connection, or either not. We have been playing around with several properties inside the application.properties to get this two deployment modes up and running, but unfortunately we are failing when using it without database. While starting the application, we always getting this exception:

2021-03-05 10:52:33,364 WARN  [io.agr.pool] (agroal-11) Datasource '<default>': I/O-Fehler: The Network Adapter could not establish the connection
2021-03-05 10:52:33,365 DEBUG [io.agr.pool] (agroal-11) Cause: : java.sql.SQLRecoverableException: I/O-Fehler: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:801)
    at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704)
    at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:390)
    at oracle.jdbc.xa.client.OracleXADataSource.getPooledConnection(OracleXADataSource.java:510)
    at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:149)
    at oracle.jdbc.xa.client.OracleXADataSource.getXAConnection(OracleXADataSource.java:106)
    at io.agroal.pool.ConnectionFactory.createConnection(ConnectionFactory.java:206)
    at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:452)
    at io.agroal.pool.ConnectionPool$CreateConnectionTask.call(ConnectionPool.java:434)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at io.agroal.pool.util.PriorityScheduledExecutor.beforeExecute(PriorityScheduledExecutor.java:65)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:569)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540)
    ... 15 more
Caused by: java.io.IOException: Operation timed out, socket connect lapse 75231 ms. /172.24.2.177 1526 0 1 true
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:229)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:172)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508)
    ... 20 more
Caused by: java.net.ConnectException: Operation timed out
    at sun.nio.ch.Net.connect0(Native Method)
    at sun.nio.ch.Net.connect(Net.java:482)
    at sun.nio.ch.Net.connect(Net.java:474)
    at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:647)
    at java.nio.channels.SocketChannel.open(SocketChannel.java:189)
    at oracle.net.nt.TimeoutSocketChannel.connect(TimeoutSocketChannel.java:108)
    at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:86)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:188)
    ... 22 more

Setting quarkus.datasource.jdbc.initial-size = 0 didn't helped. Setting quarkus.datasource.jdbc = false leads to this build failure:

[ERROR] Failed to execute goal io.quarkus:quarkus-maven-plugin:1.12.1.Final:build (default) on project avitech-aim-snw-svc: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR]     [error]: Build step io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor#configurationDescriptorBuilding threw an exception: io.quarkus.runtime.configuration.ConfigurationException: The default datasource is not configured but the persistence unit '<default>' uses it.
[ERROR]     at io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor.lambda$producePersistenceUnitDescriptorFromConfig$6(HibernateOrmProcessor.java:754)
[ERROR]     at java.util.Optional.orElseThrow(Optional.java:290)
[ERROR]     at io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor.producePersistenceUnitDescriptorFromConfig(HibernateOrmProcessor.java:753)
[ERROR]     at io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor.handleHibernateORMWithNoPersistenceXml(HibernateOrmProcessor.java:686)
[ERROR]     at io.quarkus.hibernate.orm.deployment.HibernateOrmProcessor.configurationDescriptorBuilding(HibernateOrmProcessor.java:310)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR]     at java.lang.reflect.Method.invoke(Method.java:498)
[ERROR]     at io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
[ERROR]     at io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[ERROR]     at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
[ERROR]     at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
[ERROR]     at java.lang.Thread.run(Thread.java:748)
[ERROR]     at org.jboss.threads.JBossThread.run(JBossThread.java:501)
[ERROR] -> [Help 1]

Does anyone have any idea if such a use case is even achievable ?

0 Answers
Related