当前位置: 首页 > 知识库问答 >
问题:

泽西岛Google app engine-找不到资源

翁心思
2023-03-14

我正在Google应用引擎中部署一个使用Jersey的示例应用程序。然而,当我尝试对REST资源执行GET或POST时,我得到一个-404 NOT FOUND错误。看来我漏掉了什么。

REST资源代码:

    import javax.ws.rs.Consumes;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;

    import org.codehaus.jettison.json.JSONObject;

    @Path("/stream")
    public class StreamingResource {
        private static final Logger log = Logger
        .getLogger(FacebookStreamingResource.class.getName());

        @POST
        @Path("/callback")
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.TEXT_PLAIN)
        public String putStreamData(JSONObject jsonEntity) {
            return jsonEntity.toString();
        }

        @GET
        @Path("/get")
        @Produces(MediaType.TEXT_PLAIN)
        public String getStreamData() {
            return "Get successful";
        }
    }
    <?xml version="1.0" encoding="utf-8" standalone="no"?>
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee               http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
        <servlet>
            <servlet-name>SystemServiceServlet</servlet-name>
            <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class>
            <init-param>
                <param-name>services</param-name>
                <param-value />
            </init-param>
        </servlet>
        <servlet-mapping>
            <servlet-name>SystemServiceServlet</servlet-name>
            <url-pattern>/_ah/spi/*</url-pattern>
        </servlet-mapping>

        <servlet>
            <servlet-name>JerseyWebApplication</servlet-name>
            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
            <init-param>
                <param-name>com.sun.jersey.config.property.packages</param-name>
                <param-value>com.vbv.fb</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>JerseyWebApplication</servlet-name>
            <url-pattern>/stream/*</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>30</session-timeout>
        </session-config>
    </web-app>

我包括了以下几个罐子:

Jar Jersey-Client-1.12.Jar Jersey-Core-1.12.Jar Jersey-JSON-1.12.Jar Jersey-Server-1.12.Jar Jersey-Servlet-1.12.Jar Jettison-1.1.Jar Jackson-Core-ASL-1.7.1.Jar Jackson-JAXRS-1.7.1.Jar Jackson-Mapper-ASL-1.7.1.Jar Jackson-XC-1.7.1.Jar

App Engine SDK版本为1.7.0

如有任何建议,将不胜感激:)

共有1个答案

薛元忠
2023-03-14

当我将web.xml中的web.xml从/stream/*更改为/*时,它起作用了:)

 类似资料:
  • 问题内容: 我是Web服务的新手,因此我从基本示例开始。这与文件上传有关。我正在为非Maven开发人员使用最新(2.17)版本的Jersey捆绑包。它指出: 捆绑包包含JAX-RS 2.0 API jar,所有核心Jersey模块jar以及所有必需的3rd-party依赖关系 。问题是我无法编译此部分: 尽管文档说确实存在,但似乎在Jersey 2.17软件包中并不存在。2.17捆绑包是否不完整?

  • 我目前使用的是球衣 我现在要做的是设置泽西,这样当查询参数进来时(比如缩进),我可以告诉Jackson以“更漂亮的格式,也就是缩进”序列化JSON。您可以通过使用SerializationConfig.Feature.INDENT_OUTPUT配置JSON映射器来轻松地告诉Jackson这样做。 问题是,我如何在每个请求的基础上获取一个queryparam并使用它来修改Jackson的输出?

  • 问题内容: 分析了整个互联网,但无法弄清楚为什么会发生这种情况。我有一个最简单的项目(使用jersey-quickstart- grizzly2原型),并且只有一个Jersey资源。我将Guice用作DI,因为CDI也不想与Jersey合作。问题在于,Guice在注入Jersey的资源时无法解析要使用的类。它在外面很好用,但不适用于泽西岛。这是泽西岛的资源: 传输接口: 它的实现: 遵循Googl

  • 我决定在这部分替换Web.XML: 我指向servlet容器Jersey,它将接受对REST-Controllers的请求,表明在启动时有必要扫描路径com . skillsimprover . REST examples . REST上的包REST,并表明资源的所有方法和类的基URI都填充了/api/* 从 JAX-RS 2.x 版本开始,可以使用应用程序类或资源配置类来注册包和资源。 我执行了

  • 问题内容: 将Jersey从1.15版本升级到1.17后,它开始记录以下消息: 产生此类消息的服务示例: 我的第一印象是将其视为错误消息,完全基于消息的措辞方式(“找不到”)。但是,它以INFO级别记录,并且在实践中似乎没有任何影响,因为所有服务都可以继续工作。 所以我的问题是这些日志消息是否表明我们配置或使用Jersey的方式存在(潜在)问题。由于以前的版本没有发生这种情况,因此我已经检查了发行