Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Remote method invocation - NetBeans

[es] :: Java :: Remote method invocation - NetBeans

[ Pregleda: 2861 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

nDDn
Beograd

Član broj: 64581
Poruke: 20
212.200.175.*



Profil

icon Remote method invocation - NetBeans13.02.2007. u 14:20 - pre 209 meseci
Radim projekat, koji je klijent - server aplikacija u NetBeans-u. Medjutim, ne mogu da ga pokrenem. Htela sam da ga pokrenem preko bat fajlova. Evo kako izgleda bat fajl za server:

rmic KontrolerRMIImpl
copy KontrolerRMI.class C:\Inetpub\wwwroot
copy KontrolerRMIImpl_Stub.class C:\Inetpub\wwwroot
start rmiregistry
start java -Djava.rmi.server.codebase=http://127.0.0.1/ PokreniMain


i server se pokrene bez problema i u wwwroot-u se snime oba class fajla.

Bat za klijenta:
java -Djava.security.policy=client.policy Client
pause


evo kako igleda client.policy datoteka

/* AUTOMATICALLY GENERATED ON Mon Nov 27 11:12:33 CET 2006*/
/* DO NOT EDIT */

grant {
permission java.security.AllPermission;
};


I security manager-a

System.setSecurityManager(new RMISecurityManager());

I onda izadje greska:

C:\Documents and Settings\DURON 850\Desktop\FON-IV godina\Projektovanje programa
\Seminarski rad\Hotel El Sol\Klijent hotel\build\classes>java -Djava.security.po
licy=client.policy Client
Greska kod klijenta
My Type Exception: "java.rmi.UnmarshalException: error unmarshalling return; nes
ted exception is:
java.lang.ClassNotFoundException: KontrolerRMIImpl_Stub"
at Client.main(Client.java:33)

C:\Documents and Settings\DURON 850\Desktop\FON-IV godina\Projektovanje programa
\Seminarski rad\Hotel El Sol\Klijent hotel\build\classes>pause
Press any key to continue . . .


Imam instaliran IIS

Ako neko vidi u cemu je problem neka mi javi. Ako vam treba jos neka informacija, pitajte me.
Hvala unapred.
 
Odgovor na temu

nDDn
Beograd

Član broj: 64581
Poruke: 20
212.200.175.*



Profil

icon Re: Remote method invocation - NetBeans13.02.2007. u 16:50 - pre 209 meseci
U medjuvremenu sam saznala da nisam podesila IIS(!)
Sada mi se fajlovi snimaju u C:\pp , a virtuelni direktorijum mi se zove javarmi i kada u browser-u pozovem http://127.0.0.1/javarmi priaze se lista sa svim fajlovima koji se nalaze u folderu pp

Evo kako izgleda bat za server:

rmic KontrolerRMIImpl
copy KontrolerRMI.class C:\pp
copy KontrolerRMIImpl_Stub.class C:\pp
cd rmiregister
start rmiregistry
start java -Djava.rmi.server.codebase=http://127.0.0.1/ PokreniMain
pause


Deo koda koji se nalazi u PokreniMain.java:

Naming.rebind("javarmi", kal);

i server se pokrene.

client.policy datoteka je ista kao u prethodnoj poruci
Deo koda u fajlu Client.java:

KontrolerALC.kontrolerRMI = (KontrolerRMI)Naming.lookup(
"rmi://127.0.0.1/javarmi");


i bat klijenta:


java -Djava.security.policy=client.policy Client
pause


i opet izadje identicna greska kao u prethodnoj poruci
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
*.finsoft.co.yu.



+7 Profil

icon Re: Remote method invocation - NetBeans16.02.2007. u 16:35 - pre 209 meseci
Ovaj, ne kontam sta ce ti IIS ? Za RMI ti nije potreban Web server, sem u slucaju da ti je klijent aplet.

 
Odgovor na temu

nDDn
Beograd

Član broj: 64581
Poruke: 20
212.200.175.*



Profil

icon Re: Remote method invocation - NetBeans16.02.2007. u 21:52 - pre 209 meseci
IIS je Internet Information Services, mislim da bez njega ne moze da se pokrene rmi. Klijent mi nije aplet.

Jer vidis mozda u cemu je problem?

Internet Information Services nalazi se u Control Panel/Add or Remove Programs/Add Or Remove Windows Components i tu je.
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
*.adsl-1.sezampro.yu.



+7 Profil

icon Re: Remote method invocation - NetBeans17.02.2007. u 10:43 - pre 209 meseci
Znam sta je IIS i gde se nalazi :)
Ali gresis, ne treba ti IIS niti bilo koji drugi Web server.

KontrolerRMIImpl_Stub ti iz nekog razloga nije vidljiv od strane klijenta.
Jel su klijent i server u istom direktorijumu/paketu ? Posalji kod, da ne nabadamo.
 
Odgovor na temu

nDDn
Beograd

Član broj: 64581
Poruke: 20
213.244.208.*



Profil

icon Re: Remote method invocation - NetBeans17.02.2007. u 16:09 - pre 209 meseci
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:)
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
*.adsl-1.sezampro.yu.



+7 Profil

icon Re: Remote method invocation - NetBeans17.02.2007. u 17:10 - pre 209 meseci
IIS nije neophodan da bi RMI radio, ali moze da se koristi kao lokacija za cuvanje _stub fajlova.
Znaci ili ces _stub klase imati i na serveru i na klijentima (strpas u .jar pa stavis u classpath za servera i klijente) ili mozes da ih stavis na Web server pa da ih odatle uzimaju i klijenti i server.

Ja sam uvek koristio prvu varijantu. Brze je i ne treba ti Web server.
Ne znam razlog zasto vi koristite drugu varijantu, u svakom slucaju "vezi konja gde ti gazda kaze".

Sto se koda tice, deluje mi da su kljucne stvari u redu. Probaj da promenis codebase u bat fajlu za servera;

start java -Djava.rmi.server.codebase=http://127.0.0.1/javarmi PokreniMain
 
Odgovor na temu

[es] :: Java :: Remote method invocation - NetBeans

[ Pregleda: 2861 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.