I don't know about the URL syntax or if this is helpful, but where is the username password?
The OracleDataSource() API states this for setUrl(String):
Set the URL from which connections have to be obtained. If URL is set all other properties like databasename, servername, portNumber, network protocol, tnsentry, and driver Type will be ignored.
The API also states
A JDBC driver that is accessed via the DataSource API does not automatically register itself with the DriverManager.
Which I think means you would need to explicitly call setDriverType(String) on the "ods" reference.
So I suspect even if you have it in listener.ora, it will not be used when using this method of getting a connection.
Maybe you need to set some additional connect properties when using Oracle driver API direct method of connecting as proposed to using the DriverManager or JNDI?