Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193

    [J2EE] Riferimento a bean nullo nel client

    Salve, ho create una semplice applicazione enterprise, seguendo la guida del portale. Lato server nessun problema, il quale nasce invece lato client. Riporto il codice:

    codice:
    public class Main {
    
        @EJB
        private static LoginFacadeRemote loginFacade;
    
        public static void main(String[] args) {
            List<Login> list = loginFacade.findAll(); 
            for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i).toString());
            }
    
        }
    }
    Dove Login è un entitiBean e LoginFacadeRemote è l'interfaccia remota che permette le solite operazioni sul db, tipo creazione, modifica e lettura.
    Il problema è che ho un errore del tipo NullPointerException, in corrispondenza della riga in grassetto. Cioè quando cerco di riferire al bean loginFacade.
    Potete aiutarmi? Grazie in anticipo

  2. #2
    Il client che stai utilizzando e' un'applicazione stand-alone che non ha nessun riferimento ad un environment J2EE (il context utilizzato per recuperare i servizi JNDI).

    Quello che devi fare e' creare un Context con i parametri del tuo application server e poi su di esso invocare la chiamata alla factory EJB.

    http://java.html.it/guide/lezione/34...n-bean-client/

    Qui il codice per application server JBOSS.
    Saluti,
    Pasquale Congiustì.

  3. #3
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Grazie mille ancora, devo dire che sei molto esperto con J2EE. Ti posso porre due domande?

    1) A questo punto mi faresti un esempio di quando si utilizza l'annotazione @EJB? Perchè non capisco quando un applicazione non è stand-alone, quindi se non ho capito male gira insieme col server.

    2) Nel momento in cui dovrei distribuire la mia applicazione, se non ho capito male, nel server dovrò mettere il file .ear e il file .jar relativa all'applicazione server ed il .jar relativo all'ejb. Mentre nel client dovrò distribuire solo il jar del client?

    Grazie in anticipo

  4. #4
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Ah, inoltre ho rivisto la guida e nello specifico il link che mi hai dato tu. Ma questa è relativa a EJB 2.0, invece io dovrei utilizzare qualcosa del genere:

    codice:
    InitialContext ctx = new InitialContext();
    LoginFacadeRemote loginFacade = (LoginFacadeRemote) ctx.lookup(LoginFacadeRemote.class.getName());
    dove provando ho ottenuto un eccezione di NameNotFoundException

    Ciao e grazie ancora

  5. #5
    Originariamente inviato da salcam
    Grazie mille ancora, devo dire che sei molto esperto con J2EE. Ti posso porre due domande?

    1) A questo punto mi faresti un esempio di quando si utilizza l'annotazione @EJB? Perchè non capisco quando un applicazione non è stand-alone, quindi se non ho capito male gira insieme col server.

    2) Nel momento in cui dovrei distribuire la mia applicazione, se non ho capito male, nel server dovrò mettere il file .ear e il file .jar relativa all'applicazione server ed il .jar relativo all'ejb. Mentre nel client dovrò distribuire solo il jar del client?

    Grazie in anticipo
    1) Esatto, l'annotazione va a recuperare le informazioni dal server su cui sta girando. Quindi, ad esempio la userai in un altro EJB o in una servlet.

    2) Si, il deploy avviene lato server. Il client e' stand-alone pero' dovra' avere anche le librerie del context che stai usando (di JBOSS in questo caso).
    Saluti,
    Pasquale Congiustì.

  6. #6
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Ok son riuscito ad arrivare ad una soluzione, ancora grazie.

    L'unica cosa che ancora non mi è chiara è come fare a distribuire la mia applicazione. Io utilizzo Netbeans e ho visto che mi crea quando faccio il Build, un file ear. Supponiamo che io devo installare questa applicazione in due computer "java-vergini" (nel senso che non c'è installato nulla nè server nè java), come mi devo comportare se voglio installare in uno l'applicazione completa (cioè il server per gestire il db ed il client) e nell'altro solo il client? Naturalmente dovrò installare la jre e poi?

  7. #7
    Il client lo puoi costruire separatamente, in un altro progetto e poi esportarne il Jar per permettere l'esecuzione sui client (che devono avere JRE).

    Sul server ci installi l'application server ed effettui il deploy dell'ear (un ear e' un insieme di jars e wars) che sara' pronto ad eseguire la logica che ci hai costruito su.
    Saluti,
    Pasquale Congiustì.

  8. #8
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Scusami ancora se rompo....
    Quindi io che utilizzo NetBeans, che ha associato GlassFish, dovrei installare nella macchina Server, GlassFish, e poi da qui fare il deploy del file ear?

    Questo mi permette di avere solo il lato server installato giusto?

    Quindi poi dovrò aggiungere anche il jar del client, per avere su questa macchina il sistema completo?

    Grazie ancora e scusami per le troppe domande

  9. #9
    Fai una distinzione netta. Il server e' una cosa, il client un'altra.

    Sul server installi Glassfish (l'application server) e ci deploy sopra l'applicazione.
    Sul client (uno o n) ci installi il client. E' normale che la macchina server possa avere anche il client, ma non e' necessario per far funzionare l'architettura.
    Saluti,
    Pasquale Congiustì.

  10. #10
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Ho capito, mi sei stato di grandissimo aiuto.

    Grazie ancora e buon lavoro


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.