1

我正在编写一个 JAX-RS Web 服务。它通过以下方式响应客户端调用:

  1. 从数据库中检索一些信息
  2. 调用外部服务器

对于 2) 服务器不公开 Web 服务接口(即没有 WSDL 接口或 REST API)。相反,它使用基于 TCPIP 的自定义协议。我想从我的 JAX-RS 资源直接向此服务器进行客户端调用,但我不想为每次调用我的 JAX-RS 资源打开连接、进行身份验证和关闭连接。有没有解决的办法?换句话说,Java EE 应用程序是否可以使用类似于“套接字连接池”的东西?我必须使用类似 ESB 的东西吗?或者有没有我忽略的替代方案?

4

1 回答 1

1

执行此操作的“正确”方法是为您的外部服务器编写一个JCA 连接器。JCA 是 Java EE 堆栈的一部分,其目的正是为了:提供从应用服务器到外部系统的入站和出站连接。它支持身份验证、事务等(数据库和 JMS 代理是通过 JCA 连接器访问的,顺便说一句)。

然而,编写这样的适配器可能非常困难。也许研究一种轻量级的方法,通用池库(也许你在 commons-pool 或 c3p0 中发现一些有趣的东西)可能更容易。

也看看这个关于 TCP 连接池的答案。

于 2010-03-03T08:26:52.527 回答