Avatar billede bagnavnet Nybegynder
08. december 2004 - 17:44 Der er 23 kommentarer og
1 løsning

rmi op at køre

Hej,

jeg ved ikke om jeg pladserer dette spørgsmål det rigtige sted, men nu prøver jeg.

Jeg har en fungerende rmi kode, men kan ikke få den op at køre.

Jeg har koden liggende i eclipse, så den skulle være i java format.

Derefter går jeg ind i en dospromt og ind i mappen hvor jeg har koden liggende. Når jeg gør følgende:
----------------
ud fra KontoImpl.class laves RMI-stub-klassen (KontoImpl_Stub.class): < dette forstår jeg ikke!
rmic KontoImpl
-----------------
får jeg denne fejl:
rmic blev ikke genkendt som en intern eller ekstern kommando, et program eller batchfil.

Nogen der ved hvorfor?
Avatar billede arne_v Ekspert
08. december 2004 - 18:04 #1
rmic er et toll som kommer med din JDK

hvis ikke din JDK er i PATH skal du:

\j2sdk1.4.2_02\bin\rmic KontoImpl

(ret selv stien til din version og placering)
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:07 #2
ok
Nu siger den class kontoImpl not found....
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:10 #3
er den casesensitive?
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:20 #4
nu har jeg smidt alle filerne den i j2sdk1.4.2.
Herfra ser det ud til at køre. Når såvidt til at sige start java CardServer,
men når jeg siger start java CardClient kommer den med en hulans lang fejlmeddelelse i stil med: java.rmi.notboundexeption: card m.m.
Avatar billede arne_v Ekspert
08. december 2004 - 18:21 #5
Du skal nok sætte classpath
Avatar billede arne_v Ekspert
08. december 2004 - 18:22 #6
Hvad er den helt præcise fejl ?
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:26 #7
det er en meget lang sag og jeg kan ikke copy/paste fra dos-promt, men her er noget af den:
java.rmi.NotBoundException: card
at sun.rmi.registry.RagistryImlp.lookup<RegistryImpl.java:106>
at sun.rmi.registry.RegistryImlp_Skel.dispatch<UnknownSource>
at.....osv osv
Avatar billede arne_v Ekspert
08. december 2004 - 18:37 #8
Kan du ikke markere en sektion i DOS vinduet og copy med retur tasten ?
Avatar billede arne_v Ekspert
08. december 2004 - 18:38 #9
Det lyder som at serveren ikke kører.

Prøv og kør:
  - rmiregistry
  - server
  - client
i hvert sit vindue og check evt. fejl i alle vinduer
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:47 #10
jeg har denne linie under min CardServer:
Naming.rebind( CardImpl.serverURL, cardImpl);
Ser den rigtig ud?
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:48 #11
og jeg har denne under ICard:
public static final String serverURL = "rmi://LocalHost/card";
Så det er vel godtnok...
Avatar billede bagnavnet Nybegynder
08. december 2004 - 18:52 #12
jeg har lavet nogle bat filer under j2sdk1.4.2:
Den første hedder:
rmic CardImpl
Rmic CardClient
start rmiregistry

den næste:
start java CardServer

Her får jeg fejl. Jeg kan ikke copy/paste, så nu skriver jeg det ind, 2min.
Avatar billede bagnavnet Nybegynder
08. december 2004 - 19:08 #13
nå, det kan jeg ikke komme til, for når jeg skriver start java CardServer nu, kommer den op med en fejl, men vinduet lukkes lige så hurtigt igen....

Har du nogen idé til hvor fejlen kan ligge?
Avatar billede arne_v Ekspert
08. december 2004 - 19:10 #14
drop start

og kør den manuelt i et permanent vindue

så kan du nemlig se fejlen
Avatar billede bagnavnet Nybegynder
08. december 2004 - 19:23 #15
java.security.AccessControException: access denied <java.net.SocketPermission 127.0.0.1:1099 connect, resolve>
at java.security.AccessControlContext.checkPermission<AccessControlContext.java:269>
at java.security.AccessController.chedkPermission<AccessController.java:401>
at java.lang.SecurityManager.checkConnect>SecurityManager.java:524>
at java.lang.SecurityManager.checkConnect>SecurityManager.java:1026>
at java.net.Cocket.connect<Socket.java:446>
at java.net.Cocket.connect<Socket.java:402>
at java.net.Cocket.<init><Socket.java:309>
at java.net.Cocket.<init><Socket.java:124>
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createCocket<RMIDirectSocketFactory.java:22>
sun.rmi.transport.proxy.RMIDirectSocketFactory.createCocket<RMIDirectSocketFactory.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.createConnection<TCPChannel.java:171>
at sun.rmi.server.UnicastRef.newCall<UnicastRef.java:313>
at sun.rmi.registry.RegistryImpl_Stub.rebind<Unknown Source>
at java.rmi.Naming.rebind<Naming.java:160>
at CardSErver.main<CardSErver.java:11>

Puuuhhhha, det var fejlen. Har ikke lige tjekket igennem om jeg har skrevet helt rigtigt af, men alle linierne er det ihvertfald, håber det kan bruges.....
Avatar billede arne_v Ekspert
08. december 2004 - 19:26 #16
Ja.

Du skal enten:
  - undlade at sætte RMI security manager
eller
  - starte java med en security policy fil

Start med den første mulighed !

:-)
Avatar billede bagnavnet Nybegynder
08. december 2004 - 19:33 #17
jeg har nu slettet:
System.setSecurityManager( new RMISecurityManager());
Fra CardServer klassen, men får fortsat samme fejl....

Hvordan sikrer jeg mig at den er compilet? Og, hvordan får man lavet de der stub og - skel_klasser? Jeg har dem i denne kode, men hvordan er de i sin tid blevet lavet?
Avatar billede arne_v Ekspert
08. december 2004 - 20:03 #18
Du kan sammenligne dato for .java og .class fil
Avatar billede arne_v Ekspert
08. december 2004 - 20:03 #19
stub og skel laves af rmic
Avatar billede arne_v Ekspert
08. december 2004 - 20:04 #20
Avatar billede bagnavnet Nybegynder
08. december 2004 - 20:24 #21
det var ligegodt satans!

Jeg fik dit eksempelt til at virke! fra artikel 25....mystisk...eller måske ikke;-)
Tror lige jeg læser den anden igennem også...
Avatar billede bagnavnet Nybegynder
08. december 2004 - 20:44 #22
og hvad der er allermest fremragende er at du skriver:

"Hvad er RMI godt til og hvad er det ikke godt til
RMI er meget godt til client/server løsninger på LAN. Det er ikke
så velegnet til løsninger hvor netværket er internettet. Det giver
ofte problemer med firewalls og porte der skal åbnes. Man kan godt
få det til at virke, men til brug over internet er SOAP RPC over
HTTP (Web Services) bedre.

Som hovedregel gælder det at fordelene ved RMI er store, når man har
mange funktioner med mange argumenter som ikke fylder meget, mens
det ikke er velegnet til en funktion med et argument som kan være
meget stort (som f.eks. fil upload)."

Hvorfor det er begrundelse nok for mig til at jeg ikke skal bruge rmi da jeg skal køre programmet over internettet;-) Vil derfor kaste mig over et andet område...hvordan gør jeg det så bedst? Er det noget med applets? Skal have noget der er forholdsvis nemt at lave og som holder mig fra de sene fortvivlende nattetimer....

Kast et svar afsted...
Avatar billede arne_v Ekspert
08. december 2004 - 20:48 #23
svar
Avatar billede arne_v Ekspert
08. december 2004 - 20:49 #24
Web service var en oplagt teknologi at kigge på.

Du kan jo evt. starte her:
  http://www.eksperten.dk/artikler/159
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