TP 3 Rmi

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 8

TP Java RMI / Architecture 3 Tiers (avec accès à la base de données)

Base de données / MySQL :

 Installation de MySQL Server :

1. Téléchargement de MySQL Server : Rendez-vous sur le site officiel de MySQL pour télécharger MySQL
Community Server. Voici le lien pour la page de téléchargement : [Téléchargement de MySQL
Community Server](https://dev.mysql.com/downloads/mysql/)

2. Choix de la version : Sur cette page, vous pouvez choisir la version appropriée pour votre système
d'exploitation (Windows, Linux, macOS). Cliquez sur le lien de téléchargement pour la version souhaitée.

3. Téléchargement et installation : Suivez les instructions d'installation pour installer MySQL Server sur
votre système. Pendant le processus d'installation, vous devrez configurer un mot de passe pour
l'utilisateur root.

 Téléchargement du pilote JDBC MySQL :

1. Téléchargement du pilote JDBC MySQL : Vous pouvez télécharger le pilote JDBC MySQL, également
appelé MySQL Connector/J, à partir du site officiel de MySQL. Voici le lien de téléchargement :
[Téléchargement de MySQL Connector/J](https://dev.mysql.com/downloads/connector/j/)

2. Choix de la version : Sur cette page, sélectionnez la version du pilote JDBC MySQL adaptée à votre
version de MySQL Server. Choisissez la version la plus récente si possible.

3. Téléchargement du pilote JDBC : Cliquez sur le lien de téléchargement pour obtenir le fichier JAR du
pilote JDBC MySQL.

NB : N'oubliez pas d'ajouter le fichier JAR du pilote JDBC MySQL à votre projet Eclipse pour pouvoir
utiliser JDBC et interagir avec la base de données MySQL depuis votre application Java.

Une fois que vous avez téléchargé et installé MySQL Server et téléchargé le pilote JDBC MySQL, vous
pouvez suivre les étapes suivantes pour créer une base de données, une table `Person`, et insérer des
données.

CREATE DATABASE my_db ;

USE my_db;

CREATE TABLE Person (

ID INT AUTO_INCREMENT PRIMARY KEY,

Name VARCHAR(255),
Age INT,

Address VARCHAR(255)

);

INSERT INTO Person (Name, Age, Address) VALUES

('Alex', 18, 'Paris'),

('Thomax', 25, 'Lille'),

('Emily', 30, 'Nantes'),

('Bob', 45, 'Toulouse');

Table ‘Person’ :

ID Name Age Address


1 Alex 18 Paris
2 Thomax 25 Lille
3 Emily 30 Nantes
4 Bob 45 Toulouse

Classe d’accès à la BDD : Person.java

package rmi;

import java.io.Serializable;

public class Person implements Serializable {


private int id, age;
private String name, address;

public int getId() {


return id;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public int getAge() {
return age;
}
public void setID(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
public void setAge(int age) {
this.age = age;
}
}

Interface Objet distant : RemoteInter.java

import java.rmi.;

import java.util.;

// Créer l'interface de l'objet distante

public interface RemoteInter extends Remote {

public List<Person> getPersones() throws Exception;

}
Classe d’implémentation : ImplClasse.java

package rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

public class ImplClasse implements RemoteInter {

// Implémenter la méthode de l'interface


public List<Person> getPersones() throws Exception
{
List<Person> liste = new ArrayList<Person>();

Connection conn = null;


Statement stmt = null;

//Enregistrer le pilote JDBC


Class.forName("com.mysql.cj.jdbc.Driver");
//Ouvrez une connexion
System.out.println("Connexion à la base de données
sélectionnée...");
conn =
DriverManager.getConnection("jdbc:mysql://localhost:3306/my_db", "root",
"azerty");
System.out.println("Base de données connectée avec
succès...");

//Exécuter la requête
System.out.println("Créer l'objet Statement...");

stmt = conn.createStatement();
String sql = "SELECT * FROM Person";
ResultSet res = stmt.executeQuery(sql);

//Extraire des données de ResultSet


while(res.next()) {
// Récupérer par nom de colonne
int id = res.getInt("id");
int age = res.getInt("age");
String name = res.getString("name");
String address = res.getString("address");

// Définir les valeurs


Person p = new Person();
p.setID(id);
p.setAge(age);
p.setName(name);
p.setAddress(address);
liste.add(p);
}
res.close();
return liste;
}
}

Programme Serveur : Server.java

package server;

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

import rmi.ImplClasse;
import rmi.RemoteInter;

public class Server {

public Server() {}

public static void main(String args[]) {


try {
// crée l'objet distant
ImplClasse obj = new ImplClasse();
LocateRegistry.createRegistry(1099);
// ici, nous exportons l'objet distant vers le stub
RemoteInter stub = (RemoteInter)
UnicastRemoteObject.exportObject(obj, 0);

// Liaison de l'objet distant (stub) dans le Registre


Registry reg = LocateRegistry.getRegistry();

reg.bind("RemoteInter", stub);
System.out.println("Le Serveur est prêt...");
} catch (Exception e) {
System.err.println(e.toString());
e.printStackTrace();
}
}
}

Programme Client : Client.java

import java.rmi.registry.LocateRegistry;

import java.rmi.registry.Registry;

import java.util.;

public class Client

private Client(){}

public static void main(String[] args) throws Exception {

try {

// Récupérer le registre

Registry reg = LocateRegistry.getRegistry(null);

// Recherche dans le registre de l'objet distant


RemoteInter stub = (RemoteInter) reg.lookup("RemoteInter");

// Appel de la méthode distante à l'aide de l'objet obtenu

List<Person> liste = (List)stub.getPersones();

for (Person p : liste) {

System.out.println("ID: " + p.getId());

System.out.println("Name: " + p.getName());

System.out.println("Age: " + p.getAge());

System.out.println("Address: " + p.getAddress());

} catch (Exception e) {

System.err.println(e.toString());

Vous aimerez peut-être aussi