Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Progetto Eclipse EJB + Servlet e Glassfish

    Salve a tutti,

    sto cercando di far funzionare un semplice EJB con una Servlet che lo richiama, all'interno di un progetto Eclipse, affinché poi giri su Glassfish.

    Mi riferisco a questo esempio.

    Per prima cosa creo il progetto di tipo EJB in Eclipse.

    Poi creo la classe ConverterBean dentro il package converter.ejb e la classe ConverterServlet all'interno del package converter.web.

    A questo punto se faccio partire il progetto su Glassfish riesco a fare il deploy del Bean senza problemi (anche perché credo che crei un file .jar che poi verrà deployato), ma non riesco a far sì che la Servlet sia eseguita e quindi non è raggiungibile (di solito faccio il deploy di file .war quando ho solo delle servlet, e creo un altro tipo di progetto in Eclipse).

    In realtà, e ciò forse mi sembra anche normale, se provo a creare una Servlet dentro un progetto EJB, non me lo fa fare. Ho provato anche a creare un progetto separato, ma poi non mi vede l'EJB. Ma anche se gli do come riferimento l'altro progetto contenente l'EJB, poi la Servlet non funziona.

    In javaee-tutorial, nel progetto viene utilizzato ant, ma io vorrei farlo solo con Eclipse. Dove sbaglio?

  2. #2
    Per comodità si usa pacchettizzare tutto dentro un unico archivio chiamato ear che conterrà sia il progetto ejb e che il progetto web dinamico.

    Crea prima un Enterprise Application Project che compilerà l'ear, qui setterai anche i dati relativi al server glassfish.
    Poi crea un progetto EJB, ti chiederà se vuoi inserirlo in un era e selezionerai il progetto precedente.
    Poi crea un progetto web dinamico, anche in questo caso segnala di volerlo inserire nell'ear.

    Infine vai nella proprietà del progetto web dinamico, e nei project references seleziona il progetto EJB, in modo da vedere le interfacce esposte.

    E sei a posto!

    Ovviamente per vedere l'applicazione girare devi fare la build e il run del progetto enterprise application.
    ...

  3. #3
    Grazie per la risposta.

    Niente da fare però. Ci ho provato ed in effetti ora riesco a fare il deploy di EJB e Servlet in una botta sola ma quando vado su http://127.0.0.1:8080/ConverterServlet/ mi dice sempre "The requested resource () is not available.".
    Inoltre quando creo il progetto EJB mi crea anche un progetto con lo stesso nome ma con il suffisso Client (che di fatto è vuoto).
    Nella lista delle applicazioni deployate c'è sia il .jar dell'EJB che il .war contenente la Servlet.

    Inoltre nelle proprietà del progetto che contiene la Servlet, ho dovuto referenziare il progetto EJB in Java Build Path->Projects. Se lo facevo in Project References, non funzionava, non potevo compilare nulla, poiché il package contenente l'EJB non era visibile.

  4. #4
    Quando crei un progetto EJB ti crea anche un progetto client, tu lo devi cancellare perché il progetto client non è web.

    Inoltre tieni presente che se il progetto EJB non contiene almeno un EJB non parte neanche sotto tortura.

    Tu segui i passaggi che ti ho indicato prima, cancella il progetto client creato quando hai creato il progetto EJB e crea al suo posto un progetto web dinamico (da aggiungere a quello enterprise) e referenzia quest'ultimo con il progetto EJB.

    Ho appena provato e funziona a meraviglia. Per vedere l'applicazione nel browser l'indirizzo sarà: http://localhost:8080/[Nome progetto war]
    ...

  5. #5
    Originariamente inviato da Caiodark
    Quando crei un progetto EJB ti crea anche un progetto client, tu lo devi cancellare perché il progetto client non è web.
    Eh, ma in effetti è quello che ho fatto istintivamente la prima volta, poi ho cancellato tutto e rifatto da capo. Il problema è che quando andavo a fare il deploy mi dava che mancava il progetto client. In realtà poi ho capito che me l'aveva incluso automaticamente nell'EAR. Comunque è appurato che non serve per i suddetti motivi.

    Originariamente inviato da Caiodark
    Inoltre tieni presente che se il progetto EJB non contiene almeno un EJB non parte neanche sotto tortura.
    Ovvio... Contiene un EJB.

    Originariamente inviato da Caiodark
    Tu segui i passaggi che ti ho indicato prima, cancella il progetto client creato quando hai creato il progetto EJB e crea al suo posto un progetto web dinamico (da aggiungere a quello enterprise) e referenzia quest'ultimo con il progetto EJB.

    Ho appena provato e funziona a meraviglia. Per vedere l'applicazione nel browser l'indirizzo sarà: http://localhost:8080/[Nome progetto war]
    E a me non funziona porca zozza!

  6. #6
    Io ho eclipse indigo, mi sono dovuto scaricare l'engine per glassfish perché non era installato di default.

    Potrei inviarti i progetti per email se vuoi darci un'occhiata
    ...

  7. #7
    OK, ti ringrazio, ma aspetta un secondo. Mi sembra assurdo che non funzioni, anche io ho Eclipse Indigo.
    Ecco le operazioni che faccio, passo passo (Glassfish è già partito):

    • New->Enterprise Application Project con nome "Converter" (per il momento lascio tutto con le opzioni di default).
    • New->EJB Project con nome ConverterEJB. Lascio tutto come default ma setto "Add Project to an EAR->Converter".
    • Cancello il progetto ConverterEJBClient
    • Creo il progetto ConverterServlet (New->Dynamic Web Project) e faccio altrettanto settando "Add Project to an EAR->Converter
    • Cancello il file index.jsp creato automaticamente in WebContent nel progetto della Servlet.
    • Creo il Session Bean ConverterEJB nel progetto EJB nel package converter.ejb copiando il codice dell'esempio.
    • Creo la Servlet ConverterServlet nel progetto web dinamico nel package converter.web, sempre copiando il codice d'esempio.
    • Vado nelle proprietà di ConverterServlet (Progetto) -> Java Build Path e aggiungo ConverterEJB (Project). (Se vado su References e seleziono ConverterEJB, mi continua a non trovare la classe ConverterBean).


    A questo punto vado nel progetto EAR Converter, tasto destro->Run As-> Run on Server->Glassfish e ottengo quanto segue, all'indirizzo http://localhost:8080/ConverterServlet/:
    codice:
    HTTP Status 404 -
    
    type Status report
    
    message
    
    descriptionThe requested resource () is not available.
    GlassFish Server Open Source Edition 3.1.2
    Ecco il log, che compare nella console di Eclipse.
    Inoltre nella console di amministrazione di Glassfish sotto la voce "List Deployed applications" compare Converter, dove mostra sia l'EJB che la Servlet.

    Sembra tutto OK, ma non funziona nulla.

  8. #8
    Se hai cancellato index.jsp devi indicare nel web.xml un welcome file altrimenti non sa cosa caricare quando chiami la root.
    Per essere sicuro che il tuo progetto funzioni prova a chiedere la pagina:

    http://localhost:8080/ConverterSevlet/ConverterServlet
    ...

  9. #9
    No, ancora non funziona. Nemmeno usando l'URL diretto che mi hai suggerito.
    Se lascio il file index.jsp, quest'ultimo viene caricato. Ho anche provato a inserire un <welcome-file>ConverterServlet</welcome-file> in web.xml, ma non ha sortito alcun effetto.

  10. #10
    Scusa ma nel web.xml la Servlet come è mappata ?

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.