- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 VXML 应用程序,它接受传入的 SIP 语音调用,然后轮询在同一主机上的 Tomcat 实例上运行的 Java 应用程序上的 Web 服务以获取传入的语音请求(例如,播放音频提示或收集一些数字)从一个单独的 channel 。这些语音请求通过单独的 WS 接口(interface)接收并缓存以供 VXML session 收集。语音请求可能会在调用被接受后的 0.5 秒到 30 秒以上的任何时间收到。
从逻辑上讲,VXML session 应定期轮询新请求,并且 Tomcat 中的 Java 应用程序会返回一个非阻塞响应,指示是否已收到任何请求。然而,我还有一个额外的限制,即从 VXML 解释器进行 Web 服务调用的 CPU 成本非常高,因此对大量同时调用定期重复此操作将显着影响系统容量。
首选方法是让 Web 应用程序阻止来自 VXML 应用程序的轮询,直到语音服务请求到达缓存(超时时间为 5 或 10 秒)。但是,我知道在 servlet 线程上长时间使用 Thread.sleep 在最好的时候是一个坏主意,所以我正在寻找实现此目的的替代方法。
此应用程序需要支持服务器上的大量并发 session (预计在计划的硬件上最多 1000 个 VXML session ),因此仅增加 Tomcat 上的线程数是 Not Acceptable 。
有没有一种方法可以让 Tomcat 将请求搁置一段时间,同时为其他请求释放 servlet 线程?有没有可能,当我使用 Thread.sleep 时,Tomcat 是否足够智能以简单地执行此操作? :-)
谢谢, Facebook
最佳答案
Java中长时间运行的请求和非阻塞I/O一般被称为“ cometd ”。 Tomcat 6 以专有方式支持这一点,并将其纳入 Servlet 3.0 规范。
参见 this article了解如何做到这两点。
关于multithreading - Tomcat中的线程休眠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4852440/
这个问题在这里已经有了答案: What is the JavaScript version of sleep()? (91 个回答) 关闭 9 年前。 是的,我知道 - 这个问题有成千上万的答案。请
有没有办法使用 native NHibernate linq 提供程序执行以下查询? var result = (from e1 in Session.Query() join e2
上下文:我正在尝试将Grails项目从1.0.3升级到1.3.7,并且遇到了很多问题。我刚得到很多DuplicateMappingExceptions,因为该项目同时具有Hibernate XML文件
我有标准: ICriteria criteria = Session.CreateCriteria() .SetFetchMode("Entity1", FetchMo
我正在寻找一种重新启动线程的方法,无论是从该线程的上下文内部还是从线程外部,可能是从另一个进程中。 (这些选项中的任何一个都可以。)我知道使整个进程休眠的困难,而且我很确定线程也会遇到同样的困难。但是
C 中是否有任何函数可以检查计算机是否进入 sleep 、休眠 或锁定 并从这些状态唤醒? 在msdn它们为 C#、C++ 提供,但不为 C 提供。我的操作系统是windows7 如下是我用来检查启动
我对 NHibenate 有疑问。当我运行 queryover 时,出现错误“无法解析属性:User.Name of:MegaOnlineChat.Core.Entities.Message”。我做错
我知道这里被问过很多次,也回答过很多次,这不是应该如何完成的方式,但再一次:) 是否有可能以某种方式调用异步函数(例如计时器/ajax 调用),基本上是常见的异步任务并同步等待直到它结束而不会出现 1
我在persistence.xml中有以下内容 com.merc.model.log.EventLogging org.hibernate.ejb.HibernatePersiste
目前我的存储库有 2 个构造函数。当我从我的 mvc 网站调用这些时,我总是调用第一个构造函数,从而打开一个新 session 。我应该在 session 中通过吗?我该怎么做。 public
hibernate session to list conversion Compilation Error occured when java converted into scala..!!
下面的remove()方法导致“超出了GC开销限制”。从A或B或C中删除ABC中存在的关联时。请您告知错误在哪里吗? 注-ABC是A,B,C的映射表 stacktrace如下: Caused by:
昨天我在 webhosting.net 的 Jelastic v2.2.2 上获得了一个试用帐户,并配置了一个最少 0 个 cloudlets 的环境(最多 8 个,即全部动态,无保留)。然后我部署了
设置:Grails 2.5.6和Hibernate 4.3.10 我有一个带有字符串ID的表。事实是,它的值是数字字符串,当我传入诸如get()这样的值时,这似乎使"000000"变得混乱。 域类:
hibernate session to list conversion Compilation Error occured when java converted into scala..!!
我有一个用于 PDA 的应用程序,它有一个长时间运行的进程,我遇到了一个问题,即 PDA 将在该进程完成之前进入休眠状态。 我无法控制 PDA 上的电源设置,有谁知道我的应用程序阻止 PDA 进入休眠
我正在创建一个将安装在 LaunchAgents 文件夹中的守护程序。关于使其 sleep 的一些问题: 因为它是一个 LaunchAgent 项,所以可执行文件会在用户/系统 sleep 时自动 s
我想使用 AsyncTask 创建启动画面。具体来说,在 doInBackground() 方法中,我使用静态方法 Thread.sleep() 并在它创建一个将应用程序重定向到其他 Activity
在我的网站上,我有一个 JavaScript 函数,它执行 AJAX 调用来获取帐户信息,然后打开一个模式,您可以在其中查看和编辑信息。 AJAX 调用用于更改您选择的数据库中的详细信息,然后刷新原始
除非线程告诉我醒来,否则我想睡 X 时间。在下面的示例中,我想休眠 10 毫秒(1/100 秒)或直到 foo 有 2000 个项目。以先到者为准。我该怎么做呢?我编了函数 主线程: pthread_
我是一名优秀的程序员,十分优秀!