MINA
  1. MINA
  2. DIRMINA-659

AccessControlException when running MINA in a Applet: RuntimePermission "modifyThread"

    Details

    • Type: Task Task
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.0.0-M4
    • Fix Version/s: 2.0.0-RC1
    • Labels:
      None
    • Environment:
      Java 5 Applet (using appletviewer)

      Description

      I'm using MINA 2.0.0-M4 within a restricted environment (an Applet in my case, could also be JNLP).

      When running the code in appletviewer, I need to add a permission for the code to be executed successfully:
      permission java.lang.RuntimePermission "modifyThread";

      If I don't add this permission, the code fails with the following stack trace:

      Exception in thread "pool-2-thread-1" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
      at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
      at java.security.AccessController.checkPermission(AccessController.java:427)
      at java.util.concurrent.ThreadPoolExecutor.shutdown(ThreadPoolExecutor.java:893)
      at org.apache.mina.core.service.SimpleIoProcessorPool.dispose(SimpleIoProcessorPool.java:230)
      at org.apache.mina.core.polling.AbstractPollingIoConnector$Connector.run(AbstractPollingIoConnector.java:512)
      at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:65)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
      at java.lang.Thread.run(Thread.java:613)

      The exception occurs when I close the SocketConnector:

      public synchronized void close()
      {
      if (connector != null)

      { connector.dispose(); connector = null; }

      }

        Activity

        Hide
        Julien Vermillard added a comment -

        Apparently it's needed by :
        http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ExecutorService.html#shutdown()
        I'm no expert in applet and security what do you expect us to do ?

        Show
        Julien Vermillard added a comment - Apparently it's needed by : http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/ExecutorService.html#shutdown( ) I'm no expert in applet and security what do you expect us to do ?
        Hide
        Edouard De Oliveira added a comment -

        Isn't some documentation the real solution here ?
        Maybe a special section for restricted envs like applets in the wiki
        Jeff you can also sign your applet which will give your applet an unrestricted access to the system and thus eliminate the issue.

        Show
        Edouard De Oliveira added a comment - Isn't some documentation the real solution here ? Maybe a special section for restricted envs like applets in the wiki Jeff you can also sign your applet which will give your applet an unrestricted access to the system and thus eliminate the issue.
        Hide
        Jeff Mesnil added a comment -

        +1 for documenting it.
        As long as the developer can know in advance what permissions are required by MINA to work in a sandbox, it's fine.

        iirc, when I tested MINA in an applet, it was the only permission required. It's a pity I have to sign the applet to allow MINA to shutdown properly (but it was a prototype applet and it is likely that a real applet would have to be signed anyway).

        To sum up, +1 to document the permission(s) and close this issue

        Show
        Jeff Mesnil added a comment - +1 for documenting it. As long as the developer can know in advance what permissions are required by MINA to work in a sandbox, it's fine. iirc, when I tested MINA in an applet, it was the only permission required. It's a pity I have to sign the applet to allow MINA to shutdown properly (but it was a prototype applet and it is likely that a real applet would have to be signed anyway). To sum up, +1 to document the permission(s) and close this issue
        Hide
        Edouard De Oliveira added a comment -

        Added some doc on the wiki

        Show
        Edouard De Oliveira added a comment - Added some doc on the wiki

          People

          • Assignee:
            Edouard De Oliveira
            Reporter:
            Jeff Mesnil
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development