从非托管环境访问Java连接器体系结构(JCA)

时间:2010-05-03 18:26:18

标签: java java-ee jca

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

通过阅读JCA规范,可以支持在非托管环境(例如Tomcat)中执行代码。不幸的是,我不知道接口应该做什么,或者如何从托管环境之外调用它们(规范非常模糊)。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

我确信最简单的方法是在设计层面解决这个问题,并以连接器的核心逻辑与JCA无关并且可以轻松重用的方式组织代码。然后,您可以使用特定于JCA的代码来包装它,该代码将连接器公开给AS。它甚至可以包装在两个罐子里 - 这至少是我们选择的解决方案(但我们将它们打包在一起.jar)。

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

  1. Application Server
  2. EIS
  3. 应用程序组件。
  4. 应该可以使用必要类的轻量级实现来模拟AS,然后直接使用JCA连接器。

    AS关于JCA连接器的一个主要工作是管理连接池,并且从我记忆中,您应该实现的相应接口是ConnectionManager

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

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

    (可能还有更多,它当然取决于你的JCA连接器使用的内容。例如,如果它使用WorkWorkManager,那么它会变得更多如果连接器是事务性的,那么同样的注释。但它似乎不是你的情况。)

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

      

    从阅读JCA规范,有   据说有一些支持来执行   非托管环境中的代码

    您能否提及您所指的规格的具体部分?