Ketika melakukan koneksi dari aplikasi kemudian mendapatkan error ini:

org.postgresql.util.PSQLException: FATAL: Ident authentication failed for user "postgres"

Ini karena terjadi kegagalan otentikasi di postgresqlnya. Dari error messagenya kemungkinan konfigurasi autentikasi postgresql masih default. Ini terlihat dari kata kunci “ident”.

Salah satu solusinya adalah mengubah konfigurasi ini di dalam file /var/lib/pgsql/data/pg_hba.conf.

Ini salah satu contoh hasil pengubahan konfigurasi ini:

# PostgreSQL Client Authentication Configuration File
# ===================================================
#
# Refer to the "Client Authentication" section in the PostgreSQL
# documentation for a complete description of this file.  A short
# synopsis follows.
#
# This file controls: which hosts are allowed to connect, how clients
# are authenticated, which PostgreSQL user names they can use, which
# databases they can access.  Records take one of these forms:
#
# local      DATABASE  USER  METHOD  [OPTIONS]
# host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostssl    DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
# hostnossl  DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
#
host    kantordb        postgres        0.0.0.0/0       trust
host    penjualandb     postgres        0.0.0.0/0       password

# METHOD can be "trust", "reject", "md5", "password", "gss", "sspi",
# "krb5", "ident", "peer", "pam", "ldap", "radius" or "cert".  Note that
# "password" sends passwords in clear text; "md5" is preferred since
# it sends encrypted passwords.

Kemudian restart service postgresql agar perubahan ini diterapkan.

Sebelumnya saya sudah punya aplikasi Apache Camel yang menggunakan Spring Boot. Aplikasi ini sudah berjalan dengan baik dan mulus. Kemudian saya coba memindahkan projek Camel ini dari Spring Boot ke Quarkus.

Ada dua aplikasi yang saya coba migrasi. Aplikasi pertama menggunakan REST DSL dan komponen gRPC. Dan aplikasi yang satunya lagi menggunakan komponen gRPC dan komponen Netty. Pada Spring Boot versi Camel yang digunakan adalah 3.0.0-RC1. Namun pada Quarkus saya ubah versi Camelnya menjadi 3.0.0-RC3 karena Camel bawaan Quarkus saat ini defaultnya menggunakan versi RC3 ini.

Target dari migrasi ini ada tiga secara berurutan:

  • Migrasi agar Camel bisa berjalan baik, benar dan mulus di Quarkus
  • Membuat native image dari aplikasi Camel Quarkus hasil migrasi di atas
  • Membuat image Docker dari native image di atas
Continue Reading »

Kita akan membuat image docker dari aplikasi java. Kemudian akan kita jalankan container dari image docker yang dibuat tadi. Tools yang digunakan untuk mendockerkan aplikasi java ini adalah podman. Sistem operasi yang digunakan adalah Linux Fedora 31. Pada percobaan ini dibutuhkan jaringan internet untuk mengambil base image OPEN-JDK.

Kita akan menggunakan aplikasi REST camel yang dicontohkan di artikel REST Server Menggunakan Apache Camel. Source codenya dapat diambil di GitHub ini. Yang diperlukan di sini adalah file jar hasil kompilasi source code. File yang dihasilkannya adalah RestCamelContoh-0.0.1-SNAPSHOT.jar.

Pastikan file jar ini dapat dijalankan menggunakan command berikut:

java -jar -Dspring.profiles.active=default  RestCamelContoh-0.0.1-SNAPSHOT.jar

1-Men-Docker-kan Aplikasi Java

Continue Reading »

Aplikasi ini menggunakan Apache Camel yang dijalankan di Spring Boot. Di sini kita akan membuat server REST. Anda tak perlu memahami dulu secara mendalam apa itu komponen SEDA serta method process() pada router Camel. Yang paling perlu dipahami di sini adalah bagaimana data yang dikirimkan oleh client mengalir di dalam router Camel yang kita buat hingga akhirnya data dikirimkan kembali ke client sebagai response Rest.

Kita akan membuat dua buah service REST yaitu:

  1. Service ambilPesan dengan URL: http://localhost:8881/serviceRest/ambilPesan
  2. Service operasiTambah dengan URL: http://localhost:8881/serviceRest/operasiTambah

Pertama-tama kita perlu komponen netty-http. Komponen ini digunakan sebagai HTTP Server. Untuk itu kita tambahkan dependency netty-http pada pom.xml kita.

		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-netty-http-starter</artifactId>
			<version>x.x.x</version>
			<!-- Gunakan versi yang sama dengan Camel Core yang digunakan -->
		</dependency>

Selain itu kita akan menggunakan project lombok untuk meng-generate getter dan setter secara otomatis pada kelas-kelas DTO yang digunakan untuk request dan response service REST ini. Untuk itu ditambahkan pula dependency project lombok ini ke dalam pom.xml. Continue Reading »

Kali ini kita akan membuat proyek aplikasi Apache Camel yang dijalankan pada Spring Boot. Di sini kita hanya fokus pada teknis pembuatan aplikasinya saja tanpa perlu dulu mengetahui secara rinci teori-teori cara kerja serta istilah-istilah dalam Camel dan Spring Boot. Untuk membuat aplikasi ini diperlukan pengetahuan cara pembuatan proyek Java menggunakan Maven dan cara pembuatan proyek Spring Boot. Bila Anda belum mengetahui cara membuat proyek Maven Anda bisa membaca pada artikel Membuat Maven Project. Dan apabila Anda belum mengetahui cara membuat proyek Spring Boot Anda bisa membaca artikel Memulai Pembuatan Aplikasi Spring Boot.

Langkah utama pembuatan aplikasi ini adalah:

  1. Membuat proyek aplikasi Spring Boot
  2. Menambahkan file application.properties
  3. Menambahkan dependency apache camel pada pom.xml
  4. Membuat router camel
  5. Jalankan aplikasi

Continue Reading »

Membuat aplikasi Spring Boot adalah sangat mudah. Sebetulnya untuk menginisialisasi pembuatan project Spring Boot dapat dilakukan menggunakan tools yang disediakan oleh Spring resmi di https://start.spring.io. Namun pada contoh ini kita akan membuat aplikasi Spring Boot menggunakan maven dengan IDE Eclipse. Kita akan membuat aplikasi Spring Boot yang sangat mendasar.

Secara garis besar hanya ada tiga langkah yang dilakukan untuk membuat aplikasi Spring Boot ini: membuat maven project kemudian dilanjutkan penyuntingan file pom.xml, lalu terakhir adalah membuat kelas java yang mengandung method main dan anotasi @SpringBootApplication.

Pertama-tama kita buat Java Project biasa di Eclipse dengan nama ContohSpringBoot. Kemudian convert project ini menjadi Maven Project. Cara pembuatan Maven Project ini tidak akan dibahas detail di sini. Anda dapat membacanya pada artikel “Membuat Maven Project

Setelah Maven Project ini terbentuk kemudian kita edit file pom.xml agar sesuai dengan kebutuhan Spring Boot. Isi pom.xml hasil penyuntingan adalah seperti ini: Continue Reading »

Di sini saya contohkan salah satu cara membuat maven project pakai Eclipse. Sebetulnya ada cara lain yang lebih baik tapi di sini saya tunjukan cara yang biasa saya lakukan.

Pertama-tama create Java Project seperti biasanya di Eclipse. Setelah project java berhasil dibuat, lalu lakukan konversi project yang sudah dibuat itu menjadi maven project. Caranya:

Di panel “Package Explorer” klik kanan pada project yang akan dikonversi menjadi maven. Kemudian pilih Configure lalu pilih “Convert to Maven Project”.

1-bikinmavenproject

Kemudian klik “Finish” Continue Reading »

Melihat tanggal system:

# date

Melihat tanggal hardware (jam bios)

# hwclock -r

atau

# hwclock --show

Set tanggal dan jam

# date -s "4 DEC 2015 17:52:00"

Set tanggal:

# date +%Y%m%d -s "20171228"

Set time:

# date +%T -s "17:59:13"

Menyimpan jam system ke dalam jam hardware:

# hwclock --systohc

atau

# hwclock -w

wakwaw

Kelas yang akan diakses melalui JMX harus memenuhi struktur MBean yang benar. Pertama kita buat interface yang nantinya akan diimplementasikan oleh kelas yang dibuat sebagai MBean.
Interface MonitoredClassMBean. Semua method yang ada dalam interface ini nantinya akan terekspos sebagai operation pada service JMX.

package id.co.fir.jmx;

/**
 *
 * @author uing
 */
public interface MonitoredClassMBean {

    public String printTextA();

    public Integer tambah(Integer a, Integer b);

    public Pegawai bikinPegawai(String nama, Integer noPegawai);
}

Kelas MonitoredClass dibuat sebagai MBean dengan cara mengimplementasikan interface MonitoredClassMBean. Semua method yang diimplementasikan dari interface itu akan terekspose sebagai operation pada service JMX. Continue Reading »

Pada contoh ini digunakan library google guava. Sebetulnya file yang dibaca di sini tidak selalu file berupa comma separated values (CSV). File yang dibaca di sini pada dasarnya file teks yang menggunakan delimiter untuk memisahkan setiap value. Delimiter ini bisa berupa tanda baca apa saja. Bisa berupa koma, titik koma, tanda seru dan lain-lain.

Pada contoh ini file yang dibaca adalah file D:/contoh.csv. Delimiter yang digunakan adalah tanda pipe “|”.

Isi file ini adalah sebagai berikut: Continue Reading »