我注意到,如果我没有部署WAR文件,我可以像Joakim Erdfelt所说的那样,我会调查我对战争做了哪些改变导致根上下文失败。
我知道如何将静态内容部署到任何上下文:
sudo java -cp jetty-runner-9.2.13.v20150730.jar org.eclipse.jetty.runner.Runner --port 80 MYAPP.war --path /context1 site/MyStaticWebSite
//will deploy mysite in
//127.0.0.1/context1/index.html
但我想在根
中部署它 127.0.0.1/index.html
在文档和谷歌中都没有引用。 https://webtide.com/downloads/ 如果我这样做:
sudo java -cp jetty-runner-9.2.13.v20150730.jar org.eclipse.jetty.runner.Runner --port 80 MYAPP.war --path / site/MyStaticWebSite
我明白了:
2015-11-11 21:05:27.498:INFO::main: Logging initialized @121ms
2015-11-11 21:05:27.513:INFO:oejr.Runner:main: Runner
2015-11-11 21:05:27.618:INFO:oejs.Server:main: jetty-9.2.13.v20150730
Nov 11, 2015 9:05:34 PM org.glassfish.jersey.server.ApplicationHandler initialize
INFO: Initiating Jersey application, version Jersey: 2.6 2014-02-18 21:52:53...
2015-11-11 21:05:35.323:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@33833882{/,file:/tmp/jetty-0.0.0.0-80-MYAPP.war-_-any-4618238315169821839.dir/webapp/,AVAILABLE}{file:/home/ubuntu/MYAPP.war}
2015-11-11 21:05:35.744:WARN:oeja.AnnotationConfiguration:main: ServletContainerInitializers: detected. Class hierarchy: empty
2015-11-11 21:05:35.871:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@200a570f{/,file:site/MyStaticWebSite/,AVAILABLE}{/root/MyStaticWebSite/}
2015-11-11 21:05:35.872:WARN:oejsh.RequestLogHandler:main: !RequestLog
2015-11-11 21:05:35.890:INFO:oejs.ServerConnector:main: Started ServerConnector@2504eefd{HTTP/1.1}{0.0.0.0:80}
2015-11-11 21:05:35.891:INFO:oejs.Server:main: Started @8517ms
根网页显示以下内容:
答案 0 :(得分:2)
首先,升级!
9.1.0.M0
是一个不稳定的/ beta里程碑版本。
使用更新近且更稳定的内容(9.2.13.v20150730
of jetty-runner怎么样?)
如果您希望将其部署在根上下文中,请使用--path /
(不是--path /context1
)
<强>更新强>
啊,你有2个webapps,而泽西在混合中,没有意识到。
/
路径:MYAPP.war
/
路径:site/MyStaticWebSite
不,你不能在同一个上下文路径上同时拥有这两个servlet规范不支持的路径。
这是因为每个webapp一旦输入就必须终止。
情景:
/
,因此两个webapps都匹配该webapp必须产生响应。没有机会跳过webapp并进入下一个。
然而,Jersey的这种行为更加复杂,它的默认配置接管所有静态资源服务本身,从不允许Jetty甚至有机会提供这些静态资源。
你需要做什么。
MYAPP.war
必须拥有静态资源。MYAPP.war
中的某些东西提供 - 要么是正式的servlet,要么是泽西岛的东西。建议将外部行为设置为不同的网址格式,例如/external/*
或/static/*
,而不是/*
。答案 1 :(得分:0)
我终于找到了如何做到这一点,
而不是:
sudo java -cp jetty-runner-9.2.13.v20150730.jar org.eclipse.jetty.runner.Runner --port 80 MYAPP.war --path / site/MyStaticWebSite
执行:
sudo java -cp jetty-runner-9.2.13.v20150730.jar org.eclipse.jetty.runner.Runner --port 80 --path /MYAPP MYAPP.war --path / site/MyStaticWebSite
MYAPP正在按照web.xml中的规定部署到/ MYAPP上下文,但不允许按照规范在根上下文中部署任何内容。
然后问题是/ MYAPP无法到达,但/ MYAPP / MYAPP可能,这是因为web.xml说要将服务部署到/ MYAPP所以我不得不改变它
来自:
<servlet-mapping>
<servlet-name>MY_SERVLET_NAME</servlet-name>
<url-pattern>/MYAPP/*</url-pattern>
</servlet-mapping>
为:
<servlet-mapping>
<servlet-name>MY_SERVLET_NAME</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
现在可行。