【问题标题】:Java Multithreaded TCP socket/JDBC connectionJava 多线程 TCP 套接字/JDBC 连接
【发布时间】:2015-07-24 15:59:44
【问题描述】:

我有两个系统(在不同平台上)需要实时相互通信的要求。我们决定在两个应用程序之间使用 Java Socket Connection。我将构建一个 Java 套接字服务器,它从 Java 客户端(位于另一个系统上)接收消息(客户 ID),并且套接字服务器返回该客户 ID 的客户忠诚度 ponts。要获得忠诚度积分,需要与数据库建立 jdbc 连接。我想知道以下内容

  • 应用服务器已经安装了Weblogic,我可以在Weblogic中部署我的java socket服务器吗?
  • 服务器是多线程的,每次新客户端建立连接时,都会为每个新连接创建一个新线程。我假设它将为每个新线程创建一个新的 JDBC 连接。对吗?
  • 如何管理连接池(socket/jdbc)?

【问题讨论】:

  • 为什么不使用 RESTful 架构?
  • 我们连接的两个系统是 AS400 Till 控制器和 Oracle。这将在全国各地的零售店中使用,这就是为什么我们需要可以实时工作的东西。通过 TCP 套接字连接,AS400 可以使用套接字客户端和服务器套接字将卡号/客户 ID 发送到安装了 oracle 的主机,然后可以使用 jdbc 连接到 Oracle 检索点并将其发送回套接字客户端。希望它有助于理解我们为什么使用 TCP 连接。

标签: java sockets jdbc tcp


【解决方案1】:

您可以在任何 Java EE 服务器中通过 JCA 公开服务器套接字。也许你甚至不需要自己实现它:JCA Sockets

对于 Java EE 服务器,客户端也可以通过 RMI 连接到某些 EJB。但这通常涉及使用应用程序服务器特定的库。因此,如果您的应用程序必须在不同的服务器上运行,这可能不是一个选择。

线程为您处理 - 完全。传入调用(通过 JCA 或 RMI)通常使用工作线程(由服务器提供)。

还会为您处理连接池。对于您的 TCP 服务器,您不需要它,您只有一个服务器套接字,仅此而已。对于 JDBC 连接,通常在 Java EE 服务器中配置池,并且您会在需要时获得每个事务的连接(不是每个线程,但连接通常绑定到绑定到线程的事务)(即一些 DataSource.getConnection() [直接或通过其他方式,例如 JPA])。

除此之外:您始终可以使用 REST 或 SOAP 连接到您的服务器。

【讨论】:

  • 感谢您提供详细信息。我假设池和连接管理应该由服务器处理。
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 2020-03-28
  • 2016-07-23
  • 2021-09-10
相关资源
最近更新 更多