Setelah semua aplikasi telah kita membuat, sekarang kita membuat program aplikasi java to java dengan bantuan RMI (Remote Method Invocation).
Syarat objek dapat lewat RMI adalah :
1 membuat interface yang extends ke java.rmi.Remote sedangkan , contoh pembuatan interface :
Kita membuat Interface pada package AksesRMI
untuk akses barang :
===============================================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package AksesRMI;
import Entitas.Barang;
import Koneksi.Koneksi;
import Services.ServicesBarang;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author admin
*/
public class AksesBarang extends UnicastRemoteObject implements ServicesBarang {
public AksesBarang() throws RemoteException {
}
@Override
public List<Barang> getBarang() throws RemoteException {
List<Barang> listBarang = new ArrayList<>();
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("select * from barang");
while (resultSet.next()) {
Barang barang = new Barang();
barang.setIdBarang(resultSet.getString(1));
barang.setKategori(resultSet.getString(2));
barang.setNamaBarang(resultSet.getString(3));
listBarang.add(barang);
}
resultSet.close();
return listBarang;
} catch (Exception e) {
System.out.println("" + e.getMessage());
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void insert(Barang barang) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("insert into barang values('" + barang.getIdBarang() + "','" + barang.getKategori() + "','" + barang.getNamaBarang() + "',0,0)");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void update(Barang barang) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("update barang set kategori = '" + barang.getKategori() + "',nama_barang='" + barang.getNamaBarang() + "' where id_barang = '" + barang.getIdBarang() + "'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void delete(Barang barang) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("delete from barang where id_barang = '" + barang.getIdBarang() + "'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
}
===============================================================
Untuk AksesDetailTransaksi
===============================================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package AksesRMI;
import Entitas.DetailTransaksi;
import Koneksi.Koneksi;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author admin
*/
public class AksesDetailTransaksi extends UnicastRemoteObject implements Services.ServicesDetailTransaksi{
public AksesDetailTransaksi() throws RemoteException{
}
@Override
public List<DetailTransaksi> getDetailTransaksi() throws RemoteException {
List<DetailTransaksi> listDetailTransaksi = new ArrayList<>();
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("SELECT r.id_pengadaan,r.id_barang,b.nama_barang,"
+ "r.harga_beli_satuan,b.harga_jual,r.jumlah,"
+ "r.tgl_kadaluarsa FROM rel_pengadaan_barang r, barang b WHERE b.id_barang = r.id_barang "
+ "AND id_pengadaan = r.id_pengadaan");
while (resultSet.next()) {
DetailTransaksi detailTransaksi = new DetailTransaksi();
detailTransaksi.setId_pengadaan(resultSet.getString(1));
detailTransaksi.setId_barang(resultSet.getString(2));
detailTransaksi.setNama_barang(resultSet.getString(3));
detailTransaksi.setHarga_beli_satuan(resultSet.getInt(4));
detailTransaksi.setHarga_jual_satuan(resultSet.getDouble(5));
detailTransaksi.setJumlah(resultSet.getInt(6));
listDetailTransaksi.add(detailTransaksi);
}
resultSet.close();
return listDetailTransaksi;
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void insert(DetailTransaksi detailTransaksi) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("insert into rel_pengadaan_barang values('"+detailTransaksi.getId_pengadaan()+"','"+detailTransaksi.getId_barang()+"',
'"+detailTransaksi.getJumlah()+"'"
+ ",'"+detailTransaksi.getHarga_beli_satuan()+"','"+detailTransaksi.getTgl_kadaluarsa()+"',
'"+detailTransaksi.getHarga_jual_satuan()+"','"+detailTransaksi.getJumlah()+"')");
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
if (statement!=null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void update(DetailTransaksi detailTransaksi) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("update rel_pengadaan_barang set jumlah='"+detailTransaksi.getJumlah()+"', "
+ "harga_beli_satuan='"+detailTransaksi.getHarga_beli_satuan()+"', tgl_kadaluarsa='"+detailTransaksi.getTgl_kadaluarsa()+"', harga_jual_satuan='"+detailTransaksi.getHarga_jual_satuan()+"' "
+ "where ID_BARANG ='"+detailTransaksi.getId_barang()+"'");
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
if (statement!=null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void delete(DetailTransaksi detailTransaksi) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("delete from rel_pengadaan_barang where ID_BARANG ='"+detailTransaksi.getId_barang()+"'");
} catch (Exception e) {
System.out.println(e.getMessage());
}finally{
if (statement!=null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
}
===============================================================
Untuk AksesKategori
===============================================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package AksesRMI;
import Entitas.Kategori;
import Koneksi.Koneksi;
import Services.ServicesKategori;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author admin
*/
public class AksesKategori extends UnicastRemoteObject implements ServicesKategori {
public AksesKategori() throws RemoteException {
}
@Override
public List<Kategori> getKategori() throws RemoteException {
List<Kategori> listKategori = new ArrayList<>();
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("select * from kategori");
while (resultSet.next()) {
Kategori kategori = new Kategori();
kategori.setKategori(resultSet.getString(1));
kategori.setDeskripsi(resultSet.getString(2));
listKategori.add(kategori);
}
resultSet.close();
return listKategori;
} catch (Exception e) {
System.out.println("" + e.getMessage());
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void insert(Kategori kategori) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("insert into kategori values ('"+kategori.getKategori() +"','"+kategori.getDeskripsi()+"')");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void delete(Kategori kategori) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("delete from kategori where kategori = '"+kategori.getKategori()+"'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
}
===============================================================
Untuk AksesPengadaan
===============================================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package AksesRMI;
import Entitas.Pengadaan;
import Koneksi.Koneksi;
import Services.ServicesPengadaan;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author admin
*/
public class AksesPengadaan extends UnicastRemoteObject implements ServicesPengadaan {
public AksesPengadaan() throws RemoteException {
}
@Override
public List<Pengadaan> getPengadaan() throws RemoteException {
List<Pengadaan> listPengadaan = new ArrayList<>();
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("select * from pengadaan");
while (resultSet.next()) {
Pengadaan pengadaan = new Pengadaan();
pengadaan.setId_pengadaan(resultSet.getString(1));
pengadaan.setTanggal(resultSet.getString(3));
pengadaan.setSupplier(resultSet.getString(4));
pengadaan.setTotal_transaksi(resultSet.getDouble(5));
listPengadaan.add(pengadaan);
}
resultSet.close();
return listPengadaan;
} catch (Exception e) {
System.out.println("" + e.getMessage());
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void insert(Pengadaan pengadaan) throws RemoteException {
Statement statement = null;
int count = 100;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("select tanggal, id_pengadaan from pengadaan");
while (resultSet.next()) {
String data1 = resultSet.getString(1);
String data2 = resultSet.getString(2);
if (data1.equals(pengadaan.getTanggal())) {
if (count == Integer.valueOf(data2.substring(14, 17))) {
count++;
}
}
}
String id_pengadaan = "TB." + pengadaan.getTanggal2() + "." + count;
statement.executeUpdate("insert into pengadaan values('" + id_pengadaan + "' ,'admin' ,'" + pengadaan.getTanggal() + "' ,'" + pengadaan.getSupplier() + "' ,0)");
} catch (SQLException e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void delete(Pengadaan pengadaan) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("delete from pengadaan where id_pengadaan = '" + pengadaan.getId_pengadaan() + "'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
}
===============================================================
Untuk AksesUser
===============================================================
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package AksesRMI;
import Entitas.User;
import Koneksi.Koneksi;
import Services.ServicesUser;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author admin
*/
public class AksesUser extends UnicastRemoteObject implements ServicesUser {
public AksesUser() throws RemoteException {
}
@Override
public List<User> getUser() throws RemoteException {
List<User> listUser= new ArrayList<>();
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
ResultSet resultSet = statement.executeQuery("select * from user");
while (resultSet.next()) {
User user = new User();
user.setUsername(resultSet.getString(1));
user.setPassword(resultSet.getString(2));
user.setLevel(resultSet.getString(3));
user.setNama(resultSet.getString(4));
user.setAlamat(resultSet.getString(5));
user.setTelpon(resultSet.getString(6));
listUser.add(user);
}
resultSet.close();
return listUser;
} catch (Exception e) {
System.out.println("" + e.getMessage());
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void insert(User user) throws RemoteException {
Statement statement = null;
char[] passw = user.getPassword().toCharArray();
String sandi = "";
for (int i = 0; i < passw.length; i++) {
sandi = sandi + passw[i];
}
int level;
if (user.getLevel().equals("Admin")) {
level = 0;
} else {
level = 1;
}
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("insert into user values('" + user.getUsername() + "',md5('" + sandi + "')," + level + ",'" + user.getNama() + "','" + user.getAlamat() + "','" + user.getAlamat() + "')");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void delete(User user) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("delete from user where username = '" + user.getUsername() + "'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
@Override
public void reset(User user) throws RemoteException {
Statement statement = null;
try {
statement = Koneksi.getConnecction().createStatement();
statement.executeUpdate("update user set password=md5('" + user.getPassword2()+ "') where username='" + user.getUsername2() + "'");
} catch (Exception e) {
System.out.println("" + e.getMessage());
} finally {
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
}
}
}
}
}
===============================================================
Semua method yang di definisikan di dalam interface yang extend ke java.rmi.Remote harus melemparkan remote eksepsi : throws RemoteException , contoh :
Semua kelas yang mengimplementasikan interface diatas harus extends UnicastRemoteObject dan memiliki konstruktor yang throws RemoteException; contoh :
Setelah Akses RMI telah kita buat kita membuat Minimarket-api yang fungsinya untuk menghubungkan client dengan servis. Disini kita liat ada 2 package yaitu entitas dan services.
Untuk source code nya bisa diambil disini
Semoga bermanfaat ya :)