It should be possible to drop the DefaultDataSourceProvider Service interface and simply replace with with serviceLoader.onlyOne(DataSourceProvider.class, JndiDataSourceProvider.class).

That will use JndiDataSourceProvider if no other DataSourceProvider is found