File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Distributed Java and the fly likes RMI access denied client/server Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Distributed Java
Bookmark "RMI access denied client/server " Watch "RMI access denied client/server " New topic
Author

RMI access denied client/server

Diego Bowen
Ranch Hand

Joined: Aug 19, 2003
Posts: 50
Hello All, I'm a RMI newbie and I have a the following files on one linux box:
Hello.class HelloImpl.class HelloImpl_Skel.class
Hello.java HelloImpl.java HelloImpl_Stub.class
On machine A (Server) ..../public_html/myRMI
================================================
import java.rmi.*;
public interface Hello extends java.rmi.Remote {
String sayHello() throws RemoteException;
}
================================================
import java.rmi.*;
import java.rmi.server.UnicastRemoteObject;
public class HelloImpl
extends UnicastRemoteObject
implements Hello
{
private String name;
public HelloImpl(String s) throws RemoteException {
super();
name = s;
}
public String sayHello() throws RemoteException {
return "Hello World!";
}
public static void main(String args[])
{
// Create and install a security manager
System.setSecurityManager(new RMISecurityManager());
try {
HelloImpl obj = new HelloImpl("HelloServer");
Naming.rebind("//XXX.X.X.XX/~USERID/myRMI/HelloServer", obj);/ln25
System.out.println("HelloServer bound in registry");
} catch (Exception e) {
System.out.println("HelloImpl err: " + e.getMessage());
e.printStackTrace();
}
}
}
========================================================
And machine B (Client) the following files:
Hello.java Hello.class HelloImpl.class HelloMain.java HelloMain.class
java.policy
=================================================
import java.awt.*;
import java.rmi.*;
public class HelloMain {
String message = "";
public static void main(String[] args ) {
// Create and install a security manager
if(System.getSecurityManager()==null)
System.setSecurityManager(new RMISecurityManager());
try {
Hello obj = (Hello)Naming.lookup("//xxx.x.x.xx/~/userId/myRMI/HelloServer"); //this is line 11
System.out.println( obj.sayHello());
} catch (Exception e) {
System.out.println("HelloApplet exception:"+ e.getMessage());
e.printStackTrace();
}
}
}
====================================================
java.policy file:
grant {
permission java.net.SocketPermission "*:1024-65535","connect,accept";
permission java.net.SocketPermission "*:80" , "connect" ;
};
=====================================================
Server output:
COMMAND LINE INPUT ENTERED=>java -Djava.security.policy=java.policy HelloImpl &
OUTPUT:
[1] 3500
DBowen@linux:~/public_html/myRMI> HelloImpl err: access denied (java.net.SocketPermission (theServerIP):1099 connect,resolve)
java.security.AccessControlException: access denied (java.net.SocketPermission (theServerIP):1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:270)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1044)
at java.net.Socket.connect(Socket.java:420)
at java.net.Socket.connect(Socket.java:376)
at java.net.Socket.<init>(Socket.java:291)
at java.net.Socket.<init>(Socket.java:119)
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.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at HelloImpl.main(HelloImpl.java:25)
Client output:
COMMAND LINE INPUT=>
java -Djava.rmi.server.codebase=(theServerIP)/~DBowen/myRMI -Djava.security.policy=java.policy HelloMain
java.rmi.NotBoundException: ~/DBowen/myRMI/HelloServer

The two machines are both running linux on the same network....
I appreciate any help that can be given. Thanks
......
at java.rmi.Naming.lookup(Naming.java 84)
at HelloMain.man(HelloMain.java:11)
Diego Bowen
Ranch Hand

Joined: Aug 19, 2003
Posts: 50
I have one other question/concern regarding the above post:
As per the instructions in the tutorial that i'm using, I included the Stub file (HelloImpl_Stub.class) on the clientside...Isnt the whole point to load that file from the server side in the first place??? If so how can this be done??
Thank you in advance.
Vinod John
Ranch Hand

Joined: Jun 23, 2003
Posts: 162
Check out this thread you mayfind it useful
http://www.experts-exchange.com/Programming/Programming_Languages/Java/Q_20514026.html
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: RMI access denied client/server