Artikel ini adalah melanjutkan artikel sebelumnya yaitu “Latihan membuat aplikasi client-server database untuk awal project sistem terdistribusi dan pemrosesan parallel menggunakan java” yang sempat terhenti karena waktu saya postingnya siang pas wktu kuliah.. sekrang dilanjut setelah sebelumnya kita membuat api untuk client server, sekrang kita biat servernya dulu sebagai tempat proses logicnya..
buat project baru dan dibawah ini ada screenshotnya untuk project server:
langkah pertama setelah membuat project adalah memasukkan api kedalam library-nya server untuk digunakan.. caranya klik kanan pada library terus add project pilih api-cobasister lalu di add project JAR Files. setelah itu juga masukkan driver jdbc didalam library untuk koneksinya.. caranya klik kanan pada library add library lalu pilih Mysql JDBC Driver lalu add library.
setelah itu buat class2 seperti dibawah ini.. keterangan kelas tersebut dipaket mana ada di sourcecode paling atas, jadi mohon disesuaikan..
setelah itu buat class2 seperti dibawah ini.. keterangan kelas tersebut dipaket mana ada di sourcecode paling atas, jadi mohon disesuaikan..
pertama buat DatabaseUtilities.java (ini adalah class yg mengurusi koneksi antara aplikasi, dao dan database)
package stta.bahrie.sisterserver.utilities;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author bahrie
*/
public class DatabaseUtilities {
private static Connection connection;
public static Connection getConnection() {
if (connection == null) {
try {
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/uji_sister", "root", "bahrie");
} catch (SQLException ex) {
Logger.getLogger(DatabaseUtilities.class.getName()).log(Level.SEVERE, null, ex);
}
}
return connection;
}
}
setelah itu buat PesonServiceServer.java (kelas ini adalah implement dari interface yang ada di project api yaitu interface PersonService.java) didalamnya adalah berisi bisnis logic untuk perantara dri aplikasi ke database maupun sebaliknya yang disebut dengan istilah DAO(data access Object)..
package stta.bahrie.sisterserver.sevice;
import api.bahrie.entity.Person;
import api.bahrie.service.PersonSevice;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.Date;
import java.util.List;
import stta.bahrie.sisterserver.utilities.DatabaseUtilities;
/**
*
* @author bahrie
*/
public class PersonServiceServer extends UnicastRemoteObject implements PersonSevice {
private Date waktu;
public PersonServiceServer() throws RemoteException {
}
public Person insertPerson(Person person) throws RemoteException {
System.out.println("client sendang melakukan insert");
PreparedStatement statement = null;
try {
statement = DatabaseUtilities.getConnection().prepareStatement("INSERT INTO person (id,nama_depan,nama_belakang,tanggal_lahir)"
+ "VALUES(null,?,?,?)");
statement.setString(1, person.getNama_depan());
statement.setString(2, person.getNama_belakang());
statement.setDate(3, new Date(person.getTanggal_lahir().getTime()));
statement.executeUpdate();
ResultSet result = statement.getGeneratedKeys();
if (result.next()) {
person.setId(result.getLong(1));
}
result.close();
return person;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}
public void updatePerson(Person person) throws RemoteException {
System.out.println("client sedang melakukan update");
PreparedStatement statement = null;
try {
statement = DatabaseUtilities.getConnection().prepareStatement(
"UPDATE person SET nama_depan=?,nama_belakang=?,tanggal_lahir=? WHERE id=?");
statement.setString(1, person.getNama_depan());
statement.setString(2, person.getNama_belakang());
statement.setDate(3, (java.sql.Date) new Date(person.getTanggal_lahir().getTime()));
statement.setLong(4, person.getId());
statement.executeUpdate();
} catch (SQLException exception) {
} finally {
if (statement != null) {
try {
statement.close();
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}
public void deletePerson(Long id) throws RemoteException {
System.out.println("client sedang melakukan delete");
PreparedStatement statement = null;
try {
statement = DatabaseUtilities.getConnection().prepareStatement(
"DELETE FROM person where id=?");
statement.setLong(1, id);
statement.executeUpdate();
} catch (SQLException exception) {
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
public Person getPerson(Long id) throws RemoteException {
System.out.println("client sedang melakukan get satu record");
PreparedStatement statement = null;
try {
statement = DatabaseUtilities.getConnection().prepareStatement(
"SELECT *FROM person where id=?");
statement.setLong(1, id);
ResultSet result = statement.executeQuery();
Person person = null;
if (result.next()) {
person = new Person();
person.setId(result.getLong("id"));
person.setNama_depan(result.getString("nama_depan"));
person.setNama_belakang(result.getString("nama_belakang"));
person.setTanggal_lahir(result.getDate("tanggal_lahir"));
}
return person;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
public List getPerson() throws RemoteException {
// System.out.println("client sedang melakukan getAll");
Statement statement = null;
try {
statement = DatabaseUtilities.getConnection().createStatement();
ResultSet result = statement.executeQuery("SELECT *FROM person");
List list = new ArrayList();
while (result.next()) {
Person person = new Person();
person.setId(result.getLong("id"));
person.setNama_depan(result.getString("nama_depan"));
person.setNama_belakang(result.getString("nama_belakang"));
person.setTanggal_lahir(result.getDate("tanggal_lahir"));
list.add(person);
}
result.close();
return list;
} catch (SQLException exception) {
exception.printStackTrace();
return null;
} finally {
try {
if (statement != null) {
statement.close();
}
} catch (SQLException exception) {
exception.printStackTrace();
}
}
}
}
sampai disini DAO(data akses objek) sudah dibuat. sekarang tinggal buat servernya yg berada di Main.java
package stta.bahrie.sisterserver;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import stta.bahrie.sisterserver.sevice.PersonServiceServer;
/**
*
* @author bahrie
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws RemoteException {
// TODO code application logic here
Registry server=LocateRegistry.createRegistry(1234);
PersonServiceServer personService=new PersonServiceServer();
server.rebind("service", personService);
System.out.println("Server berhasil berjalan");
}
}
disini saya menggunakan port 1234 supaya mudah diingat...hehee dan port ini bisa dirubah tapi sebaiknya gunakan yg blum digunakan secara pasti seperti portnya mySQL ataupun Oracle dan semacamnya.. dan untuk pembuatan nomor port jangan ikuti saya yg menggunakan alasan supaya mudah diingat..
sampai disini server sudah terbentuk.. silahkan ditest dengan cara klik kanan project dan klik run.
untuk project clientnya akan saya taruh dipostingan selanjutnya..
selamat mencoba..
Tidak ada komentar:
Posting Komentar