如何在JavaEE中响应后执行代码

2024-02-13

我尝试找到一种在响应后运行代码的方法,但没有成功。

就我而言,服务器向我发送数据以便让我完成工作,但此操作可能会很长(例如,向 5000 个联系人发送短信并检查谁收到了它)。服务器期望立即收到 HTTP 204 No Content 响应,以确保已收到数据。然后我的 web 应用程序将执行该操作并通过 REST API 发送状态。

我的问题是:如何发送响应然后执行代码?

现在我尝试过:

  • doFilter
  • 异步上下文
  • 执行服务

在每种情况下,为了测试连接是否在操作结束之前关闭,我会故意调用一个外部 URL,该 URL 需要 10 秒才能应答。每次,我的服务器都需要 10 秒才能回答。

我的 servlet 只是挂在上面,等待代码结束。

我无法使代码与 Executors 一起工作(这是新的),但即使我在线程执行期间遇到错误,我也想发送 HTTP 204 并另一方面处理错误。

是否有捷径可寻 ?


我使用后台线程来轮询队列表,以查找在发送响应之前不必执行的操作,并且这些操作将花费大约 0.1 秒以上的时间。例如,电子邮件发送者线程处理发送电子邮件以响应用户的操作,例如“感谢您的订单”消息。在这种情况下,servlet 生成电子邮件并将其作为记录附加到状态为“准备发送”的电子邮件表,然后让电子邮件发送者线程知道有一封新电子邮件准备发送。电子邮件发送者线程获取下一条最旧的“准备发送”消息,发送它,更新表并等待下一条。最酷的部分是从主程序发送电子邮件就像将一条记录附加到表中一样简单,然后继续前进,而无需每次都对 SMTP 服务进行麻烦。我有一个单独但非常相似的线程用于发送短信。如果后台进程无法处理负载并开始落后,只要您小心确保它们不会尝试获取队列中的相同记录,就很容易启动多个进程。

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

如何在JavaEE中响应后执行代码 的相关文章

  • Alfresco 和 Nuxeo 哪个更容易扩展? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑做一个rewrite http kato agency blogspot com 2009 12 kato redesign html
  • Spring Web应用程序在启动时从数据库初始化

    Spring 3 1 汤姆猫 我这里有一个设计问题 数据库中已指定一组类别 这些类别可以被认为是全局的 因为它们可以在整个网络应用程序中使用 我想做的是在服务器启动时读取这些类别并用 Java 填充某种类型的集合 只需要在启动时从数据库读取
  • Tomcat 服务器向 servlet 发出 3 个请求

    下面是我的doGet method WebServlet name IndexServlet urlPatterns home initParams WebInitParam name sortBy value Constants POPU
  • (AD) ldap 领域中的组成员资格

    我在 java ee 企业应用程序中使用 JAAS 框架进行身份验证和授权过程 我使用 GlassFish 作为应用程序服务器 我的领域配置如下所示
  • ProGuard 可以与 JavaEE 6 应用程序一起使用吗?

    我试图让 Proguard 混淆一个简单的 war 文件 根据文档 Proguard 处理 war 文件 但是当我尝试时我得到这个 Warning class WEB INF classes com corp gr t2b T2BChann
  • org.apache.derby.jdbc.ClientDriver 在哪里?

    我下载了jar包核心 Apache Derby 数据库引擎 还包括嵌入式 JDBC 驱动程序 10 9 1 0 http mvnrepository com artifact org apache derby derby 但那个罐子不包括
  • JPS useBean 与 HashMap

    如何正确地将 jsp useBean 与列表和地图等集合一起使用 我可以通过使用获取列表 type List
  • 在 Java EE 中手动启动新线程安全吗?

    对于在会话范围内的 JSF 托管 bean 中生成线程是否安全 我找不到明确的答案 线程需要调用无状态 EJB 实例 依赖注入到托管 bean 上的方法 背景是我们有一份需要很长时间才能生成的报告 由于我们无法更改服务器设置 这导致 HTT
  • 开始 Java EE

    我对 Java 了解一些 但对 Enterprise Java 完全陌生 我正在尝试使用 NetBeans 6 1 和 GlassFish 应用服务器 请指导我一些资源 这些资源实际上告诉我什么是 java 企业应用程序 它们与普通 jav
  • 在 HTTP 标头中发送 UTF-8 值会导致 Mojibake

    我想使用 servlet 发送阿拉伯语数据HTTPServletResponse给客户 我正在尝试这个 response setCharacterEncoding UTF 8 response setHeader Info arabicWo
  • HttpSession 内的同步是否可行?

    UPDATE 问题后立即解决 问题 通常 同步是在 JVM 内序列化并行请求 例如 private static final Object LOCK new Object public void doSomething synchroniz
  • 如何在 .JSP 文件中显示列表?

    经过一个小时的扎实研究 我仍然无法做到这一点 这是我的 Servlet 代码 package com fdm ProjectWeb RedirectServlets import java awt List import java io I
  • 使用消息存储拦截器进行 Struts 2 验证

    我有一个尝试让用户登录的操作 public class RegisteredUserAction extends ActionSupport implements SessionAware public String login throw
  • 如何在 Eclipse 中更改动态 Web 项目的上下文根?

    我在 Eclipse 中开发了一个动态 Web 项目 我可以使用以下 URL 通过浏览器访问该应用程序 http localhost 8080 MyDynamicWebApp 我想将访问URL更改为 http localhost 8080
  • 如何防止 Firefox 缓存

    我尝试了很多可能的解决方案 但无法解决问题 这些不起作用 有人可以帮忙吗 我正在使用jsp servlet application 是websphere Portal 6 1 的一个portlet 切勿
  • 如何在 Windows Vista 命令提示符中检查端口 8080?

    我对编程和设置 Java 服务器非常陌生 其实这是我第一次尝试 但没有成功 我即将用 Java 测试我的第一个 Web 应用程序 但是每当我在 Eclipse 中单击 以调试模式启动服务器 按钮时 我总是收到有关 Tomcat 服务器的错误
  • jsp/servlet 从数组填充下拉框

    大家好 我正在尝试创建一个表单 允许您为某个主题创建一个实验室 它有一个下拉框 您可以在其中选择与该用户相关的主题 但是 当我去加载页面时 我收到此错误g apache jasper JasperException java lang Nu
  • 如何在 servlet 线程中获取新的有状态会话 bean?

    我正在尝试 EJB3 我想将一个有状态会话 bean 注入到 servlet 中 以便每个访问该 servlet 的用户都会获得一个新的 bean 显然 我不能让 bean 成为 servlet 的实例变量 因为它将被共享 显然不允许注入局
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • Java EE 6 的 Maven 与 Eclipse 项目 Facets

    我在 Eclipse 中使用以下原型创建了 Maven 项目 ejb javaee6 webapp javaee6 这些项目是在没有方面的情况下创建的 将此类 Maven 项目转换为多面形式有意义吗 哪些方面会有帮助 哪些方面可能会给 Ma

随机推荐

  • 从 Eclipse 运行干净的 Android 构建?

    有没有办法从 Eclipse 运行构建 每次都会清除应用程序的数据 我想这样做是为了检查我的应用程序的首次运行体验 如果您使用的是 eclipse 请转到应用程序的运行配置 单击目标选项卡 然后选中擦除用户数据字段 我相信这会在每次运行 e
  • 在 JavaFX 中的所有表格单元格上设置工具提示

    我的应用程序包含一个TableView 根据每行中特定单元格的值 通过设置自定义单元格工厂来更改行样式setCellFactory对于本专栏 这很好用 现在我想添加一个工具提示 使用它没什么大不了的setTooltip 然而 此工具提示应设
  • 删除与正则表达式匹配的文件

    在 Windows 上从与 Perl 中的某些正则表达式匹配的目录中删除所有文件的最短和最好的方法 我的例子 全部删除 txt目录中的文件 但保留tmp txt 视窗 chdir dir or die unlink grep ne tmp
  • Pandas 将所有对象列转换为类别

    我想要一个优雅的函数来将 pandas 数据框中的所有对象列转换为类别 df x df x astype category 执行类型转换df select dtypes include object 将子选择所有类别列 但是 这会导致其他列
  • 具有函数得分的 ElasticSearch 查询运行速度慢了 10 倍以上

    这是我的没有功能分数的查询 from 200 size 25 query bool filter bool must nested query terms cotypes id 199
  • 在 Delphi 的 Label 中显示简单标记

    我当前正在 TLabel 中显示一些文本 我现在想通过在文本中显示某些单词来强调它们bold也许italic 在 Delphi 中推荐的方法是什么 是否有类似 TLabel 的组件可以显示简单的 HTML 或标记 我正在想象这样的代码 la
  • 如何在 MSBuild 中排除(禁用)PackageReference 的(传递)依赖性?

    我正在使用一个包Xamanimation其中有一个依赖项Xamarin Forms 4 1 0 写在其nuspec file
  • 在 UIPageViewController 中预加载下一页

    我已经看过很多很多地方 但还没有找到一些好的示例代码来展示如何在 UIPageViewController 中预加载 下一个 页面 关于 SO 有一些答案 详细介绍了一些理论上的方法 请参阅这个问题 https stackoverflow
  • Camera 和 SurfaceView 的奇怪行为

    我对 SurfaceView 的使用感到疯狂 我开发了一个以固定时间间隔拍照的应用程序 它与我的 Androd 2 3 设备配合良好 这是示例代码 public class MainActivity extends Activity pri
  • 在android studio中设置不同的语言

    我是 Android Studio 的新手 我正在尝试通过雅虎天气服务 JSON 数据制作我的简单应用程序天气信息 我想在我的应用程序中显示不同的语言 例如英语和阿拉伯语正在处理 string xml 并翻译一些主要活动中的单词 我尝试将条
  • RxJava 对列表执行操作并返回可观察值

    我是 RxJava 特别是 RxJava2 的新手 并且在看似相对简单的操作中遇到了一些麻烦 我需要从数据库获取一些数据 迭代数据 它表示为列表 对每个项目执行操作 将数据包装在另一个对象中并返回 这是我到目前为止所拥有的 mDataMan
  • 如何使用安卓exoplayer

    我正在寻求实施 Google 的ExoPlayer在我的应用程序中 他们的文档对我来说似乎相当模糊 我所寻找的只是从 URL 播放视频 没有复杂的自定义设置或类似的东西 尚未找到任何有关如何操作的教程 他们在 git 上提供的示例对于我的需
  • AVAudioEngine() 播放不工作

    我正在尝试使用改变声音的音调AVAudioEngine 在斯威夫特 这是我的代码 func setUpEngine let fileString NSBundle mainBundle pathForResource 400 ofType
  • C命令行密码输入

    我想允许用户使用命令行界面输入密码 但我不想在屏幕上显示此密码 或显示 在C语言中如何实现呢 谢谢 Update 我只在 Linux 上工作 所以我其实并不关心Win或者其他系统 我尝试了卢卡斯的解决方案 效果很好 不过 我还有一个问题 如
  • Java新线程需要内存

    我有一个大量创建线程的应用程序 结果我得到了内存不足错误 我的想法是等到有足够的可用空间来创建下一个Thread 但因此我需要知道创建一个线程需要多少内存以及这个内存量是否可用 有没有办法获取线程所需的内存量 我怎样才能确定这个内存量是否可
  • 为什么 UIButton 框架被 setTitle: forState: 方法重置

    问题如下 在某个时刻 按钮的位置发生了变化 此后 按钮的标题也必须更改 位置通过动画 UIView 动画块 更改 并且当设置标题时 帧返回到原始值 动画之前 那么 我该如何解决这个问题 为什么会发生这种情况 用代码更新 CGRect but
  • 如果客户端禁用了 Javascript,我该怎么办?

    我的网站严重依赖 Javascript 如果我将其关闭 我的网站就会看起来非常丑陋 我想通过向用户显示打开它的通知来强制用户使用 Javascript 否则提示他该网站无法查看 我该怎么做才能实现这一目标 看看这里 无脚本标签 http w
  • Android 设备可以同时在外围模式和中央模式下运行蓝牙 LE 吗?

    是否可以在运行外设和中央模式的 Android 设备中安装 LE 蓝牙 同时用于广告和收听 是的 您绝对可以作为外设并同时连接其他外设 对此的限制之一是设备限制 请下载BLE 中央 外设检查器请确保您的设备支持 BLE 外设 BLE 中央或
  • WinAPI:如何在自定义编辑控件中处理键盘输入

    因此 我使用 Windows API 在 C 中创建自己的编辑控件 多行文本框 一切进展顺利 但我对一件事有点困惑 首先 该控件被构建为能够处理 unicode 并且所有输入都将转换为 unicode 换句话说 所有输入都将存储为wchar
  • 如何在JavaEE中响应后执行代码

    我尝试找到一种在响应后运行代码的方法 但没有成功 就我而言 服务器向我发送数据以便让我完成工作 但此操作可能会很长 例如 向 5000 个联系人发送短信并检查谁收到了它 服务器期望立即收到 HTTP 204 No Content 响应 以确