Java 在jetty上部署grails应用程序,503服务不可用

Java 在jetty上部署grails应用程序,503服务不可用,java,grails,jetty,Java,Grails,Jetty,您好,我正在尝试将grails应用程序部署到新安装的jetty实例。我用apt-get-install-jetty在ubuntu12.04上安装了jetty,它在8080端口下运行完全正常 然后,我尝试部署我的小型grails应用程序,将其编译为war文件,并将其移动到标准的jetty\u home/webapps文件夹中,然后重新启动jetty。现在问题开始了,每当我在浏览器中转到上下文路径时,我都会得到以下信息: HTTP ERROR: 503 Problem accessing /hel

您好,我正在尝试将grails应用程序部署到新安装的jetty实例。我用
apt-get-install-jetty
ubuntu12.04
上安装了jetty,它在8080端口下运行完全正常

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

HTTP ERROR: 503

Problem accessing /hello. Reason:

    SERVICE_UNAVAILABLE
当我检查jetty日志时,它几乎是空的,除了一些日志错误

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
user下设置hello.war文件。根应用程序就是这样部署的,我看不出为什么我的应用程序不能工作

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

谢谢

编辑:

好的,我下载了推荐的jar文件,现在我在applicationContext上遇到了一些关于权限被拒绝的异常。我仍然不确定如何继续,因为我有点困惑。我想这意味着jetty没有写入
/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
2013-01-29 23:31:27.885:INFO::jetty-6.1.24
2013-01-29 23:31:27.945:INFO::Deploy/etc/jetty/context/javadoc.xml->org.mortbay.jetty.handler。ContextHandler@ed42d08{/javadoc,文件:/usr/share/jetty/javadoc}
2013-01-29 23:31:28.008:信息::提取文件:/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:警告::上下文org.mortbay.jetty.webapp的启动失败。WebAppContext@7786df0f{/hello,文件:/var/lib/jetty/webapps/hello.war}
java.io.FileNotFoundException:/var/cache/jetty/data/jetty\u 0\u 0\u 8080\u hello.war\u hello\u.yjv6m1/webapp/WEB-INF/applicationContext.xml(权限被拒绝)
在java.io.FileOutputStream.open(本机方法)
位于java.io.FileOutputStream。(FileOutputStream.java:209)
位于java.io.FileOutputStream。(FileOutputStream.java:160)
位于org.mortbay.resource.JarResource.extract(JarResource.java:215)
位于org.mortbay.jetty.webapp.WebAppContext.resolveWebApp(WebAppContext.java:942)
位于org.mortbay.jetty.webapp.WebAppContext.getWebInf(WebAppContext.java:800)
位于org.mortbay.jetty.webapp.WebInfConfiguration.configureClassLoader(WebInfConfiguration.java:62)
位于org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:457)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
位于org.mortbay.jetty.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:156)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
位于org.mortbay.jetty.Server.doStart(Server.java:224)
位于org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
位于org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:985)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.mortbay.start.Main.invokeMain(Main.java:194)
位于org.mortbay.start.Main.start(Main.java:534)
位于org.mortbay.jetty.start.daemon.Bootstrap.start(Bootstrap.java:30)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:616)
位于org.apache.commons.daemon.support.DaemonLoader.start(DaemonLoader.java:243)
2013-01-29 23:31:28.078:信息::没有对的JSP支持,找不到org.apache.jasper.servlet.JspServlet
2013-01-29 23:31:28.118:INFO::Opened/var/log/jetty/2013\u 01\u 29.request.log
2013-01-29 23:31:28.143:信息::开始SelectChannelConnector@0.0.0.0:8080

您似乎没有解包war文件的写入权限-它无法写入
/var/cache/jetty/data/jetty\u 0\u 0\u 0\u 8080\u hello.war\u hello\u.yjv6m1/webapp/WEB-INF/applicationContext.xml
java.io.FileNotFoundException
令人困惑,但 “权限被拒绝”消息告诉您真正的问题


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

看到了吗?jetty配置有点新在您的
jetty libs
目录中显示此内容谢谢您的评论,我用更多数据更新了我的问题。你知道怎么帮我吗?:)好吧,这很奇怪。grails不应该自动打包吗?在我的项目中,路径是正确的,当我使用grailswar命令时,我认为应该用它打包WEB-INF内容。似乎这些文件没有被删除