I think you can pass collection as an object to calling client from Stored procedure. Its possible with Oracle data type CURSOR. example:
.
.
callStmt.registerOutParameter(index number, OracleTypes.CURSOR);
.
.
ResultSet rs = callstmt.getObject(index number);
while(rs.hasnext()){
// construct VO here
}
.
.
.
Hope it helps,