Avatar billede md_craig Nybegynder
20. oktober 2004 - 23:09 Der er 11 kommentarer og
1 løsning

RMI - Jbuilder 2005, Problemer

Jeg har begivet mig ud i RMI til jave, mod egen vilje vil jeg sige, for ville hellere beskeftige mig med CORBA... men nu skal vi altså bruge RMI...

Mit lille projekt kører på Jbuilder 2005 EP...
Problemet er at jeg får en stak fejl kastet i hovedet når jeg vil Kører min "server"...

Får kasten følgende fejl i masken:

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)

    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)

    at java.security.AccessController.checkPermission(AccessController.java:401)

    at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)

    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1026)

    at java.net.Socket.connect(Socket.java:446)

    at java.net.Socket.connect(Socket.java:402)

    at java.net.Socket.<init>(Socket.java:309)

    at java.net.Socket.<init>(Socket.java:124)

    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)

    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)

    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:562)

    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:185)

    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:171)

    at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:313)

    at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)

    at java.rmi.Naming.bind(Naming.java:111)

    at rmi.RMI_Serv.main(RMI_Serv.java:41)


Jeg har lavet _stub for serveren, Så nu kunne jeg godt bruge en grundig gang hjælp...
Avatar billede arne_v Ekspert
20. oktober 2004 - 23:13 #1
Du mangler at åbne for diverse netadgang via security policy.
Avatar billede arne_v Ekspert
20. oktober 2004 - 23:15 #2
Jeg har skrevet noget om det her:
  http://www.eksperten.dk/artikler/225

Hvis du ikke har set lyset i RMI skal du muligvis starte her:
  http://www.eksperten.dk/artikler/25
Avatar billede md_craig Nybegynder
20. oktober 2004 - 23:26 #3
Ja det har jeg fundet ud af...

ER nok kommet over det Basale RMI tror jeg... og kommet til den der security policy... hvilket jeg har fundet lidt om... men har ikke helt styr på hvordan det skal oprettes osv...

Skal den bare hedde det der "socket.policy"
og skal den bare ligge i samme mappe som Class filerne ???

HAr fundet følgende på nettet:

4.5 Why won't my RMI implementation run under Java 2?
If you're running the client or server with Java 2, then you'll need to specify a security policy file, to prevent SecurityExceptions being thrown.  This policy file will allow your application to bind to a local port (if a service), and to connect to remote hosts (if a client).

The following changes should be made when running the client/server :

    java -Djava.security.policy=java.policy yourserver

You'll also need to create a policy file (if one does not already exist). Here's a sample policy file that will allow you to accept conections from ports higher than 1024, but connect to all ports as a client.

grant {
  permission java.net.SocketPermission "*:1024-65535",
          "connect,accept,resolve";
  permission java.net.SocketPermission "*:1-1023",
          "connect,resolve";
};

det siger mig desvære bare ikke meget jo...
Avatar billede arne_v Ekspert
20. oktober 2004 - 23:29 #4
Du skal have en policy fil.

Du må kalde den hvad du vil.

Du skal bare køre med:
  -Djava.security.policy=whatever.policy

(kig ned i server.bat og client.bat i artikel 225)
Avatar billede md_craig Nybegynder
20. oktober 2004 - 23:44 #5
hehe... :oP

Det bat filer skal så være dem jeg afvikler i en promt går jeg ud fra??

Hvor Build Bat er den jeg Compiler mine filer og Projektet med, er det sådan absolut nødvendigt at smide det ind i Jar filer, og ganske umuligt at bruge Class filerne eller hvordan... vil lige lege lidt med det...

Se om jeg kan klare det med Kofein Chock... :P
Avatar billede arne_v Ekspert
20. oktober 2004 - 23:46 #6
Ja. Omend der også er andre muligheder end bat filer og -D.

Du kan sagtens bruge class filer.

Men i længden bliver det lidt bøvlet at holde styr på alle de filer.
Avatar billede md_craig Nybegynder
21. oktober 2004 - 00:12 #7
Tja... men jeg tror RMI bliver et One time try... Med mindre vi bliver påduttet det flere gange... og ellers tror jeg at jeg vil tage Corba i betragtning da RMI jo er Java spicifik, mens Corba er en fælles standart...

I mit lille eksempel har jeg så kun 3 klasser

RMI_Serv.java
RMI_Serv_Interface.java
RMI_Client.java

Alle ligger i pakken rmi... så det må være begrænset hvad der er at holde styr på...
Efter Compiling har jeg jo så 4 da der skal laves en Stub på serveren og i det her tilfælde jeg har kun den som jeg har forstået...

Så har jeg altså:

RMI_Serv.class
RMI_Serv_Interface.class
RMI_Client.class
RMI_Serv_Stub.class

Så kan jeg vel bare afvikle mine Bat filer på dem???

Server bat skal så afvikle:
RMI_Serv.class
Samt mappe policy ikke ?

java -classpath RMI_Serv.class -Djava.security.policy=socket.policy localhost

og så skal den bare kører på localhost, så det skal i røven af det overstående?
det er hvad jeg får ud af det jeg smed tidligere + dit...

Men skal server.bat også afvikle Stuben?? Interfacet kommer vel af sig selv når RMI_Serv implementere den eller skal den også afvikles?

nest skal Clienten startes... det er vel det samme igen??
Avatar billede arne_v Ekspert
21. oktober 2004 - 18:29 #8
java -classpath RMI_Serv.class -Djava.security.policy=socket.policy localhost

skal vel være

java -classpath . -Djava.security.policy=socket.policy RMI_Serv localhost
Avatar billede arne_v Ekspert
21. oktober 2004 - 18:31 #9
CORBA er der ikke meget fremtid i.

Standard baseret kald i fremtiden bliver SOAP over HTTP (Web Services).

Ja - der er stadig en masse udestående med transaktioner etc..

Men der er et par små firmaer IBM, Microsoft, SUN etc. som skubber i den retning.
Avatar billede arne_v Ekspert
06. november 2004 - 18:13 #10
Kommet videre ?
Avatar billede md_craig Nybegynder
06. november 2004 - 18:26 #11
arne v >>>

Fik hjælp af en... og vi fik det op at køre... (eller han gjorde)...
Og har endnu ikke haft tid til at lokalisere hvad forskellen mellem det jeg havde og han havde var (Han fik faktisk mit og det virkede)...

Så her er jeg ikke kommet videre...

App.. Nej det er meget muligt der ikke er Meget Fremtid i CORBA, men fremtiden er Hvertfald ikke noget som er Sprog Spicifikt som nu RMI er... Og Ja SOAP, men det skal jo lige være helt "moden"... Det da naturligvis interassant...

Men lige nu er CORBA jo standarten på tværs af sprogene som jeg har forstået det...
Så det bliver det indtil videre...

Dog skal vi slet ikke bruge værken CORBA eller RMI i denne omgang... Til det Projekt vil har gang i bliver det Absolut for bøvlet og besværligt...

Så vi benytter os af Alm. SOCKET programmering, og det opfylder sådan set fint behovet for denne omgang...

Men derfor skulle vi alligevel lige aflevere en RMI opgave...
Avatar billede md_craig Nybegynder
22. december 2004 - 14:52 #12
done
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester