Child pages
  • Glassfish V2 UR1 EJB kérdések
Skip to end of metadata
Go to start of metadata
Sziasztok!

1. Mi a különbség a következő két EJB hívás között:

@EJB
private MyEJBClassNameRemote ejbRef;

------

            hu.mycompany.project.modul.MyEJBClassNameRemote ejbRef = null;
            try {
                javax.naming.InitialContext ic = new javax.naming.InitialContext();
                Object regService = ic.lookup("hu.mycompany.project.modul.MyEJBClassNameRemote");
                ejbRef = (hu.mycompany.project.modul.MyEJBClassNameRemote) regService;
            } catch (javax.naming.NamingException except) {
                log.error("----||||---- ERROR while injection EJB resource " + except.getMessage());
            }

2. Adott a fenti AS.
Van egy EJB projektem local, remote interface-ekkel.
Van még egy class lib-em a domain/mydomain/lib alatt. Ez a lib tartalmaz egy remote EJB hívást.
A jelenség: ha úgy állítom le az AS-t, hogy minden alatta van, akkor újraindítás után a class lib-em nem éri el az EJB-met csak miután újradeployoltam az EJB projektet. Természetesen én azt szeretném, ha nem kellene mindig bedeployolni az EJB-t.

Kérdés: ez normális jelenség, vagy van rá megoldás?

Köszi a válaszokat.

Ficzu

      
      
Page viewed times
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))
  • No labels

5 Comments

  1. Sziasztok ismét!

    Úgy látszik vagy nagyon amatőr kérdéseket teszek fel, vagy nagyon magasakat (ezt azért nem hinném).
    Mindenesetre a lényeg a lényeg: sikerült megoldanom a feladatom ezen részét.

    Üdv:Ficzu
  2. Ha nem titok, akkor mi a megoldás? Illetve mi volt a baj? :)

    A kérdéseid első részére: az annotációval egy classloaderen belül tudsz local vagy remote hívást tenni (az EJB3 szerint a session bean-ek JNDI neve azonos a csomagnév+osztálynévvel). Az InitialContext a régebbi megoldás, bár működik EJB3 esetén is.
  3. Nos én arra a következtetésre jutottam, hogy az InitialContext mindenból eléri az ejb-t (sima class libraryből is), míg a @EJB csak conténerrel rendelkező projektekből (ejb, web). InitialContext nem működik EJB projekten belül.

    Kicsit pontosítani kell a hibaleírásomat: igazából arról van szó, h egy EJB projekten belül valósítok meg deployolási időben saját ejb hívást mielőtt még az bedeployolódna. Szóval most azt keresem, hogyan lehet megadni egy EJB projekten belül a session beanek deployolási sorrendjét.
  4. Sziasztok, lenne egy kezdő kérdésem. Glassfish 3.1.1 AS-en fut egy EJB, ennek van egy remote interface-e. Összedobtam egy klienst, ami próbál csatlakozni, illetve próbálja meghívni az adott funkciókat. Működik is, egyetlen problémám van, mégpedig, hogy kliens iszonyat lassan veszi fel a kapcsolatot a szerverrel, valamint a funkciók meghívása is nagyon lassú.

    Az alábbi rutinnak 43 másodpercre van szüksége, hogy lefusson. Közben a procit a kliens szinte végig 80-100%-ban terheli.

    Van ötletetek, hogy mit tehetnék a sebesség növelése érdekében? Nem hiszem, hogy ez így normális.

    Bármilyen építő jellegű hozzászólásnak örülnék. Másoknak is ilyen lassú? Normális, hogy ennyire eszi a procit?

    private boolean initializeConnectionToDC(){
    initialContextProperties.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    initialContextProperties.setProperty("org.omg.CORBA.ORBInitialHost", properties.getProperty("dc_hostname"));
    initialContextProperties.setProperty("org.omg.CORBA.ORBInitialPort", "3700");

    try {
    ctx = new InitialContext(initialContextProperties);
    myClientCommRemote=(ClientCommRemote)ctx.lookup(ClientCommRemote.class.getName());
    } catch (Exception e) {
    e.printStackTrace();
    return false;
    }

    return true;
    }

     

    Üdv:

    Zoli

  5. Oké, más utat kerestem. Az EJB mellé betettem egy web project-et, aminek van egy servlet-e, ez lokálisan hívja meg az ejb-t. A kliens meg webservice-n keresztül éri el a servlet-et -azon keresztül pedig az EJB- t. Az eredmény: jóval kisebb kliens, jóval gyorsabb indulás, jóval gyorsabb kommunikáció, kuszább működés.

    Ettől függetlenül érdekelne mindenkinek a véleménye, hogy EJB kliens esetén miért ilyen lassú a kommunikáció, és miért ilyen processzoridő igényes. Na és persze a lényeg, hogy lehet-e tenni valamit ellene.

     

    Üdv:

    Zoli