Tampilkan postingan dengan label Java. Tampilkan semua postingan
Tampilkan postingan dengan label Java. Tampilkan semua postingan

How to deploy a spring boot application to a Linux server and install it as a service

Here's how to deploy a spring boot application and install it as a service:

Preparation

  1. Package your application as a jar file, name it myapp.jar
  2. Install the JDK that suits your needs on the server


Installation

  1. Upload the jar file to your server, put it in /var/myapp directory
  2. Set it as executable by running this command: chmod +x myapp.jar
  3. Create a script named myapp.service and place it in /etc/systemd/system directory, the script contains something like this

    [Unit]
    Description=myapp
    After=syslog.target network.target

    [Service]
    ExecStart=/path/to/java/home/bin/java -jar /var/myapp/myapp.jar
    ExecStop=/bin/kill -15 $MAINPID
    SuccessExitStatus=143

    [Install]
    WantedBy=multi-user.target



  4. Flag the application to start automatically on system boot, run the following command: systemctl enable myapp.service
Once installed, you can start and stop the service in the usual way. For example, on a Debian-based system, you could start it with the following command: service myapp start

If your application fails to start, check the log file written to /var/log/<appname>.log for errors.

How to use object as parameter in Spring JPA query

 Let's assume you have a class called Customer like this:

public class Customer {

    private String name;

    private String phoneNumber;

    private Integer age;

    ...

}

now you want to use that class as a parameter in the JPA repository, here's how to do it:

@Query("select c from Customer c where c.name = :#{#customer.name} and c.phoneNumber = :#{#customer.phoneNumber}")
List<Customer> findByNameAndPhone(@Param("customer") Customer customer);

Mentransfer file melalui SFTP menggunakan java.

Dalam tutorial ini, kita akan membahas cara mengunggah dan mengunduh file dari server jarak jauh menggunakan SFTP di Java.

1. Konfigurasi Maven

<dependency>

    <groupId>com.jcraft</groupId>

    <artifactId>jsch</artifactId>

    <version>0.1.55</version>

</dependency>

2. Konfigurasi JSch

JSch memungkinkan kita menggunakan Otentikasi Kata Sandi atau Otentikasi Kunci Publik untuk mengakses server jarak jauh. Dalam contoh ini, kami akan menggunakan autentikasi kata sandi.

private ChannelSftp setupJsch() throws JSchException {

    JSch jsch = new JSch();

    jsch.setKnownHosts("/Users/john/.ssh/known_hosts");

    Session jschSession = jsch.getSession(username, remoteHost);

    jschSession.setPassword(password);

    jschSession.connect();

    return (ChannelSftp) jschSession.openChannel("sftp");

}

Dalam contoh di atas, remoteHost mewakili nama atau alamat IP server jarak jauh (mis. example.com). Kita dapat mendefinisikan variabel yang digunakan dalam pengujian sebagai:

private String remoteHost = "HOST_NAME_HERE";

private String username = "USERNAME_HERE";

private String password = "PASSWORD_HERE";

Kita juga dapat membuat file known_hosts menggunakan perintah berikut:

ssh-keyscan -H -t rsa REMOTE_HOSTNAME >> known_hosts

3. Upload file

Untuk mengunggah file ke server jarak jauh, kita akan menggunakan metode ChannelSftp.put():

public void whenUploadFileUsingJsch_thenSuccess() throws JSchException, SftpException {

    ChannelSftp channelSftp = setupJsch();

    channelSftp.connect();

 

    String localFile = "src/main/resources/sample.txt";

    String remoteDir = "remote_sftp_test/";

 

    channelSftp.put(localFile, remoteDir + "jschFile.txt");

 

    channelSftp.exit();

}

Dalam contoh ini, parameter pertama dari metode mewakili file lokal yang akan ditransfer, src/main/resources/sample.txt, sedangkan remoteDir adalah jalur direktori target di server jarak jauh.

4. Download file

Kita juga dapat mengunduh file dari server jarak jauh menggunakan ChannelSftp.get():

public void whenDownloadFileUsingJsch_thenSuccess() throws JSchException, SftpException {

    ChannelSftp channelSftp = setupJsch();

    channelSftp.connect();

 

    String remoteFile = "welcome.txt";

    String localDir = "src/main/resources/";

 

    channelSftp.get(remoteFile, localDir + "jschFile.txt");

 

    channelSftp.exit();

}

remoteFile adalah jalur file yang akan diunduh, dan localDir mewakili jalur direktori lokal target.

Membaca isi dari sebuah folder menggunakan Java 8

 Java 8 memperkenalkan sebuah fungsi list() baru yang terdapat pada class java.nio.file.Files, berikut cara menggunakannya:

public Set<String> listFilesUsingFilesList(String dir) throws IOException {

    try (Stream<Path> stream = Files.list(Paths.get(dir))) {

        return stream

          .filter(file -> !Files.isDirectory(file))

          .map(Path::getFileName)

          .map(Path::toString)

          .collect(Collectors.toSet());

    }

}

Cara mendapatkan hari terakhir dari suatu bulan di Java

Kali ini kita akan berlatih bagaimana cara mendapatkan hari terakhir dari suatu bulan dalam bahasa pemrograman Java. Langsung saja kita tulis kodenya,

import java.util.Calendar;
public class Main {
   public static void main(String[] args) {
      Calendar cal = Calendar.getInstance();
      int res = cal.getActualMaximum(Calendar.DATE);
      System.out.println("Tanggal hari ini = " + cal.getTime());
      System.out.println("Hari terakhir dari bulan saat ini = " + res);
   }
}


Hasilnya akan terlihat seperti berikut:

Tanggal hari ini = Mon Nov 19 13:48:18 UTC 2018
Hari terakhir dari bulan saat ini = 30

Bagaimana Cara Mendapatkan Selisih Hari dan Bulan Antara Dua Tanggal di Java 8

Kali ini kita akan berlatih cara mendapatkan selisih hari dan bulan antara dua tanggal menggunakan bahasa pemrograman Java 8. Untuk mempermudah dalam penulisan dan run program; disarankan untuk menggunakan editor yang dibuat khusus untuk pemrograman Java, misalnya Eclipse atau IntelliJ IDEA. Kali ini saya menggunakan IntelliJ IDEA.

Langsung saja kita buat programnya, pertama-tama buat project Java baru. Buat file baru bernama DateDiff.java di dalam folder src yang isinya sbb:

import java.time.LocalDate;
import java.time.temporal.ChronoUnit;

public class DateDiff {
    public static void main(String[] args){
        LocalDate tglAwal = LocalDate.parse("2019-01-01");
        LocalDate tglAkhir = LocalDate.parse("2019-05-01");
        Long dayDiff = ChronoUnit.DAYS.between(tglAwal, tglAkhir);
        Long monthDiff = ChronoUnit.MONTHS.between(tglAwal, tglAkhir);
        System.out.println("Selisih hari antara " + tglAwal + " dan " + tglAkhir + " = " + dayDiff);
        System.out.println("Selisih bulan antara " + tglAwal + " dan " + tglAkhir + " = " + monthDiff);
    }
}


Simpan, lalu klik tombol Run yang terletak di pojok kanan atas editor


Hasilnya akan terlihat seperti ini


Langkah-Langkah Membuat Project Java Baru Menggunakan IntelliJ IDEA

Kali ini kita akan belajar membuat project Java baru menggunakan IntelliJ IDEA, ikuti langkah-langkah berikut.

Klik menu File > New > Project akan muncul window berikut.


Pada panel sebelah kiri, pilih Java lalu klik tombol Next.


Centang "Create project from template", pilih Java Hello World lalu klik tombol Next.


Beri nama dan tentukan lokasinya lalu klik tombol Finish