The document is correct, the Oracle JDBC driver is the problem.
There's 2 possible solutions:
First one, use getObject:
oracle.sql.TIMESTAMP ts = (oracle.sql.TIMESTAMP) res.getObject("last_update");
agent.setLastUpdate(new Date(ts.dateValue().getTime()));
The second is to add a VM argument to your app:
-Doracle.jdbc.J2EE13Compliant=true
This will make the driver return java.sql.Timestamp
instead of oracle.sql.TIMESTAMP
.