/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
RMI fra Applet
Fra : Jonas Swiatek


Dato : 20-02-01 23:03

Hej der.

Jeg har lige gennemgået SUNS eksempel på RMI. (Den med CalculatorServer og
CalculatorClient ect.)
Og det virker helt perfekt.

Men, jeg har prøvet at lave Klienten som en Applet. Men jeg får følgende
fejl i min Java Konsol:
-- Snip --

com.ms.security.SecurityExceptionEx[RMIApplet.init]: java.io.IOException:
bad path: c:\java\rmitest\java\rmi\RemoteException.class
at com/ms/security/permissions/FileIOPermission.check
at com/ms/security/PolicyEngine.deepCheck
at com/ms/security/PolicyEngine.checkPermission
at com/ms/security/StandardSecurityManager.chk
at com/ms/security/StandardSecurityManager.checkRead
at java/io/File.isDirectory
at sun/net/www/protocol/file/FileURLConnection.connect
at sun/net/www/protocol/file/FileURLConnection.getInputStream
at com/ms/vm/loader/ResourceLoader.getURLData
at com/ms/vm/loader/ResourceLoader.getCodebaseRelativeData
at com/ms/vm/loader/ResourceLoader.getClassData
at com/ms/vm/loader/URLClassLoader.findClass
at com/ms/vm/loader/URLClassLoader.loadClass
at java/lang/ClassLoader.loadClassInternal
at RMIApplet.init
at com/ms/applet/AppletPanel.securedCall0
at com/ms/applet/AppletPanel.securedCall
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.run
at java/lang/Thread.run
java.lang.ClassNotFoundException: java.rmi.RemoteException
at com/ms/vm/loader/URLClassLoader.loadClass
at java/lang/ClassLoader.loadClassInternal
at RMIApplet.init
at com/ms/applet/AppletPanel.securedCall0
at com/ms/applet/AppletPanel.securedCall
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.processSentEvent
at com/ms/applet/AppletPanel.run
at java/lang/Thread.run

-- Snip --

Koden til Appletten er:
-- Snip --

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;

public class RMIApplet extends Applet implements ActionListener {
TextField textfield;
Button connect_button;
Calculator c;

public void init() {
setLayout(new BorderLayout());

textfield = new TextField(20);
connect_button = new Button("CONNECT");
connect_button.addActionListener(this);

add(BorderLayout.CENTER, textfield);
add(BorderLayout.SOUTH, connect_button);

try {
c = (Calculator)
Naming.lookup("rmi://192.168.1.2/CalculatorService");
}
catch (MalformedURLException murle) {
System.out.println();
System.out.println("MalformedURLException");
System.out.println(murle);
}
catch (RemoteException re) {
System.out.println();
System.out.println("RemoteException");
System.out.println(re);
}
catch(NotBoundException nbe) {
System.out.println();
System.out.println("NotBoundException");
System.out.println(nbe);
}
catch(java.lang.ArithmeticException ae) {
System.out.println();
System.out.println("java.lang.ArithmeticException");
System.out.println(ae);
}
}

public void actionPerformed(ActionEvent e) {
if(e.getSource() == connect_button)
connect();
}

public void connect() {
try {
textfield.setText(Long.toString(c.add(4, 5)));
}
catch (RemoteException re) {
System.out.println();
System.out.println("RemoteException");
System.out.println(re);
}
}
}

-- Snip --

Det som jeg sudser mest over er:
com.ms.security.SecurityExceptionEx[RMIApplet.init]: java.io.IOException:
bad path: c:\java\rmitest\java\rmi\RemoteException.class
Hvorfor forsøger den at hente RMI-pakkerne derfra ?
Og kan man overhoved bruge RMI er fra en Applet.

--
Jonas




 
 
Dennis Thrysøe (21-02-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 21-02-01 08:57

Applets kører i et miljø (browseren) hvor der ikke er adgang til så
meget, som når VM'en bruges direkte.

Det ser ud til at din applikation prøver at loade en klasse fra den
lokale disk. Det har den nok ikke som udgangspunkt lov til.

Måske browseren kan indstilles til at spørge?

-dennis



Jonas Swiatek wrote:

> Hej der.
>
> Jeg har lige gennemgået SUNS eksempel på RMI. (Den med CalculatorServer og
> CalculatorClient ect.)
> Og det virker helt perfekt.
>
> Men, jeg har prøvet at lave Klienten som en Applet. Men jeg får følgende
> fejl i min Java Konsol:
> -- Snip --
>
> com.ms.security.SecurityExceptionEx[RMIApplet.init]: java.io.IOException:
> bad path: c:\java\rmitest\java\rmi\RemoteException.class
> at com/ms/security/permissions/FileIOPermission.check
> at com/ms/security/PolicyEngine.deepCheck
> at com/ms/security/PolicyEngine.checkPermission
> at com/ms/security/StandardSecurityManager.chk
> at com/ms/security/StandardSecurityManager.checkRead
> at java/io/File.isDirectory
> at sun/net/www/protocol/file/FileURLConnection.connect
> at sun/net/www/protocol/file/FileURLConnection.getInputStream
> at com/ms/vm/loader/ResourceLoader.getURLData
> at com/ms/vm/loader/ResourceLoader.getCodebaseRelativeData
> at com/ms/vm/loader/ResourceLoader.getClassData
> at com/ms/vm/loader/URLClassLoader.findClass
> at com/ms/vm/loader/URLClassLoader.loadClass
> at java/lang/ClassLoader.loadClassInternal
> at RMIApplet.init
> at com/ms/applet/AppletPanel.securedCall0
> at com/ms/applet/AppletPanel.securedCall
> at com/ms/applet/AppletPanel.processSentEvent
> at com/ms/applet/AppletPanel.processSentEvent
> at com/ms/applet/AppletPanel.run
> at java/lang/Thread.run
> java.lang.ClassNotFoundException: java.rmi.RemoteException
> at com/ms/vm/loader/URLClassLoader.loadClass
> at java/lang/ClassLoader.loadClassInternal
> at RMIApplet.init
> at com/ms/applet/AppletPanel.securedCall0
> at com/ms/applet/AppletPanel.securedCall
> at com/ms/applet/AppletPanel.processSentEvent
> at com/ms/applet/AppletPanel.processSentEvent
> at com/ms/applet/AppletPanel.run
> at java/lang/Thread.run
>
> -- Snip --
>
> Koden til Appletten er:
> -- Snip --
>
> import java.awt.*;
> import java.awt.event.*;
> import java.applet.*;
>
> import java.rmi.Naming;
> import java.rmi.RemoteException;
> import java.net.MalformedURLException;
> import java.rmi.NotBoundException;
>
> public class RMIApplet extends Applet implements ActionListener {
> TextField textfield;
> Button connect_button;
> Calculator c;
>
> public void init() {
> setLayout(new BorderLayout());
>
> textfield = new TextField(20);
> connect_button = new Button("CONNECT");
> connect_button.addActionListener(this);
>
> add(BorderLayout.CENTER, textfield);
> add(BorderLayout.SOUTH, connect_button);
>
> try {
> c = (Calculator)
> Naming.lookup("rmi://192.168.1.2/CalculatorService");
> }
> catch (MalformedURLException murle) {
> System.out.println();
> System.out.println("MalformedURLException");
> System.out.println(murle);
> }
> catch (RemoteException re) {
> System.out.println();
> System.out.println("RemoteException");
> System.out.println(re);
> }
> catch(NotBoundException nbe) {
> System.out.println();
> System.out.println("NotBoundException");
> System.out.println(nbe);
> }
> catch(java.lang.ArithmeticException ae) {
> System.out.println();
> System.out.println("java.lang.ArithmeticException");
> System.out.println(ae);
> }
> }
>
> public void actionPerformed(ActionEvent e) {
> if(e.getSource() == connect_button)
> connect();
> }
>
> public void connect() {
> try {
> textfield.setText(Long.toString(c.add(4, 5)));
> }
> catch (RemoteException re) {
> System.out.println();
> System.out.println("RemoteException");
> System.out.println(re);
> }
> }
> }
>
> -- Snip --
>
> Det som jeg sudser mest over er:
> com.ms.security.SecurityExceptionEx[RMIApplet.init]: java.io.IOException:
> bad path: c:\java\rmitest\java\rmi\RemoteException.class
> Hvorfor forsøger den at hente RMI-pakkerne derfra ?
> Og kan man overhoved bruge RMI er fra en Applet.
>
> --
> Jonas


Jonas Swiatek (21-02-2001)
Kommentar
Fra : Jonas Swiatek


Dato : 21-02-01 12:25

Ja, det var os det jeg fik konkluderet.

Men, hvorfor prøver den at finde klassen der ?
Programmet virker fint som "main-applikation".

Jeg prøver den lige i HotJava-browseren, den understøtter vist at man kan
give Sandboxen flere rettigheder ???
- Men stadig. Den skal ikke hente RemoteException.class fra mappen hvor
appletten ligger....

--
Jonas

"Dennis Thrysøe" <qabi@qabi.dk> skrev i en meddelelse
news:3A9374CC.5030401@qabi.dk...
> Applets kører i et miljø (browseren) hvor der ikke er adgang til så
> meget, som når VM'en bruges direkte.
>
> Det ser ud til at din applikation prøver at loade en klasse fra den
> lokale disk. Det har den nok ikke som udgangspunkt lov til.
>
> Måske browseren kan indstilles til at spørge?
>
> -dennis
>
>
>
> Jonas Swiatek wrote:
>
> > Hej der.
> >
> > Jeg har lige gennemgået SUNS eksempel på RMI. (Den med CalculatorServer
og
> > CalculatorClient ect.)
> > Og det virker helt perfekt.
> >
> > Men, jeg har prøvet at lave Klienten som en Applet. Men jeg får følgende
> > fejl i min Java Konsol:
> > -- Snip --
> >
> > com.ms.security.SecurityExceptionEx[RMIApplet.init]:
java.io.IOException:
> > bad path: c:\java\rmitest\java\rmi\RemoteException.class
> > at com/ms/security/permissions/FileIOPermission.check
> > at com/ms/security/PolicyEngine.deepCheck
> > at com/ms/security/PolicyEngine.checkPermission
> > at com/ms/security/StandardSecurityManager.chk
> > at com/ms/security/StandardSecurityManager.checkRead
> > at java/io/File.isDirectory
> > at sun/net/www/protocol/file/FileURLConnection.connect
> > at sun/net/www/protocol/file/FileURLConnection.getInputStream
> > at com/ms/vm/loader/ResourceLoader.getURLData
> > at com/ms/vm/loader/ResourceLoader.getCodebaseRelativeData
> > at com/ms/vm/loader/ResourceLoader.getClassData
> > at com/ms/vm/loader/URLClassLoader.findClass
> > at com/ms/vm/loader/URLClassLoader.loadClass
> > at java/lang/ClassLoader.loadClassInternal
> > at RMIApplet.init
> > at com/ms/applet/AppletPanel.securedCall0
> > at com/ms/applet/AppletPanel.securedCall
> > at com/ms/applet/AppletPanel.processSentEvent
> > at com/ms/applet/AppletPanel.processSentEvent
> > at com/ms/applet/AppletPanel.run
> > at java/lang/Thread.run
> > java.lang.ClassNotFoundException: java.rmi.RemoteException
> > at com/ms/vm/loader/URLClassLoader.loadClass
> > at java/lang/ClassLoader.loadClassInternal
> > at RMIApplet.init
> > at com/ms/applet/AppletPanel.securedCall0
> > at com/ms/applet/AppletPanel.securedCall
> > at com/ms/applet/AppletPanel.processSentEvent
> > at com/ms/applet/AppletPanel.processSentEvent
> > at com/ms/applet/AppletPanel.run
> > at java/lang/Thread.run
> >
> > -- Snip --
> >
> > Koden til Appletten er:
> > -- Snip --
> >
> > import java.awt.*;
> > import java.awt.event.*;
> > import java.applet.*;
> >
> > import java.rmi.Naming;
> > import java.rmi.RemoteException;
> > import java.net.MalformedURLException;
> > import java.rmi.NotBoundException;
> >
> > public class RMIApplet extends Applet implements ActionListener {
> > TextField textfield;
> > Button connect_button;
> > Calculator c;
> >
> > public void init() {
> > setLayout(new BorderLayout());
> >
> > textfield = new TextField(20);
> > connect_button = new Button("CONNECT");
> > connect_button.addActionListener(this);
> >
> > add(BorderLayout.CENTER, textfield);
> > add(BorderLayout.SOUTH, connect_button);
> >
> > try {
> > c = (Calculator)
> > Naming.lookup("rmi://192.168.1.2/CalculatorService");
> > }
> > catch (MalformedURLException murle) {
> > System.out.println();
> > System.out.println("MalformedURLException");
> > System.out.println(murle);
> > }
> > catch (RemoteException re) {
> > System.out.println();
> > System.out.println("RemoteException");
> > System.out.println(re);
> > }
> > catch(NotBoundException nbe) {
> > System.out.println();
> > System.out.println("NotBoundException");
> > System.out.println(nbe);
> > }
> > catch(java.lang.ArithmeticException ae) {
> > System.out.println();
> > System.out.println("java.lang.ArithmeticException");
> > System.out.println(ae);
> > }
> > }
> >
> > public void actionPerformed(ActionEvent e) {
> > if(e.getSource() == connect_button)
> > connect();
> > }
> >
> > public void connect() {
> > try {
> > textfield.setText(Long.toString(c.add(4, 5)));
> > }
> > catch (RemoteException re) {
> > System.out.println();
> > System.out.println("RemoteException");
> > System.out.println(re);
> > }
> > }
> > }
> >
> > -- Snip --
> >
> > Det som jeg sudser mest over er:
> > com.ms.security.SecurityExceptionEx[RMIApplet.init]:
java.io.IOException:
> > bad path: c:\java\rmitest\java\rmi\RemoteException.class
> > Hvorfor forsøger den at hente RMI-pakkerne derfra ?
> > Og kan man overhoved bruge RMI er fra en Applet.
> >
> > --
> > Jonas
>



0405rl (21-02-2001)
Kommentar
Fra : 0405rl


Dato : 21-02-01 12:49

Du bør læse dette link: http://java.sun.com/docs/books/tutorial/rmi/running.html

Når vi taler om en applet og den den skal have adgang til resourcer andre steder end i sin egen mappe SKAL der laves en 'policy file' for hvad appletten må og ikke må...

mvh.
René Larsen


Leveret af:
http://www.kandu.dk/
"Vejen til en hurtig løsning"


Casper Madsen (21-02-2001)
Kommentar
Fra : Casper Madsen


Dato : 21-02-01 16:05

Hvis den ikke køres som "http://localhost...." så får appletten ikke lov til
noget... Det vil altså sige at du skal køre din (test)html fra din server,
og ikke 'bare' i browseren...

Du har stadig ikke ret mange rettigheder, men alligevel flere...

På gentast...

Casper Madsen

"0405rl" <0405rl.news@kandu.dk> wrote in message
news:zWNk6.25062$2w6.347013@twister.sunsite.dk...
> Du bør læse dette link:
http://java.sun.com/docs/books/tutorial/rmi/running.html
>
> Når vi taler om en applet og den den skal have adgang til resourcer andre
steder end i sin egen mappe SKAL der laves en 'policy file' for hvad
appletten må og ikke må...
>
> mvh.
> René Larsen
>
>
> Leveret af:
> http://www.kandu.dk/
> "Vejen til en hurtig løsning"
>



Jonas Swiatek (22-02-2001)
Kommentar
Fra : Jonas Swiatek


Dato : 22-02-01 00:04

Ok, det gjorde mig mere forvirret.

Det jeg vil er:
Jeg vil lave en RMIserver, som kører på 192.168.1.2
På 192.168.1.2 er der os en Webserver.

Derfra vil jeg lave en Java Applet. En AWT 1.1 Den skal virke i de fleste
browserer - brugerne skal ikke downloade det monster store plugin...
Denne Java Applet. Skal tilslutte til RMIserveren og udveklse information
med denne.

Er det virkelig nødvendigt at lave en policy-file for at lave dette? Det
skal bare virke - brugerne må IKKE skulle indstallerer noget på deres
maskiner. Appletten skal bare tilslutte, og udveksle information.

--
Jonas

"Casper Madsen" <casper.madsen@adcore.com> skrev i en meddelelse
news:970ld8$opl$1@news.inet.tele.dk...
> Hvis den ikke køres som "http://localhost...." så får appletten ikke lov
til
> noget... Det vil altså sige at du skal køre din (test)html fra din server,
> og ikke 'bare' i browseren...
>
> Du har stadig ikke ret mange rettigheder, men alligevel flere...
>
> På gentast...
>
> Casper Madsen
>
> "0405rl" <0405rl.news@kandu.dk> wrote in message
> news:zWNk6.25062$2w6.347013@twister.sunsite.dk...
> > Du bør læse dette link:
> http://java.sun.com/docs/books/tutorial/rmi/running.html
> >
> > Når vi taler om en applet og den den skal have adgang til resourcer
andre
> steder end i sin egen mappe SKAL der laves en 'policy file' for hvad
> appletten må og ikke må...
> >
> > mvh.
> > René Larsen
> >
> >
> > Leveret af:
> > http://www.kandu.dk/
> > "Vejen til en hurtig løsning"
> >
>
>



Morten Nedertoft (22-02-2001)
Kommentar
Fra : Morten Nedertoft


Dato : 22-02-01 07:40

Jonas Swiatek wrote:
>
> Ok, det gjorde mig mere forvirret.
>
> Det jeg vil er:
> Jeg vil lave en RMIserver, som kører på 192.168.1.2
> På 192.168.1.2 er der os en Webserver.
>
...
> Er det virkelig nødvendigt at lave en policy-file for at lave dette? Det
> skal bare virke - brugerne må IKKE skulle indstallerer noget på deres
> maskiner. Appletten skal bare tilslutte, og udveksle information.

Det burde virke fint med normale applet-rettigheder.
Proev at se om det ikke virker under Navigator. Jeg kan se at du bruger
Internet Explorer, den har vist nogle problemer med RMI, mener jeg at
have hoert.

mvh. Morten N

Jonas Swiatek (22-02-2001)
Kommentar
Fra : Jonas Swiatek


Dato : 22-02-01 11:31

Den vil ikke rigtigt i Netscape, men det er der heller ik' så meget andet
der vil.

Men, den virker fint i Forte for Javas browser.

Men i appletviewer får jeg en eller andet security-exception.
Og i Internet Explorer kan den ikke finde RemoteException.class
Det er ikke til at bære.

Det, det skal bruges til er en game-server.
Jeg er ved at forsøge at lave en multiplayer spil. Hvor klienterne, hvergang
de flytter sig (på et kort), skal rapporterer det til en server.
De andre klienter skal så have at vide, at denne spiller har flyttet sig.

Kan man lave netværkskommunikation på andre måder end med RMI ? - det ved
jeg man kan.

Hvad med socket-connections ?
- Er der nogle der har en guide/tutorital til dette?

--
Jonas

"Morten Nedertoft" <mmn@pr-group.sdu.dk> skrev i en meddelelse
news:3A94B432.E43EFBE7@pr-group.sdu.dk...
> Jonas Swiatek wrote:
> >
> > Ok, det gjorde mig mere forvirret.
> >
> > Det jeg vil er:
> > Jeg vil lave en RMIserver, som kører på 192.168.1.2
> > På 192.168.1.2 er der os en Webserver.
> >
> ..
> > Er det virkelig nødvendigt at lave en policy-file for at lave dette? Det
> > skal bare virke - brugerne må IKKE skulle indstallerer noget på deres
> > maskiner. Appletten skal bare tilslutte, og udveksle information.
>
> Det burde virke fint med normale applet-rettigheder.
> Proev at se om det ikke virker under Navigator. Jeg kan se at du bruger
> Internet Explorer, den har vist nogle problemer med RMI, mener jeg at
> have hoert.
>
> mvh. Morten N



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste