Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    2

    Problema EJB + Application Client + Enterprise Application

    Buon pomeriggio a tutti.
    Vi scrivo per chiedervi cortesemente un supporto per quanto riguarda EJB.
    Ho una Enterprise Application che ha al suo interno un modulo WEB: navigando nell'applicazione WEB è possibile richiamare una Application Client che a sua volta sfrutta un EJB per le varie richieste del client.
    Io ho proceduto in questo modo ma non so se è quello più corretto:
    nell'ambito della Enterprise Application ho inserito tutti e 3 i moduli in oggetto quindi quello web, quello client e l'EJB.
    Lato application Client uso questo metodo per richiamare l'EJB:

    package applicationclient1;

    import javax.naming.Context;
    import javax.naming.InitialContext;
    import javax.swing.JOptionPane;
    import miopacchetto.NewSessionBeanRemote;


    public class mioTest {


    public String ViewString(){
    NewSessionBeanRemote pp= lookupNewSessionBeanRemote();
    if (!pp.equals(null)){
    pp.testEJB();
    }
    return "Ciao ciao";
    }

    public void locWMDebug(String Testo) {
    JOptionPane.showMessageDialog(null,Testo, "Test Formula", JOptionPane.INFORMATION_MESSAGE);

    }

    private NewSessionBeanRemote lookupNewSessionBeanRemote() {
    try {
    Context c = new InitialContext();
    return (NewSessionBeanRemote) c.lookup("java:global/ApplServer/EJBModule1/NewSessionBean");
    } catch (Exception ne) {
    locWMDebug(ne.getMessage());
    return null;
    }
    }
    }

    (la classe in oggetto avviamente viene richiamata dalla Main)

    Ovviamente lato EJB abbiamo questo:
    Classe @Remote:

    package miopacchetto;

    import javax.ejb.Remote;

    @Remote
    public interface NewSessionBeanRemote {

    public void testEJB();
    }


    Classe @Stateful:

    package miopacchetto;

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import javax.ejb.Stateful;

    /**
    *
    * @author root
    */
    @Stateful
    public class NewSessionBean implements NewSessionBeanRemote {

    public void testEJB(){
    WMDebug("Hello welcome to EJB 3.1");
    }
    public void WMDebug(String Testo) {
    try {
    FileOutputStream file = new FileOutputStream("/opt/EJB_Debug_WM.log",true);
    PrintStream Output = new PrintStream(file);

    Output.println(Testo);
    Output.close();
    file.close();
    }
    catch (IOException e) {}
    }

    }

    Ora premesso che sto utilizzando GlassFish versioni 2.1 e 3 (sto facendo le prove su 2 server) io procedo con il Deploy dell'enterprise application che va a buon fine. Ora se eseguo il tutto in locale dal server, l'applicazione web richiama correttamente l'applicazione client la quale richiama correttamente l'EJB.
    Se provo il tutto da un'altra macchina ho il seguente errore quando il client cerca il riferimento all'EJB:

    No object to bound to name java:global/ApplServer/EJBModule1/NewSessionBean

    Bene
    Allora provo a configurare JINDI su glassfish utilizzando le stesse informazioni presenti nel file application-client.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <application-client version="5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ap...n-client_5.xsd">
    <display-name>ap1</display-name>
    <ejb-ref>
    <ejb-ref-name>NewSessionBean</ejb-ref-name>
    <ejb-ref-type>Session</ejb-ref-type>
    <remote>miopacchetto.NewSessionBeanRemote</remote>
    </ejb-ref>
    </application-client>

    E quindi
    JNDI Name: NewSessionBean
    Resource Type: Session
    Factory Class: miopacchetto.NewSessionBeanRemote
    JNDI Lookup: NewSessionBean

    e cambiando il codice in questo modo:
    private NewSessionBeanRemote lookupNewSessionBeanRemote() {
    try {
    Context c = new InitialContext();
    return (NewSessionBeanRemote) c.lookup("NewSessionBean");
    } catch (Exception ne) {
    locWMDebug(ne.getMessage());
    return null;
    }
    }

    Mi da l'errore
    Can't find SerialContextProvider

    Insomma qualcuno di voi potrebbe darmi una mano a capire prima di tutto se la logica è corretta e se magari sbaglio a configurare JINDI (ammesso che vada configurato)?
    Grazie mille a tutti e scusate la lunghezza del messaggio

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    2
    Nessuno può aiutarmi???
    Grazie

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.