Avatar billede md_craig Nybegynder
21. oktober 2004 - 00:35 Der er 33 kommentarer og
1 løsning

Tilføje en policy fil til afvikling i Jbuilder?

HVis jeg skal afvikle noget RMI, har jeg fundet frem til at jeg skal bruge en security policy...

Men hvordan beder jeg JBuilder om at nuppe den med når jeg vil afvikle min klasse?

Så jeg ikke får en AccessControllException ?
Avatar billede simonvalter Praktikant
21. oktober 2004 - 00:40 #1
run/configurations/new
kom din -Dbla.bla.. i VM parameters feltet
Avatar billede simonvalter Praktikant
21. oktober 2004 - 00:41 #2
og så kører du bare programmet med den konfiguration
Avatar billede simonvalter Praktikant
21. oktober 2004 - 00:44 #3
fandt en gammel config
-Djava.rmi.server.codebase=file:C:\Project\classes\ -Djava.security.policy=C:\Project\policy.all
Avatar billede md_craig Nybegynder
21. oktober 2004 - 01:15 #4
Hmmm... fik jeg så en NoClassDefFound ved... hvor den leder efter klassen and???

Det skyldes jo nok at min sti har mellemrum i... hvad skal jeg smække ind for mellemrum ??? eller bliver jeg nød til at flytte min kode?
Avatar billede simonvalter Praktikant
21. oktober 2004 - 02:33 #5
jeg har også haft problemer en del gange med mellemrum så det undgår jeg helt nu.
Avatar billede md_craig Nybegynder
21. oktober 2004 - 09:25 #6
Ja okay... gør jeg også nu...
Nu kan den så ikke finde min Stub fil, hvilket ikke er så fedt...
Avatar billede md_craig Nybegynder
21. oktober 2004 - 09:34 #7
Og så får vi Connetion Exception... RMI er en herlig skod ting...
Avatar billede simonvalter Praktikant
21. oktober 2004 - 16:10 #8
husket at starte rmiregistry?
Avatar billede md_craig Nybegynder
21. oktober 2004 - 16:18 #9
Kan godt være den sidste fejl er opstået i en situation hvor jeg ikke har den kørende, men den med at den ikke kan finde min STUB fil er med rmireg kørende...
Avatar billede simonvalter Praktikant
21. oktober 2004 - 16:24 #10
-Djava.rmi.server.codebase=file:C:\Project\classes\
skal sættes til starten på din classpath hvis jeg husker rigtigt
så hvis din stub er i pakken
dk.bla.pakke
så er dine mapper måske \classes\dk\bla\pakke
og så skal codebase være \classes\

hvis det ikke er det og dit rmi registry kører så skal jeg ikke kunne sige hvad problemet er
Avatar billede md_craig Nybegynder
21. oktober 2004 - 16:35 #11
Okay... for Stien til mit Classpath er nemlig korekt, det ligger inde i en rmi pakke, så stien i mit tilfælde er:

JavaFiler: C:\JavaPro\RMI\Src\rmi\
ClassFiler: C:\JavaPro\RMI\classes\rmi\

Og jeg har så prøvet med begge stier, min Stub opstår jo også kun som en Class fil udspundet af min server klasse, og eksistere altså ikke som en Java fil, men har så også prøvet at Kopiere Class filen til min Src bibliotek...

Men lige meget hjælper det... men får også en god lang fejl... kan lige post det hele fra min bærbar om lidt, men som jeg kan se det bunder det måske alt sammen i nettop en ClassNotFoundException
Avatar billede simonvalter Praktikant
21. oktober 2004 - 16:37 #12
den skal være
-Djava.rmi.server.codebase=file:C:\JavaPro\RMI\classes\
Avatar billede md_craig Nybegynder
21. oktober 2004 - 16:38 #13
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: rmi.RMI_Serv_Stub
    at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:247)
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:223)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:350)
    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)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: rmi.RMI_Serv_Stub
    at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.oldDispatch(Unknown Source)
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
    at sun.rmi.transport.Transport$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: rmi.RMI_Serv_Stub
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
    at sun.rmi.server.LoaderHandler.loadClass(Unknown Source)
    at java.rmi.server.RMIClassLoader$2.loadClass(Unknown Source)
    at java.rmi.server.RMIClassLoader.loadClass(Unknown Source)
    at sun.rmi.server.MarshalInputStream.resolveClass(Unknown Source)
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
    at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    ... 9 more
Avatar billede md_craig Nybegynder
21. oktober 2004 - 16:39 #14
Du kan nok se jeg får en god smører....
Avatar billede simonvalter Praktikant
21. oktober 2004 - 16:44 #15
ved ikke hvad der ellers kunne være galt .. jeg kan teste hvis du sender mig hele programmet med projekt fil osv ellers må jeg melde pas.
Avatar billede md_craig Nybegynder
21. oktober 2004 - 16:56 #16
Hvor kan jeg sende det til ? Mail?
Avatar billede simonvalter Praktikant
21. oktober 2004 - 17:04 #17
mail@gbit.dk
Avatar billede md_craig Nybegynder
21. oktober 2004 - 19:13 #18
Så skulle det være smidt afsted...
Takker for at du vil give dig tid til at kigge på det...

Håber du får det til at du... :oD
Avatar billede arne_v Ekspert
21. oktober 2004 - 19:17 #19
Den klassiske er at stub mangler i classpath for registry.
Avatar billede md_craig Nybegynder
21. oktober 2004 - 19:43 #20
Øhhh?
Avatar billede arne_v Ekspert
21. oktober 2004 - 19:51 #21
stub skal være i classpath for rmiregistry
Avatar billede arne_v Ekspert
21. oktober 2004 - 19:51 #22
CLASSPATH=C:\dir
rmiregistry

eller

rmiregistry -J-classpath -JC:\dir
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:03 #23
det der: rmiregestry -J-classpath -JC:\dir til min stub

skal jeg bare skrive det når jeg afvikler rmiReg så? altså fx:

start rmiregestry -J-classpath -JC:\dir til min stub
Avatar billede arne_v Ekspert
21. oktober 2004 - 20:05 #24
Jep
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:07 #25
Tja... Hmmm... får dog stadig samme fejl... :/
Avatar billede simonvalter Praktikant
21. oktober 2004 - 20:14 #26
http://powerone.homeunix.net/RMI.zip

det virker fint her.

Djava.rmi.server.codebase=file:C:\Programmering\RMI\classes\ -Djava.security.policy=C:\Programmering\RMI\policy.all

skal bare ændres til der hvor du har placeret det
Avatar billede simonvalter Praktikant
21. oktober 2004 - 20:18 #27
nå ja har du sat jbuilder til at generere stubben ?

marker RMI_Serv.java vælg properties
vælg generate RMI stub/skeleton og indsæt
-v1.2 i options
Avatar billede simonvalter Praktikant
21. oktober 2004 - 20:24 #28
-Djava.rmi.server.codebase=file:($TargetDir) -Djava.security.policy=($ProjectDir)\policy.all
skulle virke lige meget hvor du har det placeret
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:30 #29
Ja det har jeg gjort, Forskellen på mit og dit er vist at jeg under run Properties ikke har haft angivet min serv som main klasse, men har valgt klassen direkte og kørt den så det skulle vel ikke give det store udslag...

Og så lå min policy fil ikke samme sted som din, men inde hos klasserne, men hvis jeg bare "linker" rigtigt til den skulle det vel ikke betyde noget???

En anden ting er at min Client bare afslutter i Jbuilder, den skulle jo gerne fungere som et Konsol interface... ved ikke om du har kunne få lov til at indtaste værdier??

Men serveren kører underligt nok nu... :o?
Avatar billede simonvalter Praktikant
21. oktober 2004 - 20:35 #30
så virker det vel .. hvorfor koden afslutter er nok et andet problem og har desværre ikke tid lige nu til at kigge på det.
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:48 #31
Det er også fair nok... Det er jo bare rart du vil hjælpe... så det er jeg da taknemlig for... Der bliver også lige fyret op på pointsne...

Poster lige koden for min Client, så kan et være Arne_v kan give lidt indput også...
_____________________________________________________________________________________

package rmi;

import java.rmi.*;
import java.io.*;
import java.io.BufferedReader;

public class RMI_Client
{
  public static void main( String args[] ) throws Exception
  {
    // Host Args
    if (args.length != 1)
    {
      System.out.println("Syntax - Gues it Jackass!!");
      System.exit(1);
    }

    // Assining black hole secure
    if (System.getSecurityManager() == null)
    {
      System.setSecurityManager( new RMISecurityManager() );
    }

    // Call some shitty interface
    RMI_Serv_Interface service = (RMI_Serv_Interface) Naming.lookup("rmi://" + args[0] + "/RMI_Serv");

    BufferedReader din = new BufferedReader( new InputStreamReader(System.in) );
    //DataInputStream din = new DataInputStream(System.in);

    while(true)
    {
    System.out.println("1 - Turn on LED");
    System.out.println("2 - Turn of LED");
    System.out.println("3 - Get led Status");
    System.out.println("4 - Shut the shit down");

    //String line = din.readLine();
    String line = din.readLine();
    Integer pick = new Integer(line);

    int val = pick.intValue();

    switch (val)
    {
      case 1:
        if (service.getLedStatus() == true)
        {
          System.out.println("Man you are stupid, the LED is already on.");
        } else
        {
          service.setLedStatus(true);
          System.out.println("You have turned on the LED, do you realle think thats a good idea?");
        }
        break;

      case 2:
        if (service.getLedStatus() == false)
        {
          System.out.println("Man you are stupid, the LED is already off.");
        } else
        {
          service.setLedStatus(true);
          System.out.println("You have turned off the LED, now we can save some power, Jubii!!!");
        }
        break;

      case 3:
        System.out.println("Are you completely blind? can't u se for your self?");
        System.out.println("Ohh well the led Status is: " + service.getLedStatus());
        break;

      case 4:
        System.exit(0);
        break;

      default:
        System.out.println("Are you retarded or somthing, thats not even a choice!");
        break;
    }
    }
  }
}
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:53 #32
Arhhh... Ikke noget problem, Serveren skam med i røven... nu har jeg bare hardcoded den... så
Avatar billede md_craig Nybegynder
21. oktober 2004 - 20:58 #33
Så virker lortet... Så takker jeg Mange gange... selv om jeg ikke helt kan se hvad der er anderledes ra mit til det her... men må kigge i krogene og prøve med mit eget til det virker... det hjælper jo ikke meget hvis jeg altid skal have hjælp ude ra til det afsluttende...

Men takker hvertfald meget for hjælpen...
Avatar billede md_craig Nybegynder
22. december 2004 - 14:54 #34
out
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