gpt4 book ai didi

java - 应用程序引擎动态后端在开发模式下无法按预期运行

转载 作者:行者123 更新时间:2023-12-02 08:13:09 25 4
gpt4 key购买 nike

此问题已在开发模式(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>

.. 只是后端的常规 servlet 入口点。

这是后端的 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!

如果我明白的话this doc line正确的是,它不应该启动,直到我请求 /_ah/start (http)。它清楚地表明:

When you start a dynamic backend, App Engine allows it to accept traffic, but the /_ah/start request is not sent to an instance until it receives its first user request.

与此问题相关的另一个副作用是后端似乎永远不会“停止”,我的意思是它仍然处于“运行”状态(正如我在 http://127.0.0.1:8888/_ah/admin/backends 的管理区域中看到的那样)。< br/>终止后(在上面的代码中,因为它在控制台中清楚地打印出来),不应该在几分钟后关闭吗? (我等了大约20分钟)。

我做错了什么?

顺便说一句,我的最终目标是在“后端”上下文中运行一些代码,就像运行“任务”一样。由于 CPU/RAM 功率和无时间限制,我想要一个“后端”。

请赐教。谢谢!

最佳答案

SDK 并不总是准确反射(reflect)生产环境。启动和关闭后端可能是这种情况之一。

如果您发现后端在生产中的行为符合预期,请file a bug用于 SDK。

关于java - 应用程序引擎动态后端在开发模式下无法按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com