Java连接器架构(JCA)有什么用途?

4
我正在尝试使用SDK zip API提取ZIP文件。我直接在我的服务类中编写了解压缩代码,但我的架构师说代码必须转移到另一个模块,并应使用JCA(Java Connector Architecture)实现。我不理解JCA的用途。他说这是Java EE原则。所有外部系统,如文件系统,都应使用JCA进行访问。
如果是这样的话,那数据库呢?它也是我的Java应用程序的外部资源。为什么不使用JCA来访问数据库?
我完全不理解其重要性和优势。我试图在线阅读,但没有找到任何解释其优点的页面。此外,没有好的教程可以逐步解释开发过程。大多数链接都已失效。
请问这是为什么?

看一下https://xadisk.java.net/。这是一个支持事务的JCA连接器,用于文件访问。 - Thomas Stets
一个非常好的JCA介绍视频:https://www.youtube.com/watch?v=0mzd5c6oqQI - berezovskyi
2个回答

3
JCA是一种“用于连接传统系统的通用架构”,主要用于较大的、类似于大型机的系统(例如SAP)。
当您解压缩文件或访问文件系统时,绝对不会使用它。
听起来你的老师有些困惑。

2
由于JEE不允许直接访问文件系统,因此需要使用JCA连接器来访问文件。根据所使用的连接器,甚至可以具有XA事务支持(请参阅https://xadisk.java.net/)。 - Thomas Stets

1

JCA是资源实现者应该使用的连接器架构,用于将他们的资源适配器(RA)集成到Java EE应用服务器中。

您的架构师要求您为资源管理制作一个RA。这很干净,但可能过度了。

使用资源适配器的主要好处是在应用程序服务器事务工作流中进行清洁集成。

请查看理解资源适配器以获取更多信息。

但是,如果您只是读取ZIP文件而没有进行任何修改,则不值得花费精力。

请注意,有些人已经编写了一个通用的文件系统RA,您可以使用文件资源适配器。也许它可以作为现成的帮助,或者至少是理解如何制作RA的良好起点。


我们还使用Java XATransaction支持。我们将一些数据持久化到数据库中。如果持久化失败,则解压缩应该回滚。因此,在连接到包括XA事务的遗留系统时,我们应该使用JCA吗?此外,我们用于解压缩的文件系统位置是一个挂载的文件系统。我认为这就是我们的架构师建议使用JCA的原因。 - Krishna Chaitanya
每当在单个事务中修改2个或更多资源时,XA是必需的。因此,您必须为支持XA(http://en.wikipedia.org/wiki/Two-phase_commit_protocol)编写RA以进行zip文件,这在文件系统上实现起来非常困难。请参见Thomas Stets在https://xadisk.java.net/上的评论,看起来很有前途。 - nomoa
有没有好的教程可以从头到尾地解释开发过程,以及我们在JCA中需要实现的接口?上面的链接并没有类似教程的东西。 - Krishna Chaitanya
这个可能是:http://www.mastertheboss.com/jboss-frameworks/ironjacamar/create-your-first-jca-connector-tutorial。但你真的应该尝试使用现有的连接器。 - nomoa
我们已经有一个了。但是我什么也不懂。我只是在没有深入了解的情况下使用它。我已经学习了jboss教程,但是并没有理解很多。此外,下载代码的链接已经失效了。 - Krishna Chaitanya
这是一个复杂的任务,尤其是如果你不熟悉J2EE内部(XA/JTA)。我建议你使用xadisk作为RA(请参阅xadisk文档),将你的zip操作代码留在应用程序中,但是不要使用FileInputStream/FileOutputStream,而是使用xadisk @Resource来读写文件系统中的zip。 - nomoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接