gpt4 book ai didi

java - 从非托管环境访问 Java 连接器架构 (JCA)

转载 作者:行者123 更新时间:2023-12-01 16:05:12 25 4
gpt4 key购买 nike

我们一直在使用 JCA 与 WebSphere 内部的低级网络资源进行交互,但是我们需要能够从 Tomcat 外部访问相同的网络资源(即不在托管环境中)。网络通信和协议(protocol)布局非常冗长,因此我们宁愿不复制/粘贴几千行代码(然后必须单独维护它们)。

通过阅读 JCA 规范,据说有一些支持在非托管环境(例如 Tomcat)中执行代码。不幸的是,我不知道这些接口(interface)应该做什么,或者如何从托管环境外部调用它们(规范相当模糊)。

是否有任何实现示例展示如何修改 JCA 以使其可在非托管环境中使用?

谢谢!

最佳答案

我们有类似的案例,我们开发了一个连接器来访问外部 WebDav 存储,并且希望也从独立应用程序(非托管)使用它。

我确实相信,最简单的方法是在设计级别解决这个问题,并以连接器的核心逻辑与 JCA 无关并且可以轻松重用的方式组织代码。然后,您可以使用 JCA 特定的代码来包装它,将连接器公开给 AS。它甚至可能打包在两个 jar 中——这至少是我们选择的解决方案(但我们将所有内容打包在一个 .jar 中)。

否则,JCA 连接器是以下三方之间的“粘合剂”:

  1. 应用程序服务器
  2. EIS
  3. 应用程序组件。

应该可以通过必要类的轻量级实现来模拟 AS,然后直接使用 JCA 连接器。

AS 对于 JCA 连接器的一项主要工作是管理连接池,据我所知,您应该实现的相应接口(interface)是 ConnectionManager

JCA 连接器接收对 ConnectionManager 的引用,但实现是特定于 AS 的。编写一个提供基本池化(或根本不池化)的轻量级实现听起来是可行的。

我曾写过一次sequence diagram of the connection allocation机制。也许你会发现它很有用。另一个接口(interface)是 ResourceAdapter,您可以在其中定义启动/关闭,但手动调用很容易。

(可能不止于此,这当然取决于您的 JCA 连接器使用的内容。例如,如果它使用 WorkWorkManager,那么模拟就会变得更加复杂。如果连接器是事务性的,则同样的评论。但它似乎不是你的情况。)

否则,我认为Spring对JCA有一些支持,可能值得看看他们是如何做到的。

From reading the JCA spec, there is supposedly some support to execute the code in a non-managed environment

您能提及您所指规范的具体部分吗?

关于java - 从非托管环境访问 Java 连接器架构 (JCA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2760251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com