Причина, по которой никто не показывает примеры того, как реализовать DataSource, а "просто" использует их вместо этого, заключается в том, что только поставщики драйверов JDBC (обычно производители баз данных) должны писать их.
Что он должен делать, это, конечно,вернуть объект Connection, который также должен быть экземпляром класса драйвера.В вашем случае, что-то, что может принимать операторы SQL для чтения из файла.
Ваш код может выглядеть примерно так:
public Connection getConnection(){
final String fileName = getFileNameFromMyDatabaseUrl();
return new MyFileConnection(new File(fileName));
}
Что, конечно, тоже не очень интересный код.
Вы можете посмотреть на некоторые реализации DataSource с открытым исходным кодом, чтобы увидеть, что они делают: