Thursday, June 5, 2025

.::: Simulation connection java to MariaDB for Success & Fail using mariadb-java-client-3.5.3.jar (MariaDB Driver) (java.sql.SQLNonTransientConnectionException: Socket fail to connect to 10.10.10.9. No route to host) :::.

 

1. Download (Platform independent)

https://mariadb.com/downloads/connectors/connectors-data-access/java8-connector
 

java -version
dnf install java-17-openjdk-devel -y    # CentOS 9


2. check login mariadb

[root@teguhth ~]# mysql -h 10.10.10.90 -uadmin -p teguhth
mysql: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb' instead
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 20
Server version: 11.4.4-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


MariaDB [teguhth]> exit
Bye
[root@teguhth ~]#
[root@teguhth ~]# mysql  -uadmin -p teguhth
mysql: Deprecated program name. It will be removed in a future release, use '/usr/bin/mariadb' instead
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 21
Server version: 11.4.4-MariaDB-log MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [teguhth]>
 


3. create script java 

[root@teguhth simulation]# cat MariaDBTest.java

import java.sql.*;

public class MariaDBTest {
    public static void main(String[] args) {
        String url = "jdbc:mariadb://10.10.10.90:3306/teguhth"; // IP salah (simulasi error)
        String user = "admin";
        String pass = "admin";

        try {
            Connection conn = DriverManager.getConnection(url, user, pass);
            System.out.println("Koneksi berhasil.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
[root@teguhth simulation]#


4. run script 

javac -cp .:mariadb-java-client-3.5.3.jar MariaDBTest.java

5. after create class run 

javac -cp .:mariadb-java-client-3.5.3.jar MariaDBTest.java
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest

[root@teguhth simulation]# ls
last  mariadb-java-client-3.5.3.jar  MariaDBTest.class  MariaDBTest.java  mysql
[root@teguhth simulation]#
[root@teguhth simulation]# javac -cp .:mariadb-java-client-3.5.3.jar MariaDBTest.java
[root@teguhth simulation]# java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
Koneksi berhasil.
[root@teguhth simulation]#

6. if fail (misalkan buat salah ip, port, dll)

[root@teguhth simulation]# javac -cp .:mariadb-java-client-3.5.3.jar MariaDBTest.java
[root@teguhth simulation]# java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java.sql.SQLNonTransientConnectionException: Socket fail to connect to 10.10.10.9. No route to host
        at org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:131)
        at org.mariadb.jdbc.client.impl.StandardClient.<init>(StandardClient.java:125)
        at org.mariadb.jdbc.Driver.connect(Driver.java:75)
        at org.mariadb.jdbc.Driver.connect(Driver.java:104)
        at org.mariadb.jdbc.Driver.connect(Driver.java:29)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:681)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
        at MariaDBTest.main(MariaDBTest.java:11)
Caused by: java.net.NoRouteToHostException: No route to host
        at java.base/sun.nio.ch.Net.pollConnect(Native Method)
        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672)
        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:554)
        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:602)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
        at java.base/java.net.Socket.connect(Socket.java:633)
        at org.mariadb.jdbc.client.impl.ConnectionHelper.connectSocket(ConnectionHelper.java:118)
        ... 7 more
[root@teguhth simulation]#

 

7. if success

[root@teguhth simulation]# javac -cp .:mariadb-java-client-3.5.3.jar MariaDBTest.java
[root@teguhth simulation]# java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
Koneksi berhasil.
[root@teguhth simulation]#

8. if driver not found
[root@teguhth simulation]# javac -cp .:mariadb-java-client-3.5.4.jar MariaDBTest.java
[root@teguhth simulation]#
[root@teguhth simulation]# java -cp .:mariadb-java-client-3.5.4.jar MariaDBTest
java.sql.SQLException: No suitable driver found for jdbc:mariadb://10.10.10.9:3306/teguhth
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:706)
        at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
        at MariaDBTest.main(MariaDBTest.java:11)
[root@teguhth simulation]#


 
9. Test speed 
sh durajavamaria.sh
 
[root@teguhth simulation]# sh durajavamaria.sh
  

[root@teguhth simulation]# cat durajavamaria.sh
#!/bin/bash

# Menyimpan waktu mulai dalam format manusiawi
# For Test
# timedatectl set-time "2020-03-22 08:34:00"

datex=$(date "+%Y-%m-%d %H:%M:%S.%N")
#epoch_start='1580390912'
epoch_start=$(date +%s)  # Gunakan detik saja, jangan nanodetik
echo "$datex ->>> Start Process"

# For Test
# timedatectl set-time "2025-01-31 08:34:00"
# vmware-toolbox-cmd timesync enable

######## Script Begin ########
echo "run 10x 'java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest' using MariaDB Java 8+ Connector"

java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest
java -cp .:mariadb-java-client-3.5.3.jar MariaDBTest

######## Script Finish ########

# Menyimpan waktu selesai dalam format manusiawi
datey=$(date "+%Y-%m-%d %H:%M:%S.%N")
epoch_end=$(date +%s)  # Gunakan detik saja
#epoch_end='1738253312'

echo "$datey ->>> Finish Process"

# Menghitung selisih waktu dalam detik
finish=$((epoch_end - epoch_start))

# Menghitung hari, jam, menit, dan detik
days=$((finish / 86400))
hours=$(((finish % 86400) / 3600))
minutes=$(((finish % 3600) / 60))
seconds=$((finish % 60))

# Konversi ke tahun, bulan, hari, jam, menit, dan detik
yearsx=$((finish / 31536000))             # 1 tahun = 365 * 24 * 3600 detik
remaining=$((finish % 31536000))

monthsx=$((remaining / 2592000))          # 1 bulan = 30 * 24 * 3600 detik
remaining=$((remaining % 2592000))

daysx=$((remaining / 86400))              # 1 hari = 86400 detik
remaining=$((remaining % 86400))

hoursx=$((remaining / 3600))              # 1 jam = 3600 detik
remaining=$((remaining % 3600))

minutesx=$((remaining / 60))              # 1 menit = 60 detik
secondsx=$((remaining % 60))

# Format output
formatted_time=$(printf "%d:%02d:%02d:%02d" "$days" "$hours" "$minutes" "$seconds")

# Format output
formatted_time2=$(printf "%d Tahun, %d Bulan, %d Hari, %02d:%02d:%02d" "$yearsx" "$monthsx" "$daysx" "$hoursx" "$minutesx" "$secondsx")

echo "Duration Process"
echo "Start     : $datex"
echo "Finish    : $datey"
echo "Duration 1 : $formatted_time"
echo "Duration 2 : $formatted_time2"
echo ""
echo "Copyright by           : Teguh Triharto"
echo "Website                : https://www.linkedin.com/in/teguhth"
echo ""
[root@teguhth simulation]#

 

No comments:

Post a Comment

Popular Posts