lau*_*ura 5 java url jetty maven
我正在运行一个 Java webapp(我们称之为 mywebapp)。
目前,我通过在本地指向以下内容来访问我在此 webapp 中的页面:
http://localhost:9000/mywebapp/mystuff
Run Code Online (Sandbox Code Playgroud)
但是,我需要使用以下方法访问它:
http://localhost:9000/mystuff
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?我试过搞乱一些 confs,但无济于事......
这是我当前的 root.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/root</Set>
<Set name="war">
<SystemProperty name="app.webapps.path"/>/mywebapp.war
</Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)
还试过:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="contextPath">/</Set>
<Set name="war">
<SystemProperty name="app.webapps.path"/>/mywebapp.war
</Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)
我正在使用 Maven - 不确定这是否会有所作为。
谢谢!
为了将您的上下文路径设置为"/"
您需要使用上下文部署。注意:出于路径规范映射的原因,您必须指定上下文路径字符串。空上下文路径字符串""
仅作为从请求到上下文根的映射结果有效。请参阅 servlet 规范的第 12.2 节)
在 Jetty 7.x 中,上下文路径分配由分配给 DeploymentManager 的 AppProviders 处理。
默认情况下,在码头分布,两者的WebAppProvider和ContextProvider被启用。稍后了解这一点很重要,因为它会影响您决定将 mywebapp.war 文件放在哪里。
查看该${jetty.home}/start.ini
文件,您将看到它包含对etc/jetty-webapps.xml
和etc/jetty-contexts.xml
WebAppProvider 的作用是关注${jetty.home}/webapps/
任何可部署应用程序(例如 *.war)的目录,并将它们部署到与文件名同名的上下文中。换句话说${jetty.home}/webapps/MyApp-2.4.war
就是部署到上下文中"/MyApp-2.4"
。还有一个特殊的“root.war”保留字将部署到上下文中"/"
。虽然这是最简单的部署机制,但它牺牲了对部署细节的控制。
ContextProvider 的作用是关注${jetty.home}/contexts/
任何 jetty-xml 格式的可部署上下文的目录。这种部署机制让你对部署有最大的控制权,xml文件可以控制任何最终解析为org.eclipse.jetty.server.handler.ContextHandler基类的东西,其中WebAppContext (wars / servlets / etc) 是其中的一部分的。最常见的用途是指定一个基于 WebAppContext 的 xml 文件,并控制诸如构成 Web 应用程序的文件和目录、要使用的临时目录,甚至要使用的 Context Path 等内容。
你要做的是:
etc/jetty-context.xml
存在)${jetty.home}/contexts/mywebapp.xml
声明<Set name="contextPath">/</Set>
选项。etc/jetty-webapps.xml
的 start.ini 中有存在,请不要将 mywebapp.war 放入,${jetty.home}/webapps
因为这会导致 WebAppProvider 也部署相同的 web 应用程序并混淆您的部署。最后,您可以在jetty 发行版本身中看到这是如何完成的,只需打开${jetty.home}/contexts/test.xml
并环顾四周即可。您将看到它${jetty.home}/webapps/test.war
通过 ContextProvider 的使用将 加载${jetty.home}/contexts/test.xml
到"/"
上下文路径中。
另一个注意事项,查看日志。
2012-01-13 13:56:28.779:INFO:oejsh.ContextHandler:started oejwWebAppContext{/,file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/},/home /joakim/code/jetty/distros/jetty-distribution-7.6.0.RC3/webapps/test.war
这告诉我 WebAppContext 是
{/,
(根上下文路径)file:/tmp/jetty-0.0.0.0-8080-test.war-_-any-/webapp/
/home/joakim/code/jetty/distros/jetty-distribution-7.6.0.RC3/webapps/test.war
。更新:澄清有关空上下文路径的声明。
归档时间: |
|
查看次数: |
6505 次 |
最近记录: |