Hi Brian

I've had the exact same problem when running applets that accesses ejb's, but only 
when these applets were deployed to my webserver (that is not inside my IDE JB4). My 
webserver is Jrun 
As far as I can see, this exception is fully acceptable because the applet is running 
"out of it's sandbox". Applets are, as you probably know, restricted from access to 
the client's file system. I haven't tried it out but I guess if you deployed your 
applet to the embedded tomcat web server everything would work fine, because then it 
would use the JBoss/Tomcat security manager, instead of the default. 
I found out (by removing the JBoss-client package from my jar) that my 1.3 plugin 
complained about "cannot find class: org.jnp.interfaces.NamingContextFactory" which 
lead me to the clue that JBoss does access the file system when doing a JNDI-lookup. 
Hmmm, with JNDI meaning Java Naming and Directory Interface, this store must reside on 
the file system, and the fact that it is the applet that's looking up the JNDI, then 
the applet is trying to access the file system, and therefore get caught by the 
security manager. 
<<java.lang.SecurityManager.checkPermission(SecurityManager.java:545)>>
sounds reasonable ?

A work around is to sign your applet using keytool/jarsigner see sun�s homepage for 
details. It worked for me.

Cheers 
Kris Kristensen
[EMAIL PROTECTED]

-----Oprindelig meddelelse-----
Fra: Brian Calves <[EMAIL PROTECTED]>
Til: [EMAIL PROTECTED] <[EMAIL PROTECTED]>
Dato: 5. januar 2001 21:14
Emne: [jBoss-User] Applet + JNDI Lookup => AccessControlException ?


>
>Hi,
>
>I'm out of ideas, hopefully someone here can give me a clue...
>
>Until now, my EJB clients have been java applications and other EJBs. This
>worked great! Now I'm writing an applet as an EJB client. Unfortunately,
>when the applet attempts a JNDI lookup, I get an AccessControlException.
>It seems something is trying to access a config file in the file system?
>
>I think I read that jBoss has primarily been tested with applets that have
>been granted extra security privileges. Even if I eventually go that route,
>I still want to understand why/where file system access results from the
>JNDI lookup.
>
>How is my code interacting with the system to produce this exception?
>Looking at the stack trace, it's not obvious to me where the access
>violation is really coming from. I tried looking through the source,
>but I couldn't identify the point of the file system access.
>
>Help? Thanks!
>Brian
>
>
>java.security.AccessControlException: access denied (java.io.FilePermission
>/usr/local/jboss_tomcat/jboss-2.0-FINAL/conf/default/- read)
>        at
>java.security.AccessControlContext.checkPermission(AccessControlContext.java
>:272)
>        at
>java.security.AccessController.checkPermission(AccessController.java:399)
>        at
>java.lang.SecurityManager.checkPermission(SecurityManager.java:545)
>        at
>sun.rmi.server.LoaderHandler$Loader.checkPermissions(LoaderHandler.java:759)
>        at
>sun.rmi.server.LoaderHandler$Loader.access$000(LoaderHandler.java:713)
>        at
>sun.rmi.server.LoaderHandler.getClassLoader(LoaderHandler.java:265)
>        at
>sun.rmi.server.MarshalInputStream.resolveProxyClass(MarshalInputStream.java:
>172)
>        at
>java.io.ObjectInputStream.inputProxyClassDescriptor(ObjectInputStream.java:9
>82)
>        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
>        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
>        at
>java.io.ObjectInputStream.inputObject(ObjectInputStream.java:1186)
>        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:386)
>        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:236)
>        at java.rmi.MarshalledObject.get(MarshalledObject.java:138)
>        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:304)
>        at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:282)
>        at javax.naming.InitialContext.lookup(InitialContext.java:350)
>        at Foo.initEJB(Foo.java:45)
>        at Foo.init(Foo.java:71)
>        at sun.applet.AppletPanel.run(AppletPanel.java:344)
>        at java.lang.Thread.run(Thread.java:484)
>
>
>private void initEJB()
>    //          throws CreateException, NamingException, RemoteException
>    {
>    try
>        {
>        // Hmmm... isn't there a simpler way to accomplish this?
>        Hashtable env = new Hashtable();
>        env.put(NAMING_FACTORY_INITIAL,
>getParameter(NAMING_FACTORY_INITIAL));
>        env.put(NAMING_PROVIDER_URL,
>getParameter(NAMING_PROVIDER_URL));
>        env.put(NAMING_FACTORY_URL_PACKAGE,
>getParameter(NAMING_FACTORY_URL_PACKAGE));
>        env.put(JNP_PORT,                   getParameter(JNP_PORT));
>        env.put(JNP_LOG,                    getParameter(JNP_LOG));
>        InitialContext jndiContext = new InitialContext(env);
>
>        Object ref = jndiContext.lookup("app/StandardEditor"); // <-- *BOOM*
>        StandardEditorHome home = (StandardEditorHome)
>PortableRemoteObject.narrow(ref, StandardEditorHome.class);
>
>        this.app = home.create();
>        }
>    catch(Exception e)
>        {
>        e.printStackTrace(System.err);
>        }
>    }
>
>
>
>
>--
>--------------------------------------------------------------
>To subscribe:        [EMAIL PROTECTED]
>To unsubscribe:      [EMAIL PROTECTED]
>List Help?:          [EMAIL PROTECTED]
>



--
--------------------------------------------------------------
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
List Help?:          [EMAIL PROTECTED]

Reply via email to