innanzi tutto grazie mille r@ve sei veramente un grande e disponibilissimo come tutti gli altri di questo forum.
ho impostato il session come mi hai suggerito te (entrambi i campi devono essere obbligatoriamente compilati per effettuare la ricerca) perciò ho preso il secondo metodo che mi hai scritto (ho fatto solamente una piccola modifica perchè lo status è un char, infatti nella servlet ho dovuto prelevarmi solamente il char che mi occorreva).
Perciò adesso questo è il mio session:
codice:
public List<VRicercaAggrCodDispaccio> findDispByFrazionarioAndStatus(String frazionario, char status) {
Query q = em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.frazionario = :frazionario AND d.status = :status");
q.setParameter("frazionario", frazionario);
q.setParameter("status", status);
return q.getResultList();
}
Non ho capito bene il fatto della variabile q, ma fa un ovverride del primo valore cioè frazionario o può memorizzare entrambi i valori???
apparte questa cosa.
questa è la mia servlet:
codice:
String stringFrazDisp = request.getParameter("frazionario");
System.out.println("Frazionario: " + stringFrazDisp);
String stringStatDisp = request.getParameter("status");
System.out.println("Status: " + stringStatDisp);
char status = stringStatDisp.charAt(0);
System.out.println("Carattere prelevato dalla String: " + status);
List frazStatDisp = controllerDao.findByFrazionarioAndStatusDisp(stringStatDisp, status);
Iterator i = frazStatDisp.iterator();
request.setAttribute("frazStatdisp", i);
if (frazStatDisp != null) {
request.getRequestDispatcher("/frazStat_disp.jsp").forward(request, response);
} else {
request.getRequestDispatcher("/error.jsp").forward(request, response);
}
i System mi servivano solamente per vedere se i valori erano corretti
e questo è il metodo del mio controller:
codice:
richiamo l'ejb
@EJB
private VRicercaAggrCodiceFacadeLocal vRicercaAggrCodiceFacade;
ed utilizzo questo metodo:
public List findByFrazionarioAndStatusDisp(String frazionario, char status) {
return vRicercaAggrCodDispaccioFacade.findDispByFrazionarioAndStatus(frazionario, status);
}
ma al momento in cui chiamo il metodo mi da questo errore:
codice:
AVVERTENZA: A system exception occurred during an invocation on EJB ControllerDao method public java.util.List controller.ControllerDao.findByFrazionarioAndStatusDisp(java.lang.String,char)
javax.ejb.AccessLocalException: Client not authorized for this invocation.
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1801)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:188)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
at $Proxy127.findByFrazionarioAndStatusDisp(Unknown Source)
at servlet_findBy.FindByFrazStatDisp_srv.processRequest(FindByFrazStatDisp_srv.java:33)
at servlet_findBy.FindByFrazStatDisp_srv.doGet(FindByFrazStatDisp_srv.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
AVVERTENZA: StandardWrapperValve[FindByFrazStatDisp_srv]: PWC1406: Servlet.service() for servlet FindByFrazStatDisp_srv threw exception
javax.ejb.EJBAccessException
at com.sun.ejb.containers.BaseContainer.mapLocal3xException(BaseContainer.java:2213)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2004)
at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1906)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
at $Proxy127.findByFrazionarioAndStatusDisp(Unknown Source)
at servlet_findBy.FindByFrazStatDisp_srv.processRequest(FindByFrazStatDisp_srv.java:33)
at servlet_findBy.FindByFrazStatDisp_srv.doGet(FindByFrazStatDisp_srv.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:619)
Caused by: javax.ejb.AccessLocalException: Client not authorized for this invocation.
at com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1801)
at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:188)
... 30 more
cosa sbaglio?