【问题标题】:Test Google App Engine Java Backend on localhost在 localhost 上测试 Google App Engine Java 后端
【发布时间】:2013-10-21 06:09:06
【问题描述】:

我正在尝试在我的本地主机上测试 Google App Engine Java 后端。我正在运行后端,并且编写了一个 servlet。

但是,当我在后端向 url 发帖时:

http://localhost:8888/MyServlet/

我得到的只有这个:

WARNING: No file found for: /MyServlet/

我如何真正调用后端来为我启动一个实例,以便我可以在本地对其进行测试并进行发布?

小服务程序:

    import java.io.BufferedReader;
    import java.io.IOException;
    import javax.servlet.http.*;

    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;

    @SuppressWarnings("serial")
    public class MyServlet extends HttpServlet {
        public void doPost(HttpServletRequest req, HttpServletResponse resp)
                throws IOException {

    resp.setContentType("text/plain");
    resp.getWriter().println("Hello, world");
}

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>MyBackend</servlet-name>
        <servlet-class>com.test.backend.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/_ah/start</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

【问题讨论】:

    标签: java google-app-engine servlets backend


    【解决方案1】:

    尝试同时使用 servlet 和 servlet-mapping 标签,如下所示:

    <servlet>
        <servlet-name>MyBackend</servlet-name>
        <servlet-class>com.test.backend.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyBackend</servlet-name>
        <url-pattern>/MyServlet</url-pattern>
    </servlet-mapping>
    

    虽然我觉得建议不要在类名中使用像 servlet 或 backend 这样的词;它们在开发人员的上下文之外毫无意义,并且不提供有关类功能的线索

    【讨论】:

    • 似乎没有帮助。但是,当我开始项目时,我才意识到我遇到了这个问题:PM com.google.appengine.tools.development.InstanceHelper sendStartRequest WARNING: Start request to /_ah/start on server 0.export failed (HTTP status code=405). Retrying...
    【解决方案2】:

    我也刚刚意识到你实现了doPost,它是用来处理表单提交的,它不会像那样处理浏览器中的裸url请求,将你的方法更改为doGet或service http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServlet.html

    【讨论】:

      【解决方案3】:

      我的问题是我没有启动我的后端。您首先必须编写一个 servlet 来侦听 /_ah/start 并在后端启动之前对其进行响应。

      Here 是我解决的另一个问题

      【讨论】:

        猜你喜欢
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        • 2013-06-09
        • 2015-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-03
        相关资源
        最近更新 更多