The resource definition in tomcat\'s server.xml looks something like this...
Note:
You can use WinDPAPI to encrypt and decrypt data
public class MyDataSourceFactory extends DataSourceFactory{
private static WinDPAPI winDPAPI;
protected static final String DATA_SOURCE_FACTORY_PROP_PASSWORD = "password";
@Override
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable environment) throws Exception{
Reference ref = (Reference) obj;
for (int i = 0; i < ref.size(); i++) {
RefAddr ra = ref.get(i);
if (ra.getType().equals(DATA_SOURCE_FACTORY_PROP_PASSWORD)) {
if (ra.getContent() != null && ra.getContent().toString().length() > 0) {
String pwd = getUnprotectedData(ra.getContent().toString());
ref.remove(i);
ref.add(i, new StringRefAddr(DATA_SOURCE_FACTORY_PROP_PASSWORD, pwd));
}
break;
}
}
return super.getObjectInstance(obj, name, nameCtx, environment);
}
}