Salve a tutti!
Ho realizzato un progetto in j2ee (su NetBeans), si tratta di un prototipo di un sito.

Ho creato la parte della persistenza seguendo questa guida http://code.google.com/p/barattalo/wiki/PageName e tutto funziona senza problemi.

Nel senso che la pagina jsp propone, per esempio, il form di iscrizione

codice:
<form action="ServletIscrizione">
    Nome: <input type='text' name='nome' />

    Cognome: <input type='text' name='cognome' />

    Citta': <input type='text' name='citta' />

    Indirizzo: <input type='text' name='indirizzo' />

    Email: <input type='text' name='email' />


    <input type="submit" name="inviaIscrizione" value="Invia"/>
</form>
che rimanda alla servlet dedicata. Questa gestisce l'operazione, interagisce con la parte della persistenza e memorizza l'utente, dando in output anche i dati appena inseriti:

codice:
[...]

@WebServlet(name="ServletIscrizione", urlPatterns={"/ServletIscrizione"})
public class ServletIscrizione extends HttpServlet {
    //questo è il bean che fornisce l'interfaccia per manipolare gli oggetti persistenti
    @EJB
    private GestoreProgettoBeanLocal gestoreProgettoBean;

[...]

        if (request.getParameter("inviaIscrizione")!=null){
            gestoreProgettoBean.addUtente([...]);
            out.println("appena aggiunto: "+gestoreProgettoBean.findUtente([...]));
        }
[...]
E fin qui tutto bene. Sostanzialmente la pagina JSP inoltra la richiesta alla Servlet che, avvalendosi di "gestoreProgettoBean" agisce sulla parte della persistenza. "GestoreProgettoBean" è, per l'appunto, un bean:

codice:
[...]

@Stateless
public class GestoreProgettoBean implements GestoreProgettoBeanLocal {

    @EJB
    private UtenteFacadeLocal utenteFacade;
    @EJB
    private BarattoFacadeLocal barattoFacade;
    @EJB
    private ItemFacadeLocal itemFacade;
    @EJB
    private MessaggioFacadeLocal messaggioFacade;


    //**********************************************
    //**********************************************
    //
    //      METODI PER MANIPOLARE ---UTENTE---
    //
    //**********************************************
    //**********************************************

    public String getProva(){
        return findUtenti().get(0).getOpenID();
    }

    public List<Utente> findUtenti() {
        List<Utente> listaUtenti = utenteFacade.findAll();
        return listaUtenti;
    }

[...]
Quello che vorrei, invece, è fare in modo che la JSP dialogi direttamente con "GestoreProgettoBean". Mi son detto: "è un bean, sarà sufficiente nella pagina JSP una riga di..."

codice:
<jsp:useBean id="bean" scope="session" class="oggettiPersistenti.GestoreProgettoBean" />
Solo che così mi funziona solo a metà:
se "GestoreProgettoBean" lo modifico aggiungendo

codice:
    private String stringadiprova="ciao";

    public String getStringadiprova() {
        return stringadiprova;
    }

    public void setStringadiprova(String stringadiprova) {
        this.stringadiprova = stringadiprova;
    }
Nella JSP basta inserire un

codice:
<jsp:getProperty name="bean" property="stringadiprova" />
Per farmi stampare a schermo il parametro.
Solo che se modifico così il getter

codice:
    @Stateless
    public class GestoreProgettoBean implements GestoreProgettoBeanLocal {

    @EJB
    private UtenteFacadeLocal utenteFacade;
    @EJB
    private BarattoFacadeLocal barattoFacade;
    @EJB
    private ItemFacadeLocal itemFacade;
    @EJB
    private MessaggioFacadeLocal messaggioFacade;

    private String stringadiprova="ciao";

    public String getStringadiprova() {
        return getProva();
    }

    public void setStringadiprova(String stringadiprova) {
        this.stringadiprova = stringadiprova;
    }

    //**********************************************
    //**********************************************
    //
    //      METODI PER MANIPOLARE ---UTENTE---
    //
    //**********************************************
    //**********************************************

    public String getProva(){
        return findUtenti().get(0).getNome();
    }

    public List<Utente> findUtenti() {
        List<Utente> listaUtenti = utenteFacade.findAll();
        return listaUtenti;
    }
Insomma, semplicemente voglio che mi restituisca il nome del primo utente registrato (e vi assicura che c'è). Quindi, nel momento in cui entrano in gioco azioni di persistenza il bean non funzona più e mi da quest'errore:

codice:
AVVERTENZA: StandardWrapperValve[jsp]: PWC1406: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
        at oggettiPersistenti.GestoreProgettoBean.findUtenti(GestoreProgettoBean.java:52)
        at oggettiPersistenti.GestoreProgettoBean.getProva(GestoreProgettoBean.java:48)
        at oggettiPersistenti.GestoreProgettoBean.getStringadiprova(GestoreProgettoBean.java:21)
        at org.apache.jsp.index_jsp._jspService(index_jsp.java from :74)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109)
[...]
Insomma, è come se mi dicesse "Ok, gioca quanto vuoi col tuo bean dalla jsp, ma se vuoi fare ricerche nel DB questa non è la strada giusta".
Cosa sto sbagliando? Perchè dalla servlet invece mi funziona? Tipo aggiungendo nella servlet

"out.println(gestoreProgettoBean.getStringadiprova ());"

funziona, mi stampa il nome del primo iscritto...

Scusate per la lunghezza, ma non sapevo come sintetizzare più di così...