【发布时间】:2015-01-21 20:09:21
【问题描述】:
从 Jetty 6 迁移到 9 比我最初想象的要困难得多,但感谢大家在线提供的资源,我已经完成了很多工作
我怀疑我没有在网上找到关于 Jetty 9 中的嵌入式 Servlet 的 xml 示例,除了下面的链接
http://jetty.4.x6.nabble.com/Jetty-9-Context-Deployer-td4960157.html
首先,你们似乎都从 ContextDeployer 迁移到了 WebAppProvider,这是正确的说法吗?
我问这个是因为在 Jetty6 中,我能够使用上下文部署程序来搜索目录以将 servlet 配置为上下文对象。由于 ContextDeployers 似乎消失了,我看到的 Jetty 中最接近的用法是 WebAppProvider,它从战争文件中打开网页。这不是我的公司想要做的,我们希望能够像过去一样使用上下文
现在我已经看到了 ServletContextHandler,它看起来很容易配置并且可以充当上下文对象。但是,我当前的 Web 应用程序提供程序配置不会打开我的 servlet 网页
这是我如何在 xml 中使用 DeployManager 的摘录
<Call name="addBean">
<Arg>
<New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager">
<Set name="contexts">
<Ref refid="Contexts" />
</Set>
<Call id="webappprovider" name="addAppProvider">
<Arg>
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
<Set name="monitoredDirName"><Property name="jetty.home" default="config/jetty/context/"/></Set>
<Set name="scanInterval">5</Set>
</New>
</Arg>
</Call>
</New>
</Arg>
一个示例 Servlet 配置 xml
<Configure id="contexts" class="org.eclipse.jetty.servlet.ServletContextHandler">
<Set name="contextPath">/</Set>
<Call name="addServlet">
<Arg>class.name.here</Arg>
<Arg>/*</Arg>
</Call>
</Configure>
【问题讨论】:
-
您的 servlet 类将从哪里加载?它们是特定于上下文的吗?或特定于服务器? (没有提示您如何在 Jetty 6 中执行此操作,因为它也有相同的类加载器问题)
-
您在问题中提到了嵌入式 servlet 并标记了嵌入式码头,但您的问题似乎是从码头分布和 xml 配置的角度来看的。您使用的是哪种形式?
-
后者,我使用的是xml配置,这是我认为我不能偏离的东西。对困惑感到抱歉。我对码头的了解越来越多,但仍然非常有限。
标签: jetty