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:
Código:
El problema es que cuando ejecuto mi aplicacion y ejecuto la consulta varias veces de repente me manda el siguiente error: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(); }
Código:
Al ejecutar la consulta se recargar la misma pagina para que muestre el resultado: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
Código:
el metodo ejecutar filtro:public String next() { if (primerRegistro + tamañoFragmento < this.totalRegistros) { primerRegistro += tamañoFragmento; } this.ejecutarFiltro(filtroSeleccionado); return "catalogoServicios"; }
Código:
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 ah 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... 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; } }