Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Inicijalizacija Entity Bean-a u Session Bean-u

[es] :: Java :: Inicijalizacija Entity Bean-a u Session Bean-u

[ Pregleda: 3003 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 10:11 - pre 203 meseci
Koristim Oracle JDeveloper 11g i imam problem kada trebam da iskoristim Entity Bean iz Session Beam-a.
EntityManager se ne inicijalizuje pa ne mogu da da izvrsim obicnu SQL naredbu tipa Insert ili neku drugu.


Kod iz SessionBean-a izgleda ovako.

package com.Company.TestWeb;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;


@Stateless(name="SessionEJB")
public class SessionEJBBean implements SessionEJB, SessionEJBLocal {
@PersistenceContext(unitName="WebProjekat-1")
private EntityManager em;

public SessionEJBBean()
{ }

public Object mergeEntity(Object entity) {
return em.merge(entity);
}

public Object persistEntity(Object entity) {
em.persist(entity);
return entity;
}
public Object refreshEntity(Object entity) {
em.refresh(entity);
return entity;
}

/** <code>select o from Departments o</code> */
public List<Departments> queryDepartmentsFindAll() {
return em.createNamedQuery("Departments.findAll").getResultList();
}

public void removeDepartments(Departments departments) {
departments = em.find(Departments.class, departments.getDepartmentId());
em.remove(departments);
}

//public EntityManagerFactory emFacDep = Persistence.createEntityManagerFactory("WebProjekat-1");
//private EntityManager emDep;

public void EMODeljenje(long lID2) {
// em = emFacDep.createEntityManager();
final EntityManagerFactory emf =
Persistence.createEntityManagerFactory("WebProjekat-1");
final EntityManager em1 = emf.createEntityManager();

final Departments cust = new Departments();
cust.setDepartmentId(lID2);;
em.persist(cust);
}

public void DodajOdeljenjeZoKi(long lID2, String sNaziv2, long lLokacija2,long lManagerID2)
{
// EMODeljenje(lID2);

// final EntityManagerFactory emf =
// Persistence.createEntityManagerFactory("customerServiceUnit");
// final EntityManager em1 = emf.createEntityManager();
//
// final Departments cust = new Departments();
// cust.setDepartmentId(lID2);;
// em1.persist(cust);


Departments Odelj1;
Odelj1 = KreirajOdeljenje( lID2, sNaziv2, lLokacija2, lManagerID2);
em1.persist(Odelj1);
}

private Departments KreirajOdeljenje(long lID, String sNaziv, long lLokacija,long lManagerID)
{
Departments OdeljenjeAdd = new Departments();

OdeljenjeAdd.setDepartmentId(lID);
OdeljenjeAdd.setDepartmentName(sNaziv);
OdeljenjeAdd.setLocationId(lLokacija);
OdeljenjeAdd.setManagerId(lManagerID);

return OdeljenjeAdd;
}


private void beginTransaction()
{//Start the resource transaction.
em.getTransaction().begin();
}

private void commitTransaction()
{
em.getTransaction().commit();
}

private void failTransaction()
{
em.getTransaction().rollback();
}
}
 
Odgovor na temu

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 10:14 - pre 203 meseci
Greska koja se javlja je :



500 Internal Server Error

javax.faces.el.EvaluationException: Exception [TOPLINK-4002] (Oracle TopLink - 11g Release 1 (11.1.1.0.0) (Build 070502)): oracle.toplink.exceptions.DatabaseException Internal Exception: java.sql.SQLException: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specifiedError Code: 0
at org.apache.myfaces.trinidad.component.MethodExpressionMethodBinding.invoke(MethodExpressionMethodBinding.java:33)

 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 10:45 - pre 203 meseci
Kako ti izgleda persistence.xml?
 
Odgovor na temu

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 10:56 - pre 203 meseci
Persistance izgleda ovako

<?xml version="1.0" encoding="windows-1252" ?>
<persistence xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="WebProjekat">
<class>
com.uni4gold.TestWeb.Departments
</class>
</persistence-unit>
<persistence-unit name="WebProjekat-1">
<jta-data-source>
jdbc/WebGUIKonekcijaDS
</jta-data-source>
</persistence-unit>
</persistence>



Inace SessionBean pozivam na sledeci nacin iz JSF strane

SessionEJBBean ss = new SessionEJBBean();
ss.DodajOdeljenjeZoKi(112123,"NazivZoki",2,1);

Kad ovako pozovem SessionBean EntityManager ostaje neinicijalizovan.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 11:42 - pre 203 meseci
Prvo sam pomislio da ti nije dobar data source: jdbc/WebGUIKonekcijaDS, ali kad si ovo poslednje napisao, jasno je sta nije u redu.

Dakle, EJB se ne instancira sa new operatorom. Koristis InitialContext da uradis jndi lookup, a on ti vrati EJB. Tacnije, interfejs preko koga onda pozivas metode. Kada se tako radi, onda se EJB kontejner brine o tome da "ubrizga" sve potrebne resurse, u tvoj slucaju EntityManager. Kada radis new, nema ko da uradi taj posao.

Procitaj neku knjigu o EJB 3.0, pre nego sto krenes u rad...
 
Odgovor na temu

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 12:29 - pre 203 meseci
Nadam se da moze jos jedno pitanje.
Shvatio sam da ne mogu da napravim novu instancu EntityBean-a na ovaj nacin (S obzirom da sam ranije radio C# mozda je operator NEW i profesionalna mana)

Ja sam kod mene definisao ali mi ne prolazi a zasto.... mislim da je problem kod reda koda ic.lookup("SessionEJBBean"),
u lookup se nalazi string a nisam ni sam siguran na sta trebam da se instanciram.

SessionEJBBean ds = null;
Context ic = new InitialContext();
ds = (SessionEJBBean) ic.lookup("SessionEJBBean");

ds.DodajOdeljenjeZoKi(112123,"NazivZoki",2,1);
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.antegra.com.



+13 Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 14:47 - pre 203 meseci
Definisi sta ti to znaci "ne prolazi", daj stackTrace, daj nesto..

Da li ti je startovan kontejner, odakle pises klijentski taj kod itd..
 
Odgovor na temu

Au197/79
Zlatan Kadragić
Minhen

Član broj: 3556
Poruke: 772
*.adsl.beotel.net.

Sajt: aurelije.blogspot.com


+47 Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 17:00 - pre 203 meseci
Zašto svi pominju JNDI lookup kao način za DI? To je tako demode u EJB3 i potrebno je samo u izuzetnim situacijama, npr. kad se koristi JBoss 4.x koji nije u potpunosti ejb3 sertifikovan. Za sve ostalo tu su 4 anotacije koje rešavaju problem. U ovom slučaju je to @EJB anotacija.
Bolje džaba ležat nego džaba radit.
 
Odgovor na temu

anon315

Član broj: 315
Poruke: 1657
*.adsl-1.sezampro.yu.



+13 Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u21.08.2007. u 17:46 - pre 203 meseci
Tako je. Ali evo zasto: ako koristis Servlet 2.4, u njima to ne radi, pa zato mora lookup. Od verzije 2.5 je to podrzano. Dakle, ako iz web aplikacije radis lookup, a koristis 2.4 Servlete, onda moras onako. Ako EJB-u A treba EJB B, onda EJB A ladno moze da koristi @EJB anotaciju da bi dobio B. Ja jedva cekam da predjem na Servlet 2.5, pa da i iz webapp mogu da koristim @EJB :)

[Ovu poruku je menjao Vanja Petreski dana 21.08.2007. u 23:16 GMT+1]
 
Odgovor na temu

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u22.08.2007. u 10:10 - pre 203 meseci
Kada izvrsavanje dodji do linije koda

ds = (SessionEJBBean)ic.lookup("SessionEJBBean");

pojavi se prozor

The debugger has finished stepping, but it cannot find the source file.
Unable to find file for package oracle.classloader, filename PolicyClassLoader.java
.....

Oracle tabela se zove ODELJENJE i ima dve kolone ID (PrimaryKey - number) i Naziv (char(50)).

Sve u svemu kada sa JSF strane klikom na dugme potrebno je da se pozove SessionBean, da se podaci sa JSF strane prebace neki podaci u SessionBean - funkciji i da se recimo tamo izvrsi neka operacija sa njima.

Skontao sam kada da rucno kreiram EntityBean ali sada je dosao red kada je potrebno da se radi sa SessionBean-ovima .....

Sve varijante za pomoc su dobrodosle
- sajt-ovi sa konkretnim primerima za EJB, JPA, JDeveloper 11g code....dosta sam surfovao ali nisam nasao nesto konkretno
- rado bih poslao svoj Java kod kako bi ga neko izmozgao za 30 sec :) [email protected]
- ukoliko je neko voljan da posalje neke primere za rad sa JDeveloperom.

Inace jos uvek ne koristim JBoss vec aplikaciju startujem direktno iz JDeveloper-a 11g, vec preko OCJ4 Server-a.
 
Odgovor na temu

zoki9707

Član broj: 2996
Poruke: 32
*.static.sbb.co.yu.



Profil

icon Re: Inicijalizacija Entity Bean-a u Session Bean-u23.08.2007. u 09:44 - pre 203 meseci
Resio sam problem.

U Source delu JSP strane sam omogucio poziv Entity Bean-a.

Sada idem dalje ... do nekog sledeceg projekta.
Sledi kod koji mi je resio prvi problem u zivotu :)

Code:

 private com.Kompanija.TestWeb.SessionEJB EB = null;
 //  private NumberFormat nf = null;
 
   public void jspInit () {
     try {
     System.out.println("  1  ");
       InitialContext ctx = new InitialContext();
       EB = (com.Kompanija.TestWeb.SessionEJB) ctx.lookup(
                   "SessionEJB");
                   
        System.out.println("  2  ");
        
//Poziva se nakon ucitavanja strane
        EB.DodajOdeljenjeZoKi(12,"Mihajlovac");
        
        System.out.println("  3  ");
                   
     } catch (Exception e) {
       e.printStackTrace ();
     }
   }
 %> 
 
 <%
     if ("DodajOdeljenje".equals(request.getParameter("action"))) {
       EB.DodajOdeljenjeZoKi(11,"Zokiii");
     }  



// Poziva se nakon BTN_Click
    <p>
      <input type="hidden" name="action" value="DodajOdekljenje"/>       
      <input type="submit" value="Dodaj"/>
    </p>



 
Odgovor na temu

[es] :: Java :: Inicijalizacija Entity Bean-a u Session Bean-u

[ Pregleda: 3003 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.