Google App Engine modifyThreadGroup问题

Fra*_*ank 11 google-app-engine

我正在使用Google App Engine处理Paypal IPN消息,当我的servlet启动时,我使用以下行开始另一个流程来处理按摩:

public class PayPal_Monitor_Servlet extends HttpServlet
{
  PayPal_Message_To_License_File_Worker PayPal_message_to_license_file_worker;

  public void init(ServletConfig config) throws ServletException               // Initializes the servlet.
  {
    super.init(config);
    PayPal_message_to_license_file_worker=new PayPal_Message_To_License_File_Worker();
   }

  public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException
  {
  }

...
}

public class PayPal_Message_To_License_File_Worker implements Runnable
{
  static Thread PayPal_Message_To_License_File_Thread;
...

  PayPal_Message_To_License_File_Worker()
  {
    start();
  }

  void start()
  {
    if (PayPal_Message_To_License_File_Thread==null)
    {
      PayPal_Message_To_License_File_Thread=new Thread(this);
      PayPal_Message_To_License_File_Thread.setPriority(Thread.MIN_PRIORITY);
      PayPal_Message_To_License_File_Thread.start();
    }
...
  }
Run Code Online (Sandbox Code Playgroud)

但是"PayPal_Message_To_License_File_Thread = new Thread(this);" 导致以下错误:

javax.servlet.ServletContext log: unavailable
java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThreadGroup)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:355)
    at java.security.AccessController.checkPermission(AccessController.java:567)
Run Code Online (Sandbox Code Playgroud)

为什么,如何解决?

坦率

Rom*_*eau 14

你不能在GAE中使用Threads.以下列出了GAE无法做到事情:

如果您想异步执行某些操作,请查看TaskQueues.

  • 2012年底更新:您可以在App Engine上使用线程,但有一些限制:https://developers.google.com/appengine/docs/java/runtime#The_Sandbox (3认同)