使用嵌入式jetty服务器运行Web应用程序(WAR) [英] Running a web application (WAR) with embedded jetty server

查看:113
本文介绍了使用嵌入式jetty服务器运行Web应用程序(WAR)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我制作了一个非常基本的Web应用程序,只有一个html页面。我把它作为战争出口。

I have made a very basic web application that has only one html page. I exported it as a war.

现在我创建了一个嵌入式码头服务器。

Now I created an embedded jetty server.

public class SimplestServer {

public static void main(String[] args) throws Exception{
    Server server = new Server(8000);

    WebAppContext webapp = new WebAppContext();
    webapp.setContextPath("/");
    webapp.setWar("C:\\Users\\User\\Desktop\\jetty\\JettyWar.war");
    server.setHandler(webapp);

    server.start();
    server.join();
}

}

我为这个嵌入式服务器创建了一个jar。但是当我尝试通过嵌入式服务器运行我的Web应用程序时,我收到以下错误。

I created a jar for this embedded server. But when I try to run my web application through the embedded server,I get the following error.

C:\ Users \ User> java -jar C:\\ \\ Users\User\Desktop\jetty\webServer.jar

C:\Users\User>java -jar C:\Users\User\Desktop\jetty\webServer.jar


C:\ Users \ User> java -jar C:\ Users \User\Desktop\jetty \webServer.jar ..
2014-02-18 22:43:15.400:INFO:oejs.Server:jetty-8.yz-SNAPSHOT
2014-02-18 22:43:15.490:INFO:oejw.WebInfConfiguration:提取
jar:file:/ C:/Users/User/Desktop/jetty/JettyWar.war!/ to
C:\ Users\User\AppData \ Loca
\jetty-0.0.0.0-8000-JettyWar.war- -any-\webapp 2014-02-18
22:43:15.878:警告:oejuc.AbstractLifeCycle:FAILED jsp:
java.lang.NoClassDefFoundError:org / apache / juli / logging / LogFactory
java.lang.NoClassDefFoundError:org / apache / juli /log / LogFactory
at org.apache.jasper.servlet.JspServlet。(JspServlet.java:68)
at sun.ref lect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletContextHandler。 java:1075)
at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
a t org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
at org.eclipse .jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
at org.eclipse.jetty .util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty .server.Server.doStart(Server.java:282)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.windows.services.SimplestServer .main(SimplestServer.java:41)
引起:java.lang.ClassNotFoundException:
org.apache.juli.logging.LogFactory
at java.net.URLClassLoader $ 1.run(Unknown来源)
at java.net.URLClassLoader $ 1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(未知来源)
at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.jasper.servlet.JspServlet。(JspServlet.java:68)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(未知来源)
at org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletCo ntextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957)
org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java: 514)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
at org .eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:282)
at org .eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.windows.services.SimplestServer.main(SimplestServer.java:41)
2014-02-18 22 :43:15.909:警告:oejuc.AbstractLifeCycle:FAILED
oejwWebAppContext {/,file:/ C:/Users/User/AppData/Local/Temp/jetty-0.0.0.0-8000-Je
.war -
-any- / webapp /},C:\ Users \User\Desktop\jetty \JettyWar.war:
java.lang.NoClassDefFoundError:org / apache / juli /log / LogFactory
java.lang.NoClassDefFoundError:org / apache / juli / logging / LogFactory
at org.apache.jasper.servlet.JspServlet。(JspServlet.java:68)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unkno wn来源)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang。 Class.newInstance(未知来源)
at org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletContextHandler.java:1075)
at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder .java:957)
org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344 )
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.We bAppContext.startContext(WebAppContext.java:1242)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717)
at org.eclipse.jetty.webapp.WebAppContext。 doStart(WebAppContext.java:494)
org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper。 doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Server.doStart(Server.java:282)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start( AbstractLifeCycle.java:64)
at com.windows.services.SimplestServer.main(SimplestServer.java:41)
引起:java.lang.ClassNotFoundException:
org.apache.juli。 logging.LogFactory
at java.net.URLClassLoader $ 1.run(Unknown Source)
at java.net.URLClassLoader $ 1.run(Unknown Source)
at java.security.AccessController.doPrivileged(原生方法)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at org.apache.jasper.servlet.JspServlet。(JspServlet.java:68)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) )
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
at java.lang.reflect.Constructor。 newInstance(未知来源)
at java.lang.Class.newInstance(Unknown Source)
at org.eclipse.jetty.servlet.ServletContextHandler $ Context.createServlet(ServletContextHandler.java:1075)
在org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957)
at org。 eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344)
at org.eclipse.jetty。 util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791)
org.eclipse.jetty.servlet。 ServletContextHandler.startContext(ServletContextHandler.java:265)
at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242)
at org.eclipse.jetty.server.handler.ContextHandler。 doStart(ContextHandler.java:717)
at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start( AbstractLifeCycle.java:64)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95)
at org.eclipse.jetty.server.Serv er.doStart(Server.java:282)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64)
at com.windows.services.SimplestServer.main( SimplestServer.java:41)

C:\Users\User>java -jar C:\Users\User\Desktop\jetty\webServer.jar .. 2014-02-18 22:43:15.400:INFO:oejs.Server:jetty-8.y.z-SNAPSHOT 2014-02-18 22:43:15.490:INFO:oejw.WebInfConfiguration:Extract jar:file:/C:/Users/User/Desktop/jetty/JettyWar.war!/ to C:\Users\User\AppData\Loca \jetty-0.0.0.0-8000-JettyWar.war--any-\webapp 2014-02-18 22:43:15.878:WARN:oejuc.AbstractLifeCycle:FAILED jsp: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.jasper.servlet.JspServlet.(JspServlet.java:68) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at com.windows.services.SimplestServer.main(SimplestServer.java:41) Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.apache.jasper.servlet.JspServlet.(JspServlet.java:68) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at com.windows.services.SimplestServer.main(SimplestServer.java:41) 2014-02-18 22:43:15.909:WARN:oejuc.AbstractLifeCycle:FAILED o.e.j.w.WebAppContext{/,file:/C:/Users/User/AppData/Local/Temp/jetty-0.0.0.0-8000-Je .war--any-/webapp/},C:\Users\User\Desktop\jetty\JettyWar.war: java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory at org.apache.jasper.servlet.JspServlet.(JspServlet.java:68) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at com.windows.services.SimplestServer.main(SimplestServer.java:41) Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at org.apache.jasper.servlet.JspServlet.(JspServlet.java:68) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:1075) at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:957) at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:514) at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:344) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1242) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:717) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:494) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) at org.eclipse.jetty.server.Server.doStart(Server.java:282) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) at com.windows.services.SimplestServer.main(SimplestServer.java:41)

我使用过jetty 8.1.14。
当我在目标运行时选择j2ee预览时,我无法理解为什么我得到apache没有类def错误。顺便说一下,当我在运行时使用apache tomcat时,我得到了同样的错误。

I have used jetty 8.1.14. I cant understand why I am getting apache's no class def error when I selected j2ee preview in my target runtime. By the way, I got the same error when I had used apache tomcat in runtime.

另请注意,我不使用maven或ant。我也不想使用它们。我希望只通过简单的java来实现。

Also note that I am not using maven or ant. I dont want to use either. I wish to do it through simple java only.

提前感谢您的帮助。

推荐答案

一个简单的解决方案是使用jetty-runner。 jetty-runner jar直接嵌入到码头分布中(< groupId> org.mortbay.jetty< / groupId>< artifactId> jetty< / artifactId>

A simple solution is to use the jetty-runner. The jetty-runner jar is directly embedded in the jetty distribution (<groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId>)

然后在你的主要课程中你只需做类似的事情:

and then in your main class you just have to do something like that :

jettyRunner = new JettyRunner("/yourContext", "path/to/your/webApp", port);
    jettyRunner.start();

这篇关于使用嵌入式jetty服务器运行Web应用程序(WAR)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆