Which solution should I use for connection pooling
The answer to this question depends on the environment of your Java Application.
If you have an old application that already uses a JDBC driver with the DriverManager then you should use the pooled driver. You only need to change the JDBC URL and the Class.forName() parameter.
If you have a standalone application and you want to use a different driver that supports ConnectionPoolDataSource or DataSource then the solution with PoolManager and PDataSource is the best solution.
If you use an application server (like J2EE) then you should use the environment of the application with the XADataSource (see sample sample.xa).