使用 Jetty 以编程方式部署 servlet

2024-03-23

我有一个 servlet,希望使用 Jetty 以编程方式部署它。该 servlet 使用 Spring,并且它的 web.xml 指向 Spring 上下文 XML 文件,正如您所期望的那样。

目前,我只是尝试 Jetty 文档中的示例代码,但使用我自己的 servlet:

Server server = new Server(8080);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);

context.addServlet(new ServletHolder(new BatchReceiver()),"/br/*");

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

这会导致以下异常:

2012-05-24 14:43:20.190:INFO:oejs.Server:jetty-8.1.3.v20120416
2012-05-24 14:43:20.266:WARN:/:unavailable
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.context.support.WebApplicationContextUtils.getRequiredWebApplicationContext(WebApplicationContextUtils.java:84)
at com.spiffymap.sealog.server.servlet.BatchReceiver.init(BatchReceiver.java:126)
at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492)
at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:778)
at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:258)
at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90)
at org.eclipse.jetty.server.Server.doStart(Server.java:262)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at com.spiffymap.sealog.server.servlet.TestBatchReceiver.main(TestBatchReceiver.java:26)
2012-05-24 14:43:20.335:INFO:oejs.AbstractConnector:Started [email protected] /cdn-cgi/l/email-protection:8080

如何设置我的 servlet 以便 Jetty 知道它的 web.xml 和 Spring 上下文在哪里?

任何帮助将不胜感激!

EDIT

所以,显然我不需要 web.xml 但我do需要将 Jetty 指向我的 Spring 上下文。我尝试过类似以下的方法:

context.setInitParameter("contextConfigLocation", "classpath*:**/*Context.xml");

但它不起作用(仍然产生相同的异常)。我还尝试在 ServletHolder 上设置“contextConfigLocation”,但无济于事。


对于那些感兴趣的人,我让它工作如下:

Server server = new Server(8090);

ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/batch");

// Setup Spring context
context.addEventListener(new ContextLoaderListener());
context.setInitParameter("contextConfigLocation", "classpath*:**/testContext.xml");

server.setHandler(context);

// Add servlets
context.addServlet(new ServletHolder(new BatchReceiver()), "/receiver/*");
context.addServlet(new ServletHolder(new BatchSender()), "/sender/*");       

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

我错过的关键步骤是

context.addEventListener(new ContextLoaderListener());

它加载 Spring 上下文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Jetty 以编程方式部署 servlet 的相关文章

随机推荐

  • Mybatis 3.0.5 嵌套集合映射示例

    我正在研究 MyBatis 3 0 5 的映射功能 运行嵌入式模式的数据库是H2 1 3 160 在用户手册的帮助下 我让简单的部分工作起来 但我很难绘制出Set使用一个HashMap作为后备存储 以下是自定义集合的 Java 代码 该集合
  • IntellijIdea 中未解决的参考 Kotlinx。即使添加库后

    我只是想尝尝 Kotlin 协程 不幸的是 我无法使用该库kotlinx in IntelliJ 我已经通过下载了该库Maven 尝试使缓存无效 重建项目 尝试在新项目中使用它 Even IntelliJ正在建议kotlinx在自动完成中
  • 有没有办法在 Windows 中安装 therubyracer?

    有没有办法安装 therubyracer gem 即在 Windows 中运行 RoR 项目所需的方法 我尝试过正常方式 但不行 然后我尝试安装 cygwin 然后尝试安装 gem 但仍然没有运气 有人在windows下成功安装过这个吗 我
  • Leaflet OSM:多边形上的中心地图视图

    我想生成一个 html 文件 包括Leaflet库来显示OpenStreetMap用多边形查看 地图上的多边形应居中 为此 我遵循this https github com Leaflet Leaflet issues 1196讨论 但我仍
  • 上标下划线随文本向上移动

    我有类似以下的 HTML 代码 div We have winner of 1 div
  • JVM 源代码中的“intrinsify”是什么意思?

    intrinsify 是否意味着 JVM 的源代码有些 保守 但 JIT 编译器可以在 JVM 预热时进行一些优化 例如 UNSAFE ENTRY void Unsafe SetOrderedObject JNIEnv env jobjec
  • Three.js - 从点缩放圆柱体

    是否可以从特定点开始增加 Y 轴上圆柱体的比例 与圆柱体从其原点向上和向下生长到新比例不同 它只是像条形图一样从顶部向上 向下生长 当前代码 function animate render cylinder scale y 0 1 requ
  • PHP代码格式化程序/美化程序和一般的PHP美化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道有什么好的工具可以很好地格式化凌乱的 php 代码吗 最好是 Aptana Eclipse 的脚
  • 将 Spark 中的字符串数组转换为字节数组并使用 UDF 将其检索回来

    我正在尝试将 Spark 中的字符串数组转换为字节数组 然后将字节数组重新转换为字符串数组 但是 我没有按照我的预期取回字符串数组 这是代码 UDFs for converting Array String to byte array an
  • OrientDB地理定位

    我正在使用 OrientDB for NoSQL 数据库 但我不知道如何准确查询地理位置 我已阅读具体文档 东方数据库函数 https github com orientechnologies orientdb wiki SQL Where
  • python 中是否有终止线程的规范方法?

    我想在 python 中强制终止线程 我不想设置事件并等待线程检查它并退出 我正在寻找一个简单的解决方案 例如kill 9 这是否可以在没有肮脏的黑客 例如使用私有方法操作等 的情况下做到这一点 如果您不介意代码运行速度慢十倍左右 则可以使
  • 如何从 CodeIgniter 中的 URL 中删除“index.php”?

    我该如何删除index php从我的URL http en wikipedia org wiki Uniform Resource Locator在代码点火器中 我删除了index php从我的配置文件中 我已经运行了我的rewrite m
  • 离线Python脚本中的OAuth和redirect_uri

    我目前正在尝试编写一个 Python 脚本 该脚本将使用 Deviantart 的 API 自动随机播放我最喜欢的歌曲 为此 我需要首先登录我的脚本 Deviantart 使用 OAuth2 身份验证 这需要一个 redirect uri
  • 类型错误:$ (...).bootstrapTable 不是函数

    table class table table bordered table striped table hover table
  • 使用 Makecert 设置密钥使用属性

    是否可以使用 makecert 或我可以用来生成自己的测试证书的任何其他工具来设置密钥用法属性 我感兴趣的原因是 用于 BizTalk Server AS2 传输的证书需要使用数字签名的密钥进行签名 并使用数据加密或密钥加密进行加密 解密
  • Windows 中的 Nutch:无法设置路径权限

    我尝试在 Windows 计算机上使用 Solr 和 Nutch 但收到以下错误 Exception in thread main java io IOException Failed to set permissions of path
  • 如何使用 Google 地图 V2 删除单个标记? [复制]

    这个问题在这里已经有答案了 从地图上删除标记的唯一方法是明确的 但是它会清除地图上的所有标记 我只想删除单个标记或一组标记 我怎样才能做到这一点 添加标记后 可以获得其参考 Marker marker map addMarker The M
  • FastCGI超时错误MAMP Pro 4

    我研究了较旧的问题 https craftcms stackexchange com questions 4661 fastcgi error when accessing a local development site using ma
  • 如何找到RecyclerView中当前可见item的位置?

    我正在开发一个使用 RecyclerView 幻灯片显示图像的应用程序 我使用下面的代码水平滚动回收器视图 RecyclerView LayoutManager mLayoutManager new LinearLayoutManager
  • 使用 Jetty 以编程方式部署 servlet

    我有一个 servlet 希望使用 Jetty 以编程方式部署它 该 servlet 使用 Spring 并且它的 web xml 指向 Spring 上下文 XML 文件 正如您所期望的那样 目前 我只是尝试 Jetty 文档中的示例代码