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

GAE flex Jersey Web服务返回404

董飞航
2023-03-14

我正在尝试将Jersey RESTful服务部署到Google AppEngine上。我可以让它使用标准,但是,我计划使用PostgreSQL数据库,所以我需要使用flex。该应用程序在本地jetty服务器上运行良好,但我在路由和日志中得到了404返回。

我得到的例外情况是:

JAVAlang.IllegalStateException:com上没有可用的上下文。谷歌。云运行时。码头9。部署检查。lifeCycleStarted(DeploymentCheck.java:46)位于org。日食码头。util。组成部分抽象生命周期。setStarted(AbstractLifeCycle.java:179)位于org。日食码头。util。组成部分抽象生命周期。从org开始(AbstractLifeCycle.java:69)。日食码头。xml。XmlConfiguration$1。在org上运行(XmlConfiguration.java:1511)。日食码头。xml。XmlConfiguration$1。在java上运行(XmlConfiguration.java:1438)。安全访问控制器。组织中的doPrivileged(本机方法)。日食码头。xml。XmlConfiguration。main(XmlConfiguration.java:1437)

MultiException[java.lang.RuntimeException:从jar扫描条目module-info.class时出错file:///var/lib/jetty/webapps/root/WEB-INF/lib/javax.json-1.1.jarJAVAlang.RuntimeException:扫描输入模块信息时出错。从jar初始化file:///var/lib/jetty/webapps/root/WEB-INF/lib/yasson-1.0.jarJAVAlang.RuntimeException:扫描输入模块信息时出错。从jar初始化file:///var/lib/jetty/webapps/root/WEB-INF/lib/javax.json-api-1.1.jarJAVAlang.RuntimeException:扫描输入模块信息时出错。从jar初始化file:///var/lib/jetty/webapps/root/WEB-INF/lib/javax.json.bind-api-1.0.jar]在org。日食码头。注释。注释配置。在org上扫描注释(AnnotationConfiguration.java:451)。日食码头。注释。注释配置。在org上配置(AnnotationConfiguration.java:364)。日食码头。网络应用。WebAppContext。在org上配置(WebAppContext.java:517)。日食码头。网络应用。WebAppContext。startContext(WebAppContext.java:1458)位于org。日食码头。服务器处理程序。ContextHandler。doStart(ContextHandler.java:785)位于org。日食码头。servlet。ServletContextHandler。doStart(ServletContextHandler.java:261)位于org。日食码头。网络应用。WebAppContext。doStart(WebAppContext.java:545)位于org。日食码头。util。组成部分抽象生命周期。开始(AbstractLifeCycle.java:68)

这是我的网站。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"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="Tapped" version="3.0">
    <servlet>
        <servlet-name>Tapped REST Service</servlet-name>
        <servlet-class>
            org.glassfish.jersey.servlet.ServletContainer
        </servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>com.tappedtechnologies.api</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Tapped REST Service</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

app。yaml

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored
  secure: always

runtime_config:
   jdk: openjdk8
   server: jetty9

依赖树

+- org.eclipse.jetty:jetty-server:jar:9.2.3.v20140905:compile
 |  +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
 |  +- org.eclipse.jetty:jetty-http:jar:9.2.3.v20140905:compile
 |  |  \- org.eclipse.jetty:jetty-util:jar:9.2.3.v20140905:compile
 |  \- org.eclipse.jetty:jetty-io:jar:9.2.3.v20140905:compile
 +- org.eclipse.jetty:jetty-servlet:jar:9.2.3.v20140905:compile
 |  \- org.eclipse.jetty:jetty-security:jar:9.2.3.v20140905:compile
 +- org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.26:compile
 |  +- org.glassfish.hk2.external:javax.inject:jar:2.5.0-b42:compile
 |  +- org.glassfish.jersey.core:jersey-common:jar:2.26:compile
 |  |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
 |  |  \- org.glassfish.hk2:osgi-resource-locator:jar:1.0.1:compile
 |  +- org.glassfish.jersey.core:jersey-server:jar:2.26:compile
 |  |  +- org.glassfish.jersey.core:jersey-client:jar:2.26:compile
 |  |  +- org.glassfish.jersey.media:jersey-media-jaxb:jar:2.26:compile
 |  |  \- javax.validation:validation-api:jar:1.1.0.Final:compile
 |  \- javax.ws.rs:javax.ws.rs-api:jar:2.1:compile
 +- org.glassfish.jersey.inject:jersey-hk2:jar:2.26:compile
 |  \- org.glassfish.hk2:hk2-locator:jar:2.5.0-b42:compile
 |     +- org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b42:compile
 |     +- org.glassfish.hk2:hk2-api:jar:2.5.0-b42:compile
 |     |  \- javax.inject:javax.inject:jar:1:compile
 |     +- org.glassfish.hk2:hk2-utils:jar:2.5.0-b42:compile
 |     \- org.javassist:javassist:jar:3.22.0-CR2:compile
 +- org.glassfish.jersey.media:jersey-media-json-binding:jar:2.26:compile
 |  +- org.glassfish:javax.json:jar:1.1:compile
 |  +- org.eclipse:yasson:jar:1.0:compile
 |  |  +- javax.json:javax.json-api:jar:1.1:compile
 |  |  \- javax.enterprise:cdi-api:jar:2.0:compile
 |  |     +- javax.el:javax.el-api:jar:3.0.0:compile
 |  |     \- javax.interceptor:javax.interceptor-api:jar:1.2:compile
 |  \- javax.json.bind:javax.json.bind-api:jar:1.0:compile
 +- com.fasterxml.jackson.core:jackson-core:jar:2.9.0.pr4:compile
 +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
 +- org.slf4j:slf4j-api:jar:1.7.25:compile
 \- org.slf4j:slf4j-log4j12:jar:1.7.25:compile
    \- log4j:log4j:jar:1.2.17:compile

共有1个答案

孙玺
2023-03-14

这可能是答案吗?似乎模块信息。类来自java 9,您正在yaml文件中声明版本8。

在邮件列表中,他们确认它在版本9中有效。http://mail.openjdk.java.net/pipermail/jigsaw-dev/2017-July/013038.html

你有可能在本地版本9而不是8上运行它?

 类似资料:
  • 基本上,我想做一个POST请求与以下主体: 为什么会这样?

  • 问题内容: 我需要我的Web服务以返回JSON … 我的.asmx文件中包含以下代码: 返回以下内容: 如何强制它返回JSON而不是XML? 问题答案: 您的Web服务定义看起来正确。确保通过帖子调用服务,并记住该键将“内容类型”标头指定为。 (这是使用jQuery,但如果您愿意,可以使用低级JavaScript)

  • 我有一个rest服务,实现如下- 我得到了所有的头和响应状态正确,但我没有得到json响应。这里怎么了?

  • 问题内容: 早上, 我需要从Web服务返回一条消息。以下是我的代码示例,我正在返回一个字符串。 我目前收到以下回应… 我理想上想返回类似 我敢肯定,一旦我有了主意,就可以在需要时退还其他物品。这只是我需要解决的基础。 非常感谢所有帮助,在此先感谢:) 更新:刚发现这个… 我需要类似的东西吗 问题答案: 用: 返回的结果将类似于:

  • 问题内容: 我有一个用于Web应用程序的ASP.net Web服务,该服务根据我调用的函数向我返回XML或JSON数据。到目前为止,这一直很好,但是我遇到了一个问题。我想在我的页面上创建一个“导出”链接,该链接将下载一个JSON文件。链接的格式非常简单: 您可能会想到,这应该导出项目2。到目前为止,很好,是吗? 问题是,由于我没有特别要求接受的内容类型是JSON,因此ASP.net绝对拒绝发回除X

  • 问题内容: 我一直在写一个小应用程序,使人们可以向我上传和下载文件。我已在此应用程序中添加了一个Web服务,以这种方式提供上载/下载功能,但我不太确定我的实现将如何处理大文件。 目前,上传和下载方法的定义如下(使用Apache CXF编写): 因此,该文件将作为字节数组上传和下载。但是,如果我有一个愚蠢的文件大小(例如1GB),那肯定会尝试将所有信息放入内存,并导致我的服务崩溃。 所以我的问题是-