try {
PoolManager poolmgr = ConnectorRuntime.getRuntime().getPoolManager();
ConnectorRegistry registry = ConnectorRegistry.getInstance();
PoolMetaData pmd = registry.getPoolMetaData(poolInfo);
ResourceSpec spec = new ResourceSpec(jndiNameToUse,
ResourceSpec.JNDI_NAME, pmd);
spec.setPoolInfo(this.poolInfo);
ManagedConnectionFactory freshMCF = pmd.getMCF();
if (getLogger().isLoggable(Level.INFO)) {
if (!freshMCF.equals(mcf)) {
getLogger().info("conmgr.mcf_not_equal");
}
}
ConnectorDescriptor desc = registry.getDescriptor(rarName);
Subject subject = null;
ClientSecurityInfo info = null;
boolean subjectDefined = false;
if (isUnknownAuth && rarName.equals(ConnectorConstants.DEFAULT_JMS_ADAPTER)
&& !(pmd.isAuthCredentialsDefinedInPool())) {
//System.out.println("Unkown Auth - pobably nonACC client");
//Unknown authorization. This is the case for standalone java clients,
//where the authorization is neither container nor component
//managed. In this case we associate an non-null Subject with no
//credentials, so that the RA can either use its own custom logic
//for figuring out the credentials. Relevant connector spec section
//is 9.1.8.2.
//create non-null Subject associated with no credentials
//System.out.println("RAR name "+ rarName);
subject = ConnectionPoolObjectsUtils.createSubject(mcf, null);
} else {
if (prin == null) {
info = new ClientSecurityInfo(cxRequestInfo);
} else {
info = new ClientSecurityInfo(prin);
if (prin.equals(defaultPrin)) {
subject = pmd.getSubject();
} else {
subject = ConnectionPoolObjectsUtils.createSubject(mcf, prin);
}
}
}
int txLevel = pmd.getTransactionSupport();
if (getLogger().isLoggable(Level.FINE)) {
logFine("ConnectionMgr: poolName " + poolInfo +
" txLevel : " + txLevel);
}
if ( conn != null ) {
spec.setConnectionToAssociate( conn );
}
return getResource(txLevel, poolmgr, mcf, spec, subject, cxRequestInfo, info, desc, shareable);