Klijent se nalazi u jednom projektu, a server u drugom. Zato sto kada budem pokretala aplikaciju, server cu da instaliram na jednom racunaru, a klijenta na dugom(ili vise drugih). Kako da ti posaljem ceo kod ne vidim neki attach ili slicno. Ali poslacu ono sto je kljucno i iz jednog i iz drugog projekta.
projekat Server
import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
public class PokreniMain {
public static void main(String[] args) {
try{
System.out.println("Server je pokrenut1");
KontrolerRMIImpl kal = new KontrolerRMIImpl();
Naming.rebind("javarmi", kal);
System.out.println("Server je pokrenut2");
}catch(RemoteException re){
System.out.println("Pokreni2");
re.printStackTrace(); }
catch(MalformedURLException mue){
System.out.println("Pokreni2");
mue.printStackTrace();
}
}
}
—
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;
public interface KontrolerRMI extends Remote{//ovo je interfejs
public OpstiObjekat zadnjSlog(OpstiObjekat op)throws RemoteException;
public OpstiObjekat inicijalizuj(OpstiObjekat op)throws RemoteException;
public OpstiObjekat[] inicijalizujSveObjekteIzRelacije(OpstiObjekat[] op)throws RemoteException;
public OpstiObjekat novi(OpstiObjekat op)throws RemoteException;
public OpstiObjekat zapamti(OpstiObjekat op)throws RemoteException;
public OpstiObjekat zapamtiRasporedjivanje(OpstiObjekat op)throws RemoteException;
public OpstiObjekat proveriIZapamti(OpstiObjekat op)throws RemoteException;
public OpstiObjekat pronadji(OpstiObjekat op)throws RemoteException;
public int prekiniVezu(int klijent) throws RemoteException;
public String getRemoteMessage() throws RemoteException;
}
—
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import javax.swing.*;
public class KontrolerRMIImpl extends UnicastRemoteObject implements KontrolerRMI{
KreiranjeNiti kn;
public KontrolerRMIImpl()throws RemoteException{
super();
}
public OpstiObjekat zadnjSlog(OpstiObjekat op)throws RemoteException{
return ZadnjiSlog.zadnjiSlog(op); //ovo su sistemske operacije koje rade sa DataBaseBrokerom
}
public OpstiObjekat inicijalizuj(OpstiObjekat op)throws RemoteException{
return Inicijalizuj.inicijalizuj(op);
}
public OpstiObjekat[] inicijalizujSveObjekteIzRelacije(OpstiObjekat[] op)throws RemoteException{
return InicijalizujSveObjekteIzRelacije.inicijalizuj(op);
}
public OpstiObjekat novi(OpstiObjekat op)throws RemoteException{
return Novi.novi(op);
}
public OpstiObjekat zapamti(OpstiObjekat op)throws RemoteException{
return Zapamti.zapamti(op);
}
public OpstiObjekat zapamtiRasporedjivanje(OpstiObjekat op)throws RemoteException{
return ZapamtiRasporedjivanje.zapamti(op);
}
public OpstiObjekat proveriIZapamti(OpstiObjekat op)throws RemoteException{
return ProveriIZapamti.proveriIZapamti(op);
}
public OpstiObjekat pronadji(OpstiObjekat op)throws RemoteException{
return Pronadji.pronadji(op);
}
public int prekiniVezu(int klijent)throws RemoteException{
return 1;
}
public String getRemoteMessage()throws RemoteException{
return "RMI connected - "+System.getenv("COMPUTERNAME")+":1099";
}
public void setKN(KreiranjeNiti kn){
this.kn = kn;
}
}
Bat fajl za server sam otkucala u prethodnom mailu
projekat Klijent
import java.rmi.*;
import java.rmi.registry.*;
import java.rmi.server.*;
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try{
System.setSecurityManager(new RMISecurityManager());
try{
KontrolerALC.kontrolerRMI = (KontrolerRMI)Naming.lookup(
"rmi://127.0.0.1/javarmi");
LogIn li = new LogIn();
li.setVisible(true);
}catch(MalformedURLException mue){
System.out.println("Greska: " + mue.getMessage());
}
catch(NotBoundException nbe){
System.out.println("Greska: " + nbe.getMessage());
}
catch(RemoteException re){
throw new MyException(re);
}
}
catch(Exception e){
System.out.println("Greska kod klijenta");
e.printStackTrace();
}
}
}
bat klijenta je u prethodnom mailu
Citat:
Ali gresis, ne treba ti IIS niti bilo koji drugi Web server.
Nas su ucili da je to neophodno...
Citat:
KontrolerRMIImpl_Stub ti iz nekog razloga nije vidljiv od strane klijenta.
Kad ti radis neki program, a da je rmi, gde ti server smesta ..._Stub.class fajl. Zar ne bi trebalo odatle gde ga je server smestio da ga klijent uzme?
Ne znam, da li mozes da mi posaljes neki primer, a da klijent i server nisu u istom projektu.
U svakom slucaju hvala ti puno:)