【发布时间】:2014-04-11 08:20:48
【问题描述】:
我有一个在 Glassfish4 容器中运行的带有 jsf2、ejb3.1、jpa 等的 java ee 7 应用程序。
在提交 facelet 时,我想调用外部 http 资源(很可能使用 apache http 客户端)。响应将是文本响应,我需要对其进行解析,然后再执行一些数据库操作。
我的第一个想法是从 ejb 调用它,但由于 clint 可能会产生线程,所以这不是一个好主意。我还听说过以不产生线程的方式限制 httpClient 的方法,例如使用 HttpConnectionManager,不要使用超时等。但是我想我会失去一些性能。
最终可以使用/触发 httpClient 的异步 ejb 方法怎么样?
实现这一目标的最佳方法是什么?
我应该如何管理连接?
【问题讨论】:
-
您是否要消耗资源?或者调用一些方法?您的详细信息有点稀疏。
-
我正在尝试从我使用 https 调用的另一台服务器获取纯文本响应。解析响应后,我需要提取数据并更新一些数据库表。
-
我不明白为什么您不能在提交的业务代码中使用
HttpClient来使用该站点(可能是 EJB 或 CDI bean)。如果这是一个提交后花费太长时间并因此打扰用户的问题,我会将其委托给后台作业(例如异步 EJB)。 -
@Geziefer ,这正是我想实现的。问题在于 ejb 的每次调用,我将创建一个连接并关闭它。而且我将无法使用 httpClient 超时功能,因为它会创建线程。我想探索一些更好的方法来做到这一点。
标签: java jakarta-ee httpclient ejb-3.0