code: public static JdbcCpoAdapter getInstance(JdbcCpoMetaDescriptor metaDescriptor, DataSourceInfo<DataSource> jdsiWrite, DataSourceInfo<DataSource> jdsiRead) throws CpoException {
      String adapterKey = metaDescriptor + ":" + jdsiWrite.getDataSourceName() + ":" + jdsiRead.getDataSourceName();
      JdbcCpoAdapter adapter = (JdbcCpoAdapter) findCpoAdapter(adapterKey);
      if (adapter == null) {
        adapter = new JdbcCpoAdapter(metaDescriptor, jdsiWrite, jdsiRead);
        addCpoAdapter(adapterKey, adapter);
      }
      return adapter;
    }
docs: Creates a JdbcCpoAdapter.
  
  @param metaDescriptor This datasource that identifies the cpo metadata datasource
  @param jdsiWrite      The datasource that identifies the transaction database for write transactions.
  @param jdsiRead       The datasource that identifies the transaction database for read-only transactions.
  @throws org.synchronoss.cpo.CpoException
  exception