Csináltam egy nagyon egyszerű entity bean-t:
package hu.mag.ejb.lib;
import java.io.Serializable;
import javax.persistence.*;
@Table(name="user")
@Entity
public class user implements Serializable{
private int id;
private String account;
private String name;
@Id
public int getid(){
return this.id;
}
public void setid(int id){
this.id=id;
}
public String getname(){
return this.name;
}
public void setid(String name){
this.name=name;
}
public String getaccount(){
return this.account;
}
public void setaccount(String account){
this.account=account;
}
}
Ezt lefordítottam jar-a és betettem a jboss deploy könyvtárba amikor elindítottam még észre sem vette hogy ott van talán valamit nem írtam bele vagy kimaradt egy deploy fájl?De EJB3 alatt nem kötelezől deploy fájl használata azért vannak az annotációk nem??
Mi lehet a gond mert így még hibát sem ír ki hogy mi a baja!
33 Comments
Bakos Gergo
M Attila
Böszörményi Péter
M Attila
Unknown User (kuvera)
M Attila
Jó ezt látom én is és kétszer van definiálva az setid eljárás!
De ha csak ennyi lenne a gond akkor kiírna valami hibajelentést, de úgymond nem is látja hogy a deploy könyvtárban van entity bean. Vagy e miatt nem látja mert kicsivel írtam az getter/setter eljárásban a változók neveit???
Auth Gábor
Bakos Gergo
getter/setter helyes névhasználat:
getAttributum
setAttributum
Tehát a kisbetűvel kezdődő attributum a get/set-ben kezdődjön nagybetűvel.
Unknown User (kuvera)
M Attila
Auth Gábor
Logban semmiféle hiba nincs erre vonatkozóan?
M Attila
Unknown User (kuvera)
Az entitás property nevekre semmilyen korlátozást nem sikerült találnom, csak ezt:
The following are the reserved identifiers in EJB QL: select, from, where, update, delete, join, outer, inner, left, group, by, having, fetch, distinct, object, null, true, false, not, and, or, between, like, in, as, unknown[21], empty, member, of, is, avg, max, min, sum, count, order, by, asc, desc, mod, upper, lower, trim, position, character_length, char_length, bit_length, current_time, current_date, current_timestamp, new, exists, all, any, some.
Szóval nem értem. Valaki tudja miért foglalt?
M Attila
Letöltöttem a jboss 4.2.2-t.
A stateless, stateful megy az entity-t észre sem veszi. Most ha jól tudom egy entity bean is lehet különálló bean tehát nem kell ear-be tenni. Mert én külön jar-ba tettem.
Auth Gábor
Ezt úgy szokás (NetBeans esetén), hogy az ember nyit egy Enterprise Application projektet, majd bepipálja a megfelelő részeket (war, ejb, ejb-client, app-client, stb). Az EJB projektben vannak az EJB-k, legyenek Entity Bean-ek, Session Bean-ek, Message Driven Bean-ek... ezeket nem szokás külön projektbe tenni.
Javasolnám, hogy nézz kicsit bele az elméletbe is, mert sok problémától mentesülsz, ha tudod, hogy mi mért működik. Én nem akarom ráderőltetni a Glassfish-t, de a JBoss és az EJB3 kombináció jelenleg még EJB profiknak is néha gondot okoz, főleg ha 4.x korai verziójáról van szó...
M Attila
Na én azért közben próbálkozok!
Csináltam egy EJB project-et abba van egy Stateless és egy Entity bean!
Így a jar-t rögtön felismerte de abból csak a Stateless-et az entity-re semmi reakció mint ha ott sem lenne.
Namármost én csak kezdő vagyok de ennyi biztos hogy elég ez az egy fájl semmi beállítás vagy valami?
Én amikor elindul a jboss egy ablakban mutatja miket tölt be vagy valami olyasmiket. Ott kell hogy legyen vagy lehet hogy ez természetes hogy nem ír róla semmi!
Böszörményi Péter
Bakos Gergo
Pl. Oracle esetén:
/docs/examples/jca/oracle-xa-ds.xml fájlt másold a következő helyre, ha a default servert használod:
/server/default/deploy
majd módosítsd a fájlt az adatbázisodnak megfelelően
Unknown User (trekan)
Bakos Gergo
Auth Gábor
Unknown User (kuvera)
M Attila
Akkor inkább adok egy elérhetőséget:
Itt van a project és a hiba.txt tartalmazza a hibát
www.ganziskola.hu/javaee
M Attila
java.io.Serializable osztályt
M Attila
Komolyan mondom ez a szerkesztő kikészít itt szerkesztésben minden jó amikor kiíratom akkor meg eltűnnek dolgok belőle.
Context ctx=new InitialContext();
userRemote user=(userRemote)ctx.lookup("userProfileRemote");
userProfile up=new userProfile();
up.setId(10);
up.setName("Kovács János");
user.createProfile(up);
userProfile upget=new userProfile();
upget=user.findProfile(10);
upget-> most kiírja
Szerver újraindul
Context ctx=new InitialContext();
userRemote user=(userRemote)ctx.lookup("userProfileRemote");
userProfile upget=new userProfile();
upget=user.findProfile(10);
Így már nem megy!
Czimmermann Gábor
M Attila
Kiválasztok egy EAR projectet bele egy EJBprojectet egy WEBproject kliensnek aztán uccu neki!Mi nem világos???
Unknown User (trekan)
"Viszont van valamit amit nemértek!
Létrehozok egy Entity bean-t osztályt feltöltöm és kiíratom viszont ha csak a findProfile metódust használom akkor is meg kéne jelennie nem?
Az a gond h a persistence.xml-ben megadtal egy property-t, ami undeploy-kor torli a tablakat, deploy-kor pedig letrehozza, leallitasnal undeploy tortenik, indulasnal meg deploy.Nem az a lényege az ennek a beannek hogy túléljen egy szerver újraindulást is???
Vagy az a gond hogy a persistance.xml-ben defaultds-t használok nem egy külső adatbázist???"
M Attila
Akkor itt lehet a bibi:
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
Milyen más értékek lehetnek?
M Attila
Na már megint van egy érdekes problémám amit nem értek!
Készítettem egy Entity beant ami jboss-on fut mysql adatbázis a DS.
Minden rendben futtot. Majd készítettem ugyan azzal a stratégiával egy másik project-ben egy entity beant. De egyfolytában olyan hibája van hogy nincs elkészítve az a tábla miben az entity bean lenne? Ez most hogy van? egyszer magától elkészíti és nem szól egyszer meg én készytsem el a táblát (mert ha létrehozom akkor minden oké lesz megint)
Hol lehet beállítani hogy most ő hozza létre vagy én (van egyáltalán ilyen beállítás)
Hiba:
Table not found in statement [insert intodatas (name,id) values (?,?)]
Could not synchronize data state with session
M Attila
Úgy néz ki megvan a hiba:
hibernate.hbm2ddl.auto helyett hibernate.gbm2ddl.auto írtam a persistence.xml-be
M Attila
Szeretném hogy az entity bean-ben az id-t ne kelljen megadni autómatikusan számoljon elementént.
Találtam is rá egy példát hogy kéne megoldani csak már szinte az első sorban gond volt:
azt írja hogy van egy @javax.ejb.Id(generate=.....) annotáció stb., na ez már nekem alapból nincs is én a persistence csomagban lévő Id-t használom az ejb-ben nincs is. Na ez most miért lehet, de ha lenne más ötletetek akkor szivesen meghallgatnám!
Unknown User (soulfly)
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;