Эта проблема была протестирована и возникает в режиме разработки (Eclipse ...).
У меня есть один настроенный бэкэнд (в файле backends.xml):
<backends>
<backend name="example">
<class>B8</class>
<options>
<instances>1</instances>
<public>false</public>
<dynamic>true</dynamic>
</options>
</backend>
</backends>
КакВы видите, что он явно установлен как «динамический».
Это мой web.xml:
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>backend_test</servlet-name>
<servlet-class>BackendTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>backend_test</servlet-name>
<url-pattern>/_ah/start</url-pattern>
</servlet-mapping>
</web-app>
.. просто обычная точка входа сервлета в бэкэнд.
И вот код Java бэкэнда:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
public class BackendTest extends HttpServlet
{
@Override
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
System.out.println("Backend started!");
// ............
System.out.println("Backend terminating!");
}
}
Теперь, когда я нажимаю F11 и начинаю отлаживать приложение, это вывод в консоли:
INFO: The server is running at http://localhost:8888/
Backend started!
Backend terminating!
Если я понимаю эта строка документа правильно не должна запускаться, пока я не запросю /_ah/start
(http).В нем четко сказано:
Когда вы запускаете динамический бэкэнд, App Engine позволяет ему принимать трафик, но запрос / _ah / start не отправляется экземпляру, пока он не получит свой первый пользовательский запрос.
Еще один побочный эффект, связанный с этой проблемой, заключается в том, что серверная часть, кажется, никогда не «останавливается», я имею в виду, что она остается в «запущенном» состоянии (как я вижу в области администрирования на http://127.0.0.1:8888/_ah/admin/backends).
После того, как он был прерван (в приведенном выше коде, как это четко напечатано в консоли), не должен ли он быть отключен через несколько минут?(Я жду около 20 минут).
Что я делаю не так?
Кстати, моя конечная цель - запустить некоторый код в контексте "Backend", как запустить«Задача».Я хочу "Backend" из-за питания ЦП / ОЗУ и отсутствия ограничений по времени.
Пожалуйста, просветите меня.Спасибо!