Do you actually mean that you do not wan't to use ODE's internal collision detection and use e.g. Java side collision detection library (this means that you must know ODE very well)? ODE's own collision library is quite good and it works nicely with ODE itself so I suggest you use it.
That is correct. I've used ODE on a couple of other private projects as C code. OPCODE is quite poor when dealing with large numbers of collidable objects - particularly when I need to know exact collision points on complex geometry. I have some other pure-java libraries that I've already written that I want to take advantage of.
In addition, I'd like to also be able to integrate it with simpler collision detection from non-physical objects. Think about simple ray-casting style picking to perform the collision detection. In particular this is used for some underwater vehicle modelling that we have to do for a project here. Without getting into the details, we're doing sonar modelling that will generate our "collisions" that will then be fed back into the physics model used to model the vehicle. A similar application could be used to drive a land-based automous robot, for example (not that this is what we're currently doing, but probably more familiar to most people here as an agent). You want the object to obey the basic laws of physics about turning/toppling/grip etc, but they don't want to do something at the point they've already collided with another object, but some time beforehand.