Probleme mit SecruityManager + RMI

Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
Wie kann man dem SecrutiyManager in der policy Datei sagen, dass er alles erlauben soll?

Code:


Code:
public class TankServer {

    public static void main(String[] args)
    {
    	System.setSecurityManager( new RMISecurityManager() ) ;
        try {
            Naming.bind("rmi://localhost/Tank",
                        new TankImpl() );
        } catch(Exception e) {
            // Registrieren des Remote-Objects fehlgeschlagen
        }       
    }
}



Code:
Exception in thread "main" java.lang.ExceptionInInitializerError
	at org.lwjgl.Sys.createImplementation(Sys.java:111)
	at org.lwjgl.Sys.<clinit>(Sys.java:100)
	at org.lwjgl.opengl.GLContext.<clinit>(GLContext.java:111)
	at org.lwjgl.opengl.GL11.glGetError(GL11.java:1283)
	at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:215)
	at org.newdawn.slick.opengl.InternalTextureLoader.getTexture(InternalTextureLoader.java:161)
	at org.newdawn.slick.Image.<init>(Image.java:152)
	at org.newdawn.slick.SpriteSheet.<init>(SpriteSheet.java:111)
	at org.newdawn.slick.SpriteSheet.<init>(SpriteSheet.java:97)
	at org.newdawn.slick.SpriteSheet.<init>(SpriteSheet.java:84)
	at server.TankImpl.init(TankImpl.java:56)
	at server.TankImpl.<init>(TankImpl.java:41)
	at server.TankServer.main(TankServer.java:15)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission org.lwjgl.util.Debug read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at java.lang.Boolean.getBoolean(Unknown Source)
	at org.lwjgl.LWJGLUtil$4.run(LWJGLUtil.java:451)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.LWJGLUtil.getPrivilegedBoolean(LWJGLUtil.java:449)
	at org.lwjgl.LWJGLUtil.<clinit>(LWJGLUtil.java:268)
	... 13 more
 
G

Gast2

Gast
okay hab vergessen die policy datei mit zugeben...
jetzt bekomm ich folgende Fehlermeldung auf meinem client

Code:
java.rmi.NotBoundException: Tank
	at sun.rmi.registry.RegistryImpl.lookup(Unknown Source)
	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.run0(Unknown Source)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
	at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
	at sun.rmi.server.UnicastRef.invoke(Unknown Source)
	at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
	at java.rmi.Naming.lookup(Unknown Source)
	at client.ClientTank.init(ClientTank.java:121)
	at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:345)
	at client.ClientTank.main(ClientTank.java:106)

hat diese Fehlermeldung was mit registry zu tun????
 

semi

Top Contributor
SirWayne hat gesagt.:
Wie kann man dem SecrutiyManager in der policy Datei sagen, dass er alles erlauben soll?
Code:
grant {
   permission java.security.AllPermission;
};
SirWayne hat gesagt.:
...hat diese Fehlermeldung was mit registry zu tun????
Sieht so aus ;)
Code:
public class TankServer {

    public static void main(String[] args)
    {
    	System.setSecurityManager( new RMISecurityManager() ) ;
        try {
            Naming.bind("Tank", new TankImpl() );
        } catch(Exception e) {
            // Registrieren des Remote-Objects fehlgeschlagen
        }       
    }
}

Hast du überhaupt die RMI-Registry im Hintergrund am Laufen?
 

semi

Top Contributor
SirWayne hat gesagt.:
Heisst das, es läuft jetzt wieder? Hast du die Zeile
Code:
Naming.bind("rmi://localhost/Tank", new TankImpl() );
durch das hier ersetzt?
Code:
Naming.bind("Tank", new TankImpl() );
Wenn es immer noch nicht läuft, dann zeig mal wie TankImpl und das dazugehörige Interface Tank aussieht. Die Klassen- bzw. Interface deklaration reicht.
 
G

Guest

Gast
nein es funktioniert leider nicht =(... des von oben hab ich auch alles schon versucht

Interface

Code:
public interface Tank extends Remote{

	 public HashMap<String, Player> update(GameContainer container, int delta,String playerKey) throws RemoteException ;

	 public boolean addPlayer(String playerName) throws RemoteException;
	 public SpriteSheet getSpriteSheet()throws RemoteException;
	 public TiledMap getTiledMap()throws RemoteException;
	 public HashMap<String, Player> getPlayers() throws RemoteException ;

}

Client
Code:
public class ClientTank extends BasicGame{

 public static void main(String[] args)
    {
            AppGameContainer container;
			try {
				container = new AppGameContainer(new ClientTank(), 800, 600, false);
				container.start();    
			} catch (SlickException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
           
  
    }

	@Override
	public void init(GameContainer container) throws SlickException {
		try {
			if (System.getSecurityManager() == null) {
				System.setSecurityManager(new RMISecurityManager());
				}
			
			Registry registry = LocateRegistry.getRegistry();
			myTank = (Tank)registry.lookup("Tank");
			
			//myTank = (Tank) Naming.lookup("rmi://localhost/Tank");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
}

Server
Code:
public class TankServer {

    public static void main(String[] args)
    {
    	System.setSecurityManager( new RMISecurityManager() ) ;
       
    	
    	try {
    		Registry registry = LocateRegistry.getRegistry();
    		
            registry.rebind("Tank", new TankImpl());
            //Naming.bind("rmi://localhost/Tank",new TankImpl());
        } catch(Exception e) {
            // Registrieren des Remote-Objects fehlgeschlagen
        }       
    }
}

Code:
public class TankImpl extends UnicastRemoteObject implements Tank
{

Methoden vom Interface
}
 

semi

Top Contributor
Rufst du in TankImpl den super-Konstruktor auf? Was ist jetzt die Fehlermeldung und wie startest du den Server und Client?
Was gibt das hier aus?
Code:
System.out.println(Arrays.toString(LocateRegistry.getRegistry().list()));
 

FArt

Top Contributor
Die Exception, die du beim bind bekommen kannst schluckst du einfach.
Annahme: es tritt eine Exception beim bind auf dem Server auf, deswegen kann der Client das Objekt in der Registry nicht sehen.
 
G

Gast2

Gast
Server start ich so...
Ausgabe beim System.out... ist []
Code:
package server;

import java.rmi.Naming;
import java.rmi.RMISecurityManager;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.util.Arrays;


public class TankServer {

	public TankServer()
	{
        System.setProperty("ignoreStubClasses", "true");    
        System.setProperty("java.rmi.server.codebase", "file:.\\bin\\");
    	System.setProperty("java.security.policy",
    	"=file:.\\java.policy");

    	System.setSecurityManager( new RMISecurityManager() ) ;
    	try {
    		System.out.println("Registry erzeugen");
    		Registry registry = LocateRegistry.createRegistry(1098);
    		System.out.println("Registry Liste:"+ Arrays.toString(LocateRegistry.getRegistry().list()));
            registry.rebind("Tank", new TankImpl());
            //Naming.bind("rmi://localhost/Tank",new TankImpl());
        } catch(Exception e) {
            // Registrieren des Remote-Objects fehlgeschlagen^
        	
        	e.printStackTrace();
        }       
    }	
		
	
	
    public static void main(String[] args)
    {
    	new TankServer();
    }

}

und beim cleint kommt beim look up diese exception
Code:
Exception in thread "main" java.security.AccessControlException: access denied (java.lang.RuntimePermission shutdownHooks)
	at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
	at java.security.AccessController.checkPermission(AccessController.java:546)
	at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
	at java.lang.Runtime.removeShutdownHook(Runtime.java:218)
	at org.lwjgl.opengl.Display$4.run(Display.java:807)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.lwjgl.opengl.Display.removeShutdownHook(Display.java:805)
	at org.lwjgl.opengl.Display.destroy(Display.java:946)
	at org.newdawn.slick.AppGameContainer.start(AppGameContainer.java:379)
	at client.ClientTank.main(ClientTank.java:113)


Code:
@Override
	public void init(GameContainer container) throws SlickException {
		try {
			if (System.getSecurityManager() == null) {
				System.setSecurityManager(new RMISecurityManager());
				}
			
			Registry registry = LocateRegistry.getRegistry();
//			System.out.println(Arrays.toString(LocateRegistry.getRegistry().list()));
			myTank = (Tank)registry.lookup("Tank");
			
			//myTank = (Tank) Naming.lookup("rmi://localhost/Tank");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (NotBoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}



was meinst du mit exception ignorieren????
 

semi

Top Contributor
Mach's doch ganz einfach und probiere zuerst ein einfaches Programm, bevor du an den Einstellungen rumschraubst.
Du startest den Server auf Port 1098, mit dem Client versuchst du aber auf Port 1099 (default) zuzugreifen. Deine
Policy-Datei wird auch nie gelesen, da die Pfadangabe falsch ist und dadurch wird die OpenGL Library zerschossen,
da sie anscheinend ein Shutdown-Hook installieren möchte.

Lass mal das hier laufen:
Service.java
Code:
package examples.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Service extends Remote
{
   String echo(final String s) throws RemoteException;
}
ServiceImpl.java
Code:
package examples.rmi;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;

class ServiceImpl extends UnicastRemoteObject implements Service
{
   private static final long serialVersionUID = 4805211162114231900L;

   public ServiceImpl() throws RemoteException
   {
      super();
   }

   public String echo(final String s) throws RemoteException
   {
      return s;
   }
}
Server.java
Code:
package examples.rmi;

import java.rmi.RMISecurityManager;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server
{
   public static void main(String[] args)
   {
      try
      {
         System.setSecurityManager(new RMISecurityManager());
         Registry reg = LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
         final Service service = new ServiceImpl();
         reg.rebind("Service", service);
      }
      catch(RemoteException e)
      {
         e.printStackTrace();
      }
   }
}
Client.java
Code:
package examples.rmi;

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

public class Client
{
   public static void main(String[] args)
   {
      try
      {
         System.setSecurityManager(new RMISecurityManager());
         Service service = (Service) Naming.lookup("rmi://localhost/Service");
         System.out.println(service.echo("Buhh!"));
      }
      catch(RemoteException e)
      {
         e.printStackTrace();
      }
      catch(NotBoundException e)
      {
         e.printStackTrace();
      }
      catch(MalformedURLException e)
      {
         e.printStackTrace();
      }
   }
}
server.policy
Code:
grant {
   permission java.security.AllPermission;
};
client.policy
Code:
grant {
   permission java.security.AllPermission;
};

und lass es wie folgt laufen
Code:
java -Djava.security.policy=server.policy examples.rmi.Server
Code:
java -Djava.security.policy=client.policy examples.rmi.Client
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Probleme bei Java-Installation auf Server (Linux/Shell/Terminal) Netzwerkprogrammierung 6
platofan23 Probleme mit Socket bei Android Studio? Netzwerkprogrammierung 22
J Probleme mit Multicast über IPv6, DatagramChannel Netzwerkprogrammierung 1
Niggo_ Probleme mit Java Mail Netzwerkprogrammierung 14
F Probleme mit Connection Reset bei Telnet Verbindung Netzwerkprogrammierung 1
K Probleme bei HTML-Mail-Abruf mit IMAP bei 1und1 Netzwerkprogrammierung 2
L Socket SSLServer Probleme Netzwerkprogrammierung 0
H Probleme mit UDP Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
R Probleme mit JMS Netzwerkprogrammierung 1
A Probleme beim Klassen-Import von sun.misc. ... Netzwerkprogrammierung 19
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
B Probleme beim ersten Netzwerkprogramm Netzwerkprogrammierung 3
M Probleme mit FTP Netzwerkprogrammierung 19
windl URLConnection unter 1.7 macht Probleme Netzwerkprogrammierung 14
Z Socket Probleme beim Senden und Empfangen Netzwerkprogrammierung 5
Z Probleme beim Senden von Nachrichten an den Server Netzwerkprogrammierung 9
Maxim6394 Probleme bei Messenger Netzwerkprogrammierung 16
I Socket UDP Hole Punching bereitet Probleme Netzwerkprogrammierung 14
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
R FTPS - Probleme mit FTPSClient Netzwerkprogrammierung 2
S Probleme mit XMLEncoder/XMLDecoder Netzwerkprogrammierung 2
D Server - Client Probleme Netzwerkprogrammierung 9
Weiti HTTP Zertifikat-Probleme - InstallCert.java Netzwerkprogrammierung 2
M Socket Probleme mit einfacher Socketverbindung Netzwerkprogrammierung 3
H Probleme mit GUI (RMI) Netzwerkprogrammierung 6
T RMI Probleme mit RMI-Server Netzwerkprogrammierung 4
J Probleme bei RSA mit byte[] bei Versand über RMI Netzwerkprogrammierung 2
T FTP Probleme mit Passiv und Binary Mode Netzwerkprogrammierung 3
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
S Socket SocketServer und Client machen Probleme Netzwerkprogrammierung 6
B Server / Client Anwendung, Client GUI Probleme Netzwerkprogrammierung 11
F RMI probleme Netzwerkprogrammierung 3
D Probleme bei mehreren Clients uns Senden von Messages Netzwerkprogrammierung 16
E jPcap Probleme Netzwerkprogrammierung 3
B HTTP Probleme mit HttpClient? Netzwerkprogrammierung 2
T Probleme mit Jpcap Netzwerkprogrammierung 18
P Probleme mit OutputStream Netzwerkprogrammierung 7
P Probleme beim weiter senden von Datein Netzwerkprogrammierung 10
B Probleme mit FTP verbindung Netzwerkprogrammierung 22
L Probleme bei Chatserver Netzwerkprogrammierung 6
A Probleme mit kleinem Netzwerk Programm Netzwerkprogrammierung 30
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
derMartin Probleme mit NNTP Client Netzwerkprogrammierung 2
A Probleme mit Citrix Netzwerkprogrammierung 17
A Probleme mit kleinem Messenger-Programm Netzwerkprogrammierung 4
K RXTXcomm : Install - Probleme Netzwerkprogrammierung 7
R Probleme mit UDP Netzwerkprogrammierung 4
P Probleme bei Chat programm Netzwerkprogrammierung 2
I Probleme mit 'JSSE Samples' von Sun Netzwerkprogrammierung 5
T RMI - Probleme beim Starten des Clients Netzwerkprogrammierung 4
E InetAddress Klasse-Probleme Netzwerkprogrammierung 4
M dateien übertragen, probleme mit versch. Strömen? Netzwerkprogrammierung 4
R Rechte Probleme bei Applets Netzwerkprogrammierung 16
D EA-Exception Network Adapter macht probleme Netzwerkprogrammierung 2
G Probleme mit Firewall beim empfangen von dateien über socket Netzwerkprogrammierung 6
P Probleme mit Input- / Output-Streams Netzwerkprogrammierung 2
V probleme mit dem chat programm Netzwerkprogrammierung 4
F WLAN Probleme (CLIENT-SERVER) Netzwerkprogrammierung 4
J Probleme mit ObjectOutputStream! Netzwerkprogrammierung 15
S Probleme beim Beschränken der Geschwindigkeit Netzwerkprogrammierung 6
M Probleme beim Abfangen von Streams Netzwerkprogrammierung 5
G Fragen/Probleme mit JavaMail Netzwerkprogrammierung 2
N Java-Chat (lauffähig) macht Probleme auf der Konsole Netzwerkprogrammierung 6
P Probleme mit einem Array aus Sockets Netzwerkprogrammierung 2
C Probleme bei Dateiupload mit socket Netzwerkprogrammierung 4
T FTP Chatprogramm probleme Netzwerkprogrammierung 2
C RMI Probleme mit iptables Netzwerkprogrammierung 2
D socket exception + timing probleme Netzwerkprogrammierung 2
G Probleme bei Proxy-Server! Netzwerkprogrammierung 5
S Probleme mit HttpURLConnection Netzwerkprogrammierung 10
D Habe 2 Probleme: Input eingabe und Multi Socket Server Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben