code: private final int registerXAResourceInfo(ActivationConfig config) throws UnavailableException {
          if (transactionManager == null)
              throw new UnavailableException(EmbeddableWebSphereTransactionManager.class.getName());
  
          // Transaction service will use the filter we provide to query the service registry for an XAResourceFactory.
          String filter = FilterUtils.createPropertyFilter(ID, id);
          // Pre-serialize resource info so that the transactions bundle can deserialize
          // back to the pre-serialized form without without having access to classes in our bundle.
          // Need to use List<Byte> instead of byte[] because XARecoveryWrapper does a shallow compare.
          ArrayList<Byte> resInfo;
          try {
              byte[] bytes = Utils.serObjByte(config);
              resInfo = new ArrayList<Byte>(bytes.length);
              for (byte b : bytes)
                  resInfo.add(b);
          } catch (IOException x) {
              throw new IllegalArgumentException(x);
          }
          int recoveryToken = transactionManager.registerResourceInfo(filter, resInfo);
          return recoveryToken;
      }
docs: Register XA resource information with the transaction manager.
  
  @param config Object containing information necessary for producing an XAResource object using the XAResourceFactory.
  @return the recovery ID (or -1 if an error occurs)
  @throws UnavailableException if the transaction manager is not available.