【问题标题】:Deploying grails app on jetty, 503 SERVICE_UNAVAILABLE在码头上部署 grails 应用程序,503 SERVICE_UNAVAILABLE
【发布时间】:2013-01-13 15:04:58
【问题描述】:

您好,我正在尝试将我的 grails 应用程序部署到我新安装的码头实例。我用apt-get install jettyubuntu 12.04上安装了jetty,它在8080端口下运行得很好。

然后我尝试通过将我的小型 grails 应用程序编译为一个 war 文件并将其移动到标准的 jetty_home/webapps 文件夹并重新启动 jetty 来部署它。现在问题开始了,每当我在浏览器中转到我的上下文路径时,我都会得到这个:

HTTP ERROR: 503

Problem accessing /hello. Reason:

    SERVICE_UNAVAILABLE

当我检查码头日志时,它几乎完全是空的,除了一些日志记录错误?

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

我无法让它运行我的应用程序,它只是一个 hello-world 应用程序(我之前也尝试过使用我的真实应用程序)。一开始我以为是因为部署机器上的openjre,后来我尝试用openjdk编译,结果还是一样。

我还尝试通过 chown 命令在 jetty:abs 用户下设置 hello.war 文件。根应用程序就是这样部署的,我看不出我的应用程序为什么不能工作。

我检查了一些线程,看看我的安装过程是否有问题,但我找不到任何解决方案。没有记录其他错误。如果我使用cat 2013_01_29.stderrout.log,它是空的。请帮我找到解决问题的方法,我只想尽快启动并运行我的应用程序。

谢谢!

编辑:

好的,我下载了推荐的 jar 文件,现在我在 applicationContext 上遇到了一些关于权限被拒绝的异常。我仍然不确定如何继续,因为我有点困惑。我猜这意味着码头没有写/var/cache/jetty所需的权限?

2013-01-29 23:31:27.885:INFO::jetty-6.1.24
2013-01-29 23:31:27.945:INFO::Deploy /etc/jetty/contexts/javadoc.xml -> org.mortbay.jetty.handler.ContextHandler@ed42d08{/javadoc,file:/usr/share/jetty/javadoc}
2013-01-29 23:31:28.008:INFO::Extract file:/var/lib/jetty/webapps/hello.war to /var/cache/jetty/data/Jetty_0_0_0_0_8080_hello.war__hello__.yjv6m1/webapp
2013-01-29 23:31:28.051:WARN::Failed startup of context org.mortbay.jetty.webapp.WebAppContext@7786df0f{/hello,file:/var/lib/jetty/webapps/hello.war}
java.io.FileNotFoundException: /var/cache/jetty/data/Jetty_0_0_0_0_8080_hello.war__hello__.yjv6m1/webapp/WEB-INF/applicationContext.xml (Permission denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:209)
    at java.io.FileOutputStream.<init>(FileOutputStream.java:160)
    at org.mortbay.resource.JarResource.extract(JarResource.java:215)
    at org.mortbay.jetty.webapp.WebAppContext.resolveWebApp(WebAppContext.java:942)
    at org.mortbay.jetty.webapp.WebAppContext.getWebInf(WebAppContext.java:800)
    at org.mortbay.jetty.webapp.WebInfConfiguration.configureClassLoader(WebInfConfiguration.java:62)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:457)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.mortbay.start.Main.invokeMain(Main.java:194)
    at org.mortbay.start.Main.start(Main.java:534)
    at org.mortbay.jetty.start.daemon.Bootstrap.start(Bootstrap.java:30)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:243)
2013-01-29 23:31:28.078:INFO::NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet
2013-01-29 23:31:28.118:INFO::Opened /var/log/jetty/2013_01_29.request.log
2013-01-29 23:31:28.143:INFO::Started SelectChannelConnector@0.0.0.0:8080

【问题讨论】:

  • 看到这个post
  • 好的,但我如何只选择其中一个罐子?码头配置有点新
  • 将此jar 放在您的jetty-libs 目录中
  • 感谢您的评论,我用更多数据更新了我的问题。你知道如何帮助我吗? :)
  • 好吧,这很奇怪。 grails不应该自动打包吗?在我的项目中,路径是正确的,当我使用命令 grails war 时,我认为它应该将 WEB-INF 内容与其打包。看来 /var/cache 下的文件(显然)不存在。

标签: java grails jetty


【解决方案1】:

您似乎没有解压缩 war 文件的写入权限 - 无法写入 /var/cache/jetty/data/Jetty_0_0_0_0_8080_hello.war__hello__.yjv6m1/webapp/WEB-INF/applicationContext.xmljava.io.FileNotFoundException 令人困惑,但 “权限被拒绝”消息告诉你真正的问题。

要么授予自己在/var/cache/jetty/data/ 目录下的写入权限,要么以具有写入权限的用户身份运行 Jetty,或者将 Jetty 扩展战争文件的目录更改为您可以写入的位置。

【讨论】:

  • 我试图让码头完全拥有所有权,但一旦我这样做,它就会回到根组。你知道我该如何改变这种行为吗?
猜你喜欢
  • 2012-08-17
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-15
  • 2020-08-01
  • 2013-11-03
相关资源
最近更新 更多