I want to connect to XYZ should I use JCA?
JCA is the current standard for connecting to legacy systems. It is typically used when you have one of the following requirements:
You need the work done in a legacy system to be part of the same transaction as your ejbs/servlets
You want to pass/configure security information from the J2EE server to the legacy system.
You need pooling. I mean do you really need it? Is the communication expensive, i.e. stateful.
You absolutely have to have a container-independent deployment mechanism.
If you have none of the above requirements you will probably find an MBean is easier to code than a ResourceAdapter. MBeans do not suffer from the restrictions of J2EE session and entity beans; they can load native classes, talk over RMI, advertise resources via JNDI, etc. However, unlike JCA 'rar' files, there is no standard deployment mechanism for deploying an MBean.