首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在另一个Java实例上启动一个线程并异步执行逻辑

在另一个Java实例上启动一个线程并异步执行逻辑
EN

Stack Overflow用户
提问于 2017-11-29 06:57:01
回答 2查看 131关注 0票数 1

背景

  • 我正在开发一个运行在JavaEE应用服务器上的web应用程序。
代码语言:javascript
复制
- This application server has “thread canceling” feature. It terminates long-running (20min or more) threads for preventing resource starvation caused by deadlock or infinite loop.
- This application server forbids to make child threads on servlets (this application server can write some logs for failure analysis, but these logs don’t work properly on child threads).

  • 我的应用程序有一些耗时的业务逻辑(例如,为所有用户打印分项账单)。这种逻辑是从网页上的按钮启动的。
代码语言:javascript
复制
- Some business logics need 30 minutes or more to finish (it is enough for the browsers to get timeout error).
- These logics should be executed only if preceding transaction finished successfully (e.g. the bills should not be printed if payments not recorded to DB successfully).  
    - I know I can use messaging APIs (e.g. ActiveMQ with JMS API has transactional feature). But I want to avoid these solutions, because a global transaction between RDBMS and JMS will broken in some situations.

问题

我认为我必须在另一个Java上的线程上运行这些逻辑。如何在另一个Java实例上启动线程并异步执行逻辑?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-09 15:12:36

经过进一步的调查,我发现Spring集成中的JDBC支持特性涵盖了我的需求。您可以使用出站通道适配器向RDBMS请求异步业务逻辑执行,并在另一个带有入站通道适配器的JVM上运行业务逻辑。

票数 0
EN

Stack Overflow用户

发布于 2017-11-29 07:42:55

我认为您无法在另一个JVM中直接启动线程。由于您没有使用消息队列,所以最好使用RMI来调用不同JVM上的另一个进程上的方法,后者反过来可以为您启动线程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47546795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档