Ответ 1
Вы не можете использовать Threads в GAE. Вот список вещей, которые вы не можете сделать в GAE:
Если вы хотите сделать что-то асинхронно, загляните в TaskQueues.
Я использую Google App Engine для обработки сообщений IPN Paypal, когда мой сервлет запускается, я использую следующие строки для запуска другого процесса для обработки массажа:
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();
}
...
}
Но "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)
Почему, как его исправить?
Франк
Вы не можете использовать Threads в GAE. Вот список вещей, которые вы не можете сделать в GAE:
Если вы хотите сделать что-то асинхронно, загляните в TaskQueues.
вы должны использовать смолу 4.0.22 или ниже. относительно http://forum.caucho.com/showthread.php?t=28521