EJB Firebird Glassfish

nickname
04 de Septiembre del 2009
Hola compañeros foristas...

Estoy desarrollando un proyecto con EJB 3, mi base de datos es Firebird 2.1, el servidor de aplicaciones es Glassfish, del lado de la presentacion es Jsf 1.2 con Icefaces 1.8.

Tengo un EJB donde hago la siguiente consulta:
<code>
public List<ServicioProveedor> getPorLetra(Object letra, int posicionInicio, int tamañoFragmento) {
return em.createQuery("select object(o) from ServicioProveedor as o WHERE o.servicio.nombre LIKE :letra ORDER BY o.servicio.nombre ASC")
.setParameter("letra", letra.toString().toUpperCase() + "%")
.setFirstResult(posicionInicio)
.setMaxResults(tamañoFragmento)
.getResultList();
}
</code>
El problema es que cuando ejecuto mi aplicacion y ejecuto la consulta varias veces de repente me manda el siguiente error:
<code>
javax.ejb.EJBException: nested exception is: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.RemoteException: null; nested exception is:
Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b04-fcs (04/11/2008))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: org.firebirdsql.jdbc.FBDriverNotCapableException: Not yet implemented.
Error Code: 0
</code>

Al ejecutar el metodo para ejecutar la consulta lo que hace es ejecutarla y recargar la misma pagina para que muestre los mismos datos:
<code>
public String next() {
if (primerRegistro + tamañoFragmento < this.totalRegistros) {
primerRegistro += tamañoFragmento;
}
this.ejecutarFiltro(filtroSeleccionado);
return "catalogoServicios";
}
</code>

el metodo ejecutar filtro:
<code>
private void ejecutarFiltro(String tipoFiltro) {
switch (ComandoFiltro.getOpcion(tipoFiltro)) {
case Proveedores:
this.listaDatos = new ListDataModel(this.servicioProveedorBean.getPorProveedorLetra(this.elementoSeleccionado, this.letraCatalogo, this.primerRegistro, this.tamañoFragmento));
this.indice = this.primerRegistro;
this.totalRegistros = this.servicioProveedorBean.getTotalServiciosPorProveedorLetra(this.elementoSeleccionado, this.letraCatalogo);
break;
case Convenios:
this.listaDatos = new ListDataModel(this.servicioProveedorBean.getPorConvenioLetra(this.elementoSeleccionado, this.letraCatalogo, this.primerRegistro, this.tamañoFragmento));
this.indice = this.primerRegistro;
this.totalRegistros = servicioProveedorBean.getTotalServiciosPorConvenioLetra(this.elementoSeleccionado, this.letraCatalogo);
break;
case Todos:
this.listaDatos = new ListDataModel(this.servicioProveedorBean.getPorLetra(this.letraCatalogo, this.primerRegistro, this.tamañoFragmento));
this.indice = this.primerRegistro;
this.totalRegistros = servicioProveedorBean.getTotalServiciosPorLetra(this.letraCatalogo);
break;
default:
System.out.println("error");
break;
}
}
</code>

La ejecucion va bien solo algunas veces pero despues de varias ejecuciones lanza el error antes comentado... Yo la verdad no se si sea problema de Firebird o de la vista (JSF, ICEfaces)... Si alguien aya utilizado esta combinacion y tenga alguna idea de que es lo que estoy haciendo mal que me pueda iluminar un poco se lo agradeceria mucho...