- Argos: Szeretem az ecetfát
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- gban: Ingyen kellene, de tegnapra
- sziku69: Fűzzük össze a szavakat :)
- Szevam: Mennyire tipik Z-gen viselkedés? Tipizálható-e egyáltalán?
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- body007: Magyarország kifosztásának története
- sziku69: Szólánc.
Új hozzászólás Aktív témák
-
Lortech
addikt
Ez javascript, nem java.
Alábbi példából talán ki tudod hámozni, ami neked kell, a screenshot alapján készült a struktúra, nem tudtam pontosan azonosítani.
var sampleObj = { cid: 'genBasic',
data: {
xiaomiStruct:
[
{ index : 100, data: 0 },
{ index : 150, data: 2205 }
]
}
}
var indexToLookFor = 150;
var dataObj = sampleObj.data.xiaomiStruct.find(function(e) {
return e.index == indexToLookFor
});
console.log(dataObj.data); -
Karaya
tag
Ne kövezzetek meg, de nem értek a java-hoz. Viszont módosítani szeretnék egy meglévő programot.
Van benne egy adatszerkezet, aminek az elemeire nem tudom, hogyan kell hivatkozni.
A util.inspect(msg.data, false, null)) -el stringként kiíratva így néz ki a tömb(?) :
innen szeretném az Index 150 -hez tartozó 2205 adatot kivenni.
Ilyesmivel próbálkozom, de ez nyilván nem jó :
pl = msg.data['index: 150']
Mi lenne itt a helyes hivatkozási syntax?
Esetleg még háttér info erről a structuráról : link
-
floatr
veterán
válasz
Aethelstone #9696 üzenetére
Az androidnak köszönhetően már most népszerűbb, mint a scala valaha
Eleinte egyébként nekem sem volt túl szimpatikus a dolog, mert valahogy javas fejlesztőként élből elutasítok minden gyanús alternatívát, de valamiért rávettem magamat, hogy nézzek utána, és elég meggyőző. Most kerül RC1-be a kotlin DSL-re épülő spring boot, kiderül h mit ér el. Talán a korral jár, de néha már fáraszt, ahogy újabb dolgok jönnek-mennek, de némi belátással el kellett ismernem, hogy ez túl jó ahhoz, hogy elsikkadjon. Én azt látom benne, hogy a javanak kellett volna ilyenné válnia.
-
válasz
Aethelstone #9696 üzenetére
Mivel egyenekrok van szo, ezert a kerdes az, hogy lehetne-e talalni allast, ha ragaszkodnal a Kotlinhoz. Szerintem igen.
-
axioma
veterán
Csak eszembe jutott errol az off-rol, hogy nemreg kaptam: [link]. Nyilvan nem itthonra es nem reprezentativ, de talan van benne erdekes adat is.
-
floatr
veterán
válasz
Aethelstone #9691 üzenetére
Bármi lehetséges. Ez egyelőre csak most kezdődött igazán, és nem hiszem, hogy csak én látom a trendet benne.
-
G.Zs.
senior tag
válasz
Aethelstone #9691 üzenetére
Rossz helyen keresed.
-
floatr
veterán
válasz
bambano #9675 üzenetére
Úgy vettem észre, hogy a tech giant-nek mondott cégek kifejezetten menekülnek az oracle dolgai elől. Ha körbenézel IDE fronton, akkor láthatod, hogy minden az eclipse és idea variánsokról szól, de feltörekvőben van a vs code a redhat-es java pluginjével. Sajnos vagy sem, senkit nem érdekel a netbeans, kiszorulóban van.
A szerver témában sokkal árnyaltabb a dolog, de ha már leírtad, hogy nem érdekel az EE, akkor én arra szavaznék, amire a google is letette a voksát: jetty. Nagyon sok fejfájást okozott nálunk a tomcat.
MVC: elég egyértelműen adódik a spring mvc vagy épp a boot. Többek közt amiatt is, mert a megfelelően társított egyéb spring projektekkel tökéletesen együttműködik, és megfelelő frontend technológiával brutálisan gyorsan lehet eredményt elérni.
De mondok még valamit, ami az oracle bohóckodásának köszönhető. Gyakorlatilag az összes nagyobb piaci szereplő elindult Kotlin irányba, pl a spring is. Kisebb projektekben próbálkozunk már vele JVM-re, és úgy látom, hogy át tudja venni a java helyét, és nem csak amiatt, mert licencelés tekintetében meg tudnak szabadulni az oracle marhaságaitól, hanem mert elképesztően hatékony de általános célú is. Itt és itt van két példa, ami talán magyarázza, hogy miért mondom ezt, de lehet h az is elég, ha megnézed a kotlin stdlib lehetőségeit. Nem mellesleg érdemes megnézni a kapcsolódó trendeket. A java fokozatosan veszít a népszerűségűből, miközben a kotlin iránti érdeklődés exponenciálisan nő. Pláne ha az oracle által lesajnált enterspájz fejlesztők rájönnek, hogy nem csak androidhoz jó.
-
válasz
Aethelstone #9684 üzenetére
Ne kezdjünk bele az idióta trollkodásba megint.
-
RexpecT
addikt
válasz
bambano #9679 üzenetére
Én nemrég Spring Bootban raktam össze egy mini projektet, amiben egy endpoint egy MySQL adatbázisból ad vissza JSON-ben adatokat. STS-ben egyszerűen és gyorsan lehet fejleszteni, és valóban ahogy fentebb is írták, "java -jar xy.jar" -al lehet futtatni a service-t(Tomcat-et tartalmaz beépítve, de ha akarsz akkor csinálhatsz WAR file-t is).
-
-
bambano
titán
"ha zavarnak a meglevo bugok, akkor hasznalj mast, de ha nem egy hosszutavo projekt": hosszútávú.
ha nem használok olyan környezetet (nem csak az ide-t ideértve, hanem az összes többi cuccot is), akkor belefuthatok abba, hogy a böngészők már nem képesek megjeleníteni, amit megcsináltam. Mint például a woodstockot nem kezelik az újabb netbeansek."java -jar myApp.jar": most vagy elkerülte a figyelmed, hogy webes cucc lenne, vagy komolyan gondoltad, de akkor vadásszak web konténert, adatbázis kezelő réteget, stb. ? ezt inkább kihagynám.
-
bambano
titán
"Netbeans nem lesz kevesbe hasznalhato attol, hogy kevesbe nepszeru.": ezt értem, csak a kérdés az, lesz-e, aki fejleszti, javítgatja a bugokat. mert a webjükön a release map szerint 2016. vége felé lenni kellett volna 8.2.1-esnek, de nincs. nem jött be az eclipse, de inkább a projekt elején váltanék, mint közben, ha muszáj.
ahhoz, amit csinálni kellene, szerintem nem kell ee.
"Spring vagy Dropwizard eseten nincs szukseg appszerverre, tehat nem kell se Glassfish, se WF.": és akkor min fogom futtatni? eddig glassfisht használtam, nem dobnám ki, ha nincs súlyos ellenérv.
-
válasz
bambano #9675 üzenetére
1: Netbeans nem lesz kevesbe hasznalhato attol, hogy kevesbe nepszeru. Ha az megy, akkor semmi gond nincs azzal, ha azt hasznalod. Ha hosszutavon Java-znal, akkor mondanam, hogy IntelliJ, de az egyik legjobb fejlesztonk a mai napig Netbeanst tol, es ettol meg teljesen jol mukodik minden.
2) Wildfly vagy Wildfly Swarm, ha EE kell
3) Most azt dontsd el, hogy EE vagy sem. Ha nem akarsz EE-t, akkor Spring Boot peldaul (bar szerintem boven tul sok magic van benne), ha nem szereted a tul sok varazslatot, akkor Dropwizard. Spring vagy Dropwizard eseten nincs szukseg appszerverre, tehat nem kell se Glassfish, se WF.
-
bambano
titán
Segítsetek pls. stratégiai döntésben, hátha ti jobban informáltak vagytok
Anno elkezdtem egy programot írni, de félbeszakadt, viszont mostanában szeretném befejezni.
netbeansben fejlesztettem, glassfishben futtatnám. Mivel nem sokat haladtam vele, ha kidobnám az egészet, ebben az állapotában még nem fájna. A kérdések:Ami nem változtatható: debianon fejlesztenék linuxra, adatbáziskezelő postgres, a cucc webes alkalmazás lenne. Amit csak végszükség esetén változtatnék, a nyelv: a java.
1. amennyire én látom, a netbeans meghalt. kérdés:
1a: a netbeans tényleg halott, meneküljek, de akkor mire?
1b: nem, a netbeanben érdemes fejleszteni, mert támogatott cucc lesz még sokáig2. az oracle által átvett projektek közül nagyjából minden fontosabbat megdöglesztett az oracle. kérdés:
2a. maradjak a glassfishnél, mert azt nem fogja megölni, lesz update hozzá
2b. váltsak, de akkor mire? tomcatre? ee cuccokat eddig nem használtam.3. milyen keretrendszert érdemes elsőre megtanulni? springs mvc-t?
Még annyit, hogy nem tervezem, hogy ebből éljek meg. Ha a melóban kell valami, azt megcsinálom, de életcélnak nem választottam.
kösz előre is.
-
Taoharcos
aktív tag
Éppen STS-ben programozok. Ha elkezdek írni egy nevet, és CTRL+Space-el auto kiegészítést csinálok felajánl egy jó pár metódust stb. Van hogy egy TextField-hez több package is kapcsolódik. Mostanában Vaadin-t használok, de van amikor az első helyre a java.awt csomagból ajánl importot. Le lehetne valahogy tiltani a java.awt-t ne ajánlja fel? Volt néhány figyelmetlemségen amikor nem vettem elsőre észre hogy rossz import miatt van hibám. De pl volt már amikor a List-nél is a java.util helyett véletlenül a java.awt.*-t importáltam.
Úgy gondolom, abszolút nincs szükségem a java.awt csomagra.Szerk.
Bocsi, túl gyorsan kérdeztem, sikerült kigúglizni. Megoldva. -
togvau
senior tag
Java 8-al jól működik a program, java 9-el NoClassDefFoundError. Amit nem talál, a jar-ban lévő lib jar. Mi a legegyszerűbb megoldás, a java 8 runtime-al indításon kívül?
-
Orionk
senior tag
Sziasztok!
Egy ilyen interjú lehetőségről mit gondoltok?
Vettetek már részt ilyenen? Hallottatok már valamit róla? Bármi infó?
Meglepő, hogy 100.000 USD/évi fizetést kínálnak annak, akit felvesznek. -
Aethelstone
addikt
Erről beszéltem. Vagy vita van vagy 2 perc gugli után megválaszolható kérdések.
-
Atke
senior tag
Sziasztok!
Most kezdtem el foglalkozni/tanulni a JAVA-t és az egyik példaprogramban nem értem hogy a dátumnál miért van szükség a +1-re? Kipróbáltam nélküle, Novembert mutatott...
int month = now.get(Calendar.MONTH) + 1;
A könyvben nem tértek ki rá.
-
togvau
senior tag
Én ilyet még nem láttam, csak azt hogy mánágereknek van egy büfé-ruhatár szak mellé nagy arcuk, pszichopatikus jellemzőik, félinformációkból "a szomszéd józsitól aki ismeri a testvérének a főnökének a fiát aki ért hozzá" tájékozódva, a divatos technológiákat nyomják keresztük "ha mások szeretik, nem lehet rossz"
-
togvau
senior tag
-
Froclee
őstag
Furcsállom, hogy furcsálljátok G.Zs. metodológiáját. Én nem szeretnék dolgozni olyan helyen, ahol nincs beleszólásom a technológiai döntésekbe. Nálunk is hasonlóan összeülünk, és jellemzően van 2-3 ember akinek van ötlete és megvitatjuk melyik a legjobb. "Everyone is an architect." - ahogy a tavalyi Craft conf-on fogalmazott az egyik előadó.
Nyilván nem-greenfield projekteknél nem mindig van választási lehetőség, abban persze egyetértek.
-
floatr
veterán
válasz
Cathfaern #9654 üzenetére
"A sales a következő eszközöket egyeztette a klienssel..."
"A projekt alapjait lerakó indiai fejlesztők már nem dolgoznak a cégnél"
"A kickoff meetingre meghívott PM, CEO és az ügyfelet képviselő közeli ismerős a következő stacket kéri..."Én eddig még nem láttam azt a sokat emlegetett mesebeli projektkezdést, bár én a sötét oldalon vagyok már jóideje. Az inkább működött, hogy addig fényeztem egy technológiát, amíg megjött az étvágya a kliensnek is hozzá - menetközben.
-
togvau
senior tag
Mindenhol a mánáger találja ki (najó kivéve a kis fejlesztőcsapatokat ahol kb mindenki egyenrangú), mert ezzel tudja fenntartani a látszatot, hogy rá szükség van, és csinál is valamit a "csicskák" munkájának lefölözésén kívül
Na és ők azok akik a divat szerint választanak.
-
Cathfaern
nagyúr
Szimpatikus
Csak azért kérdeztem, mert én eddig csak a "elvileg az egész csapat dönt, de úgyis az lesz amit a vezéregyéniség mond", illetve a "hamarabb kiválasztotta a nem szakmai menedzsment a használandó technológia, mint maga a csapat meglett volna" felállásokat láttam
Bár inkább
-
G.Zs.
senior tag
válasz
Cathfaern #9650 üzenetére
Ez nalunk igy mukodott 2 evvel ezelott, amikor letettuk a mostani projektunk alapjait.
Adott volt egy fejlesztocsapat, akik elotte egy hasonlo projekten dolgoztak a ceg egy masik reszlegenel. Volt egy jol meghatarozott technologiai stack, amiben a csapatnak nagy tapasztalata volt. A kerdes az volt hogy ezek kozul mi az amit le kellene/lehetne cserelni az uj projekt megvalositasanal, hogy a regi projekten felmerult problemak kikuszobolhetoek legyenek. Ehhez a mar vazolt modszert hasznaltuk. Mindenki megkapta a lehetoseget, hogy prezentaljon egy uj technologiat, ha ugy erezte, hogy egy adott problemat azzal jobban meg lehet oldani, mint ahogy az elozo projekten volt. -
Cathfaern
nagyúr
"A csapatbol minden egyes fejleszto keszit egy kutatast, esetleg egy technologiai demot, prezentalja a sajat megoldasat, es ervel, hogy szerinte az a technologia miert lenne jo valasztas a kulcsfontossagu problemak megoldasara. A csapat ezutan megvitatja a felmerult megoldasokat, es kivalasztja melyik a leghatekonyabb."
Ez tényleg van ahol így megy, vagy ez az elméleti ideális eljárás amit semmilyen nem amatőr / hobbi projectnél nem alkalmaznak? -
Ez igy tok jo, ha nyilt vegu a kerdes, azaz ha tenyleg eldontendo, hogy melyik iranyba induljon a csapat. Feltetelezem, hogy lentebb nem ez a helyzet, es van egy jo adag JSP-alapu cucc keszen, es kell valami pluszt hozzarakni (gondolom, nem valami megaprojekt, ha itt a forumon probalja osszeszedni a hozzavalokat a kollega). Ilyen esetekben tok normalis, hogy azt hasznaljak, amibol mar eleve sok van.
-
G.Zs.
senior tag
Adott egy feladat, amire keresem a megoldast. A feladat elemzesenel a csapat feltarja, hol lehetnek nagyobb problemak a megvalositasnal. A csapatbol minden egyes fejleszto keszit egy kutatast, esetleg egy technologiai demot, prezentalja a sajat megoldasat, es ervel, hogy szerinte az a technologia miert lenne jo valasztas a kulcsfontossagu problemak megoldasara. A csapat ezutan megvitatja a felmerult megoldasokat, es kivalasztja melyik a leghatekonyabb. Egyhangu dontes eseten ugye nincs mirol beszelni, az lesz amit mindenki akart. Ha nincs megegyezes, es sok megoldas johet szoba, akkor a legnagyobb tapasztalattal rendelkezo vezeto dont.
-
A demokracia nagyon nem mukodik jol technikai dontesek eseteben. Ha olyasmirol van szo, hogy tabs vagy spaces, akkor persze oke, de egy csapatban nagyon kulonbozo technikai tapasztalattal rendelkezo emberek vannak, miert kellene, hogy mindenkinek ugyanakkora beleszolasa legyen?
A masik, hogy ezekrol rengeteget lehet vitatkozni, es a valodi helyzet az, hogy a feladatok 99%-at 'barmiben' meg lehet csinalni, es a fejlesztok hajlamosak az alapjan valasztani, hogy 1) most mi erdekli oket 2) mi a divatos 3) ok szemely szerint mihez ertenek. Azert valasztanak valakit vezetove, hogy donteseket hozzon, amik elsosorban a ceg erdekeit veszik figyelembe.
-
togvau
senior tag
válasz
Aethelstone #9639 üzenetére
igen, el kéne felejteni, mert elavult, nagyon régi dolog, és ahogy látom 9 év alatt minimális fejlődés jött össze, de maximális mennyiségű új bug. De sajnos sok helyen ragaszkodnak a régi dolgokhoz, mert a mánáger kitalálta.
-
togvau
senior tag
Egyszerűen, ha nem lett elküldve az adott jsf oldalon legalább 1x már form, akkor nem biggyeszti be az outputlink a servlet mapping /faces-ét az url-be, ha pedig már volt form küldve, akkor igen... szépen fejlődik visszafelé a dolog, 9 éve még ilyen probléma nem volt, bár akkor is sok jsf, és AS bug volt.
-
togvau
senior tag
Rájöttem, sehogy. (legalább is úgy, hogy egy includeolt form működjön).
Az mitől van, hogy egy h
utputlink-re való kattintáskor
org.apache.jasper.JasperException: java.lang.NullPointerException
-al száll el, ha előtte nem küldtem el legalább 1x formot, és működik a linkelés ha már küldtem formot? -
togvau
senior tag
Kellene JSF-ben az <ui: taglib, de most az eclipse segítsége nélkül kell írtnom a jsf-et? Mert már amikor beállítom a JSF facetet, kiválasztom hogy a runtime libraryjait használja (mert írja is hogy az tud ilyet szolgáltatni), de aláhúzza a taglibeket "Can not find the tag library descriptor for "http://java.sun.com/jsf/core" és persze a kiegészítés sem megy. Csak akkor megy, ha userlibként behúzok 2 jsf jart.
Szerk: most működik a kiegészítés (bár ugyanúgy aláhúz), de ugyan azok jelennek meg benne mint a <h:-ban hiszen ugyan az a taglib uri is.
Mi az isten van ezzel a JSF-el hogy tele van ilyen összevissza, nem létező tageket használó egymásnak ellentmondó tutorialokkal a net?
Hogy a tudok egy nyomorék jsp/jsf fájlba egy másik jsp/jsf fájtl includeolni, javascript libek nélkül?
-
togvau
senior tag
válasz
Lortech #9634 üzenetére
A linkelt oldalon ott van, hogy nem csak ott lehet(ett), de a másik oldalon meg az látszik, hogy wildflyon már nem úgy, de hogy hogy az sehol sincs.
standalone.xml-el meg nesze neked nagyban hangoztatott javas hordozhatóságmellesleg elég gagyi megoldás.
Akkor elengedem a JAAS-t, mert a nem JAAS megoldás pár perc alatt összejött, úgy ahogy kéne, csak az nem "szabványos". -
Lortech
addikt
Pedig a standalone/domain.xml-ben kell beállítanod a security domainedet. A security domain / realm az nem 1:1 egy alkalmazáshoz kapcsolt, hanem alkalmazások fölött álló koncepció. JAAS infrastruktúra és Java EE pedig nem ad standard megoldást arra, hogy hogyan kell az alkalmazáshoz security domaint rendelni. Ezért van az, hogy jboss-web.xml-ben kell megadni. Vagy standalone/domain.xml-ben default security domainnek beállítani.
jboss-web konfiguráció itt van említve: [link]
security subsystem pedig itt van leírva: [link]
Ebből látszik, hogy a Database / DatabaseUsers modul a webes admin konzolon
a org.jboss.security.auth.spi.DatabaseServerLoginModul-t jelenti.
Tutorial: [link]Fontos, hogy wildfly 11-től elytron alrendszer van és önmagában kevés a fenti legacy konfiguráció.
Migráció: [link] -
togvau
senior tag
válasz
Lortech #9632 üzenetére
Tudom milyen a userroles, azért írtam át org...akármi...database-re... csak lehet nem abban a fájlban ahol kéne. De éppen, hogy a standalone.xml-es gányolást akarom elkerülni, és valami projectben lévő xml-es megoldást használni, ami jbosshoz le van írva, de wildflyon úgy látszik már máshogy van, csak nincs leírva hogy, mert a normális dokumentáció az luxus...
Bárcsak ejb meg jpa logint írhatnék... de jó dolog is programozni, és nem konfigurálgatni, és azt kutatni, hogy az ami volt konfiguráció az most nem az, de nincs sehol leírva hogy mi... De hát 20% programozás, 80% xml matatás(konfiguráció), és hogy hol kell elhelyezni, és hogy kéne kinéznie az xml-nek.
-
Lortech
addikt
UsersRolesLoginModule az egy fapad login module, property fájl alapú, nem tud db-ből authentikálni.
Amit én linkeltem, az direktben a datasource-on keresztül jdbc-zik, de simán lehet írni JPA alapú login module-t, írtam is már wildflyra, weblogicra.. Nem triviális, de nem is ördöngősség.
Pl. csinálsz egy EJB szolgáltatást ami JPA-n keresztül elvégzi az authentikációhoz szükséges ellenőrzést. A loginmodule-ból pedig JNDI-n keresztül lookupolod az EJB-det. A loginmodule-t csomagolhatod az alkalmazásodhoz is, nem muszáj külön modulként telepíteni.
Belépés után httpservletrequestből (JSF-ben facescontexten keresztül) elérhető a felhasználó a getUserPrincipal metódussal (getName normálisan a felhasználó nevét adja vissza), ezzel bekérdezhetsz az adatbázisodba. Van még isUserInRole is ugyanitt. -
togvau
senior tag
Találtam egy ilyet [link]
Így tetszene, talán így nem lenne olyan szívás JAAS-t beállítani. De ez még jbossra van írva de itt nem írja hogy lenne ilyen "[domain_name]-jboss-beans.xml" a wildfly-ban.Na meg nekem adatbázisból dolgozó login modul kéne, de ha rákeresek wildflynál mindenhol azt írják, hogy code="Database" a jboss doc-ban meg egy ronda org.jboss.security.auth.spi.UsersRolesLoginModule-van, akkor gondolom wildflyban is hasonló kéne legyen nem?
Az kéne, hogy a jsf oldalakhoz JAAS belépés után lehessen hozzáférni, valamelyikhez adminként, valamelyikhez nem adminként, és a belépés után a belépett userről tudjak valamit (legjobb egy user entity lenne, de ha van egy username már az alapján is lekérdezhető az entity).
A JPA háttér a user entityket használja más táblákhoz kapcsolódva is, és a user entityből azonosítani is lehet mindent, de úgy látom jpa-s JAAS azonosítás nincs, csak sima jdbc, de az is jó lenne, csak hogy?Mert mindenféle összefüggéstelen egymásnak ellentmondó, ősrégi "tutorial" van erről...
-
togvau
senior tag
válasz
Lortech #9628 üzenetére
Köszi, éééés működik az egyik összefüggős táblába adás már, egy @ManyToOne hozzáadásával. Ennyi kellett. De fura, mert a jpa tools entity-tábla generátor megtalálta enélkül is az összefüggéseket (mert FK-zot), és jól generálta a táblákat ehhez.
A factoryt pedig már static singletonosítottam, és az entity manager is entitykezelő (session scoped) osztályonként singleton.
Másik (szintén kapcsolatban lévő) táblánál, mivel nincs ID-nek való egyedi adat, ezért külön int id van definiálva, simán @GeneratedValue.
De először is, egy hibernate_sequence nevű táblát keresve száll el, de a jpa tools sima sequence nevűt generál. Átneveztem, így elindítva már azon száll el, hogy ebben nincs next_val nevű oszlop IDENTITY stratégiával.
Egyik módszer sem működik. Komolyan olyan buta a perzisztenciaréteg, hogy nem tud egy üres táblában mondjuk csak simán 0-val kezdeni, és mindenféle táblák kellenek neki? -
Lortech
addikt
Nem definiáltál az entitásaidba relációkat, legalábbis nem látszik. Anélkül nem nagyon fog menni és FK be fog utagni, meg nyilván generátor se fog tudni jó db sémát generálni így. Ajánlott olvasmány: JPA relációk, de úgy általában JPA.
EntityManager em= getFactory().createEntityManager();
em.getTransaction().begin();
Event evt= new Event(new Date(),em.merge(getGod()),event, success);
em.persist(evt);
em.getTransaction().commit();
em.close();Ezzel itt az (lehet) a baj, hogy amint lezárod az EntityManagert, az összes managed entitás példányod, amit a persistence contextben használtál, detached lesz. Ennek pedig az a következménye, hogy a még be nem töltött, lazy load relációk nem tudnak majd betöltődni, ill. az objektumok módosítása esetén nem lesznek automatikusan perzisztálva sem.
-
togvau
senior tag
válasz
Lortech #9624 üzenetére
És ezt a merget-t hova kell tenni?
Mert így ugyan az a hiba. (getgod() konkrétan az adatbázisból kérdezi leg a god entity-t, ami egy user.
EntityManager em= getFactory().createEntityManager();
em.getTransaction().begin();
Event evt= new Event(new Date(),em.merge(getGod()),event, success);
em.persist(evt);
em.getTransaction().commit();
em.close();#9626 az még lehet más más állapotból volt, most username van, és amiatt sír, hogy "Unknown column 'username' in 'field list'"
De érdekes, mert az events-ben nincs username, hanem username_username-t generál oda a jpa tools, ahogy az applicant osztályban is applicant van, és applicant_username-t generál az adatbázisba. A username az events-ben és az applicant entity-ben is igazából egy hivatkozás az XUser entity-re
@Entity
public class XUser implements Serializable {
private String name;
@Id
private String username;
private String password;
private UsrType type;
@Entity
@Table(name="Events")
public class Event implements Serializable {
@Id
private Date date;
private XUser username;
private String event;
private boolean success;
@Entity
@Table(name="Applications")
public class Application implements Serializable {
@Id
@GeneratedValue
private int id;
private XUser applicant;
private float amount;
private boolean approved;Lehet bugos a JPA Tools table from entities generátora?
Szerk:
kipróbáltam azt hogy stimmeljen pontosan a név, tehát@Entity
@Table(name="Events")
public class Event implements Serializable {
@Id
private Date date;
@Column(name="USERNAME_USERNAME")
private XUser username;
private String event;
private boolean success;De ez sem nyert:
"Cannot add or update a child row: a foreign key constraint fails (`ulytestdb`.`events`, CONSTRAINT `FK_Events_USERNAME_USERNAME` FOREIGN KEY (`USERNAME_USERNAME`) REFERENCES `xuser` (`USERNAME`))
-
Lortech
addikt
Azt értettem alatta, hogy az entitásban/db-ben a probléma mezőt/oszlopot nem jól definiáltad.
Pl. nem jó oszlopnevet adtál meg.
Detached entity passed to persistnek számos oka lehet. Kézzel állítasz be kulcs mezőket mentés előtt? Másodjára persisttel már nem fog menni, mert már létezik adott kulcsú mező, viszont az entity detached állapotban van, mivel még a persistence contextedbe nem töltődött be (pl. merge-dzsel tudod manageddé tenni). Látatlanban okosabbat nem tudok mondani. -
togvau
senior tag
válasz
Lortech #9621 üzenetére
És ez mit jelent hogy rossz az entity db mappingem? Az entitykből lettek generálva a táblák.
Egyébként most megcsináltam fordítva, a meglévő táblákból generáltam az entityket, így kiegészült pár mappedby-al, meg onetomany, meg manytone annotációval, 2 user hozzáadás ment, bár event akkor is "detached entity passed to persist", de aztán már a user hozzáadás is ugyan ez. Most már generálni sem tudok az entitykből táblát, mert az meg más exceptionnel száll el.
Szóval állítom vissza az ezelőtt mentett workspacet... -
Aethelstone
addikt
Véleményem szerint a jsp / jsf + ejb kombó fölött erősen eljárt már az idő.....nem vitaindító...
-
Lortech
addikt
-
togvau
senior tag
Vannak így létrehozott adatbázis táblák, JPA entitykből:
CREATE TABLE Applications (ID INTEGER NOT NULL, AMOUNT FLOAT, APPROVED TINYINT(1) default 0, APPLICANT_USERNAME VARCHAR(255), PRIMARY KEY (ID))
CREATE TABLE Events (DATE DATETIME NOT NULL, EVENT VARCHAR(255), SUCCESS TINYINT(1) default 0, USER_USERNAME VARCHAR(255), PRIMARY KEY (DATE))
CREATE TABLE XUSER (USERNAME VARCHAR(255) NOT NULL, NAME VARCHAR(255), PASSWORD VARCHAR(255), TYPE INTEGER, PRIMARY KEY (USERNAME))
ALTER TABLE Applications ADD CONSTRAINT FK_Applications_APPLICANT_USERNAME FOREIGN KEY (APPLICANT_USERNAME) REFERENCES XUSER (USERNAME)
ALTER TABLE Events ADD CONSTRAINT FK_Events_USER_USERNAME FOREIGN KEY (USER_USERNAME) REFERENCES XUSER (USERNAME)
CREATE TABLE SEQUENCE (SEQ_NAME VARCHAR(50) NOT NULL, SEQ_COUNT DECIMAL(38), PRIMARY KEY (SEQ_NAME))
INSERT INTO SEQUENCE(SEQ_NAME, SEQ_COUNT) values ('SEQ_GEN', 0)Xuser létrehozása megy, de eventet már nem lehet, mert:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'user' in 'field list'
Akkor is ezt dobja, ha az eventben lévő user példányt létrehozom, és az megy az event entity-be, de akkor is ugyan az, ha konkrétan a JPA-s lekérdezésből jött user példány van az eventbe irányítva.
Ez mitől van? Hogy lehet a wildfly hibernate-jének a végső SQL parancsait kiirattatni mondjuk a konzolra? Az lehet segítene a hiba keresésben.
-
Lortech
addikt
Na ez az az irány, amit nem kéne erőltetni.
Javaslom, szervezd EJB-be az üzleti logikádat és az adathozzáférést, és azt injektáld a JSF managed beanbe. Mert az nem arra való, hogy direktben JPA-zz és tranzakciót kezelj benne.
AZ EJB-be pedig injektáld az entitymanageredet pl. az általam fentebb írd módon. Így nem kell foglalkoznod az entitymanager létrehozásával, életciklusával (pl. hogy többször létrehozod a factory-t, mint ahogy tetted).
BalusC tutorialjait, megoldásait érdemes olvasni, ő jó forrása a JSF-fel kapcsolatos megoldásoknak: [link]JAAS-hoz: a login-config.xml az jboss szerinti leíró, wildfly-on máshogy néz ki.
wildfly login module pl (standalone.xml vagy domain.xml megfelelő profiljában):<security-domain name="xysecdomain">
<authentication>
<login-module code="org.jboss.security.auth.spi.DatabaseServerLoginModule" flag="required">
<module-option name="dsJndiName" value="ds jdni név"/>
... többi opció ...
</login-module>
</authentication>
</security-domain>De mindez megtehető webes admin konzolból is.
Aztán jboss-web.xml-ben kell egy <security-domain>xysecdomain</security-domain> hivatkozás, ami a webalkalmazásodat összekapcsolja a security domainnel wildfly-ban.selectItem vs enum passz, szerencsére már rég JSF-eztem.
-
togvau
senior tag
WARN [org.hibernate.jpa.internal.EntityManagerFactoryRegistry] (default task-3) HHH000436: Entity manager factory name (provajder) is already registered. If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
Ha
@ManagedBean(name="AnnoTestAdd")
@RequestScoped
public class TestAdd {
private EntityManagerFactory factory= Persistence.createEntityManagerFactory("Ulyprov");
private String username;
private String name;
....Semmi sem történik a JSF-ből való metódushívásra (semmi üzenet), ha:
@ManagedBean(name="AnnoTestAdd")
@RequestScoped
public class TestAdd {
private static final EntityManagerFactory factory= Persistence.createEntityManagerFactory("Ulyprov");
private String username;
private String name;
És akkor sem történik semmi ha applicationscoped-re változtatom.(most már jól emlékszem hogy régen is 10% volt a programozás, 90% a keretrendszerek lelki világának, és bugjainak a kitesztelése
)
És mindez azért történik, mert
<h:selectOneMenu value="#{AnnoTestAdd.type}">
<f:selectItems value="#{AnnoTestAdd.type}"/>
</h:selectOneMenu>
Ha ez nincs, működik.ez még is mi a....?
-
togvau
senior tag
válasz
Lortech #9615 üzenetére
Majd megpróbálkozom vele, de ez az egész JAAS konfiguráció nagyon zavaros nekem, pl azt se tudom hol kell lennie ennek a login-config.xml-nek, meg a web.xml-ben lévő dolgok is elég zavarosak.
Nade <h:selectItems>-et kéne nekem egy enummal feltölteni. Rákeresve mindenhol azt írják, hogy a JSF 2.2 már támogatja az enumokat magától, de minden enumos példában egy sima class-t használnak enumként, enum nincs sehol... És ki is írja errorként ha enumot adok meg, hogy nincs konstruktora.
-
Lortech
addikt
Wildfly picketboxot használ jaasra, van olyan login module, hogy
DatabaseServerLoginModule.
Meg lehet adni neki datasource-ot paraméterként és jdbc-vel hozzáfog férni a db-dhez. Nem tudom, friss-e a leírás, de bele lehet nézni a login module forrásába. -
togvau
senior tag
válasz
Lortech #9613 üzenetére
Köszi, közben rájöttem, hogy egyszerűen a createEntityManagerFactory paramétere rossz providerre mutatott, mert 8 éve jpaztam utoljára, és a kódrészlet amiből kicopyztam ugyan azt az azonosítót használta több dologra... így meg is lett a kavarodás.
Libeket majd utólag rendezem. Meg megpróbálok minél többet annotációba tenni, ha már egyre többet lehet. Én még a 454676 darab xml-be írogatós időszakba jpa jsf-eztem
De a jaas... az még mindig sötét, ugyan abból az adatbázisból kellene dolgoznia mint a JPA... de hogy? -
Lortech
addikt
Kézzel úgy tudtad feloldani helyesen a jsf-et, hogy a wildfly-odban lévő verziót (az appszerverben lévő verzióval pontosan megegyező) adtad hozzá, bármely más jsf lib hozzáadása lehet, hogy elfedi a hibaüzenetet, de problémát okozhat (és semmiképp se csomagold bele az elkészült artifactodba függőségként)
Hibernate a jpa implementáció wildflyban. Provider helyére: org.hibernate.ejb.HibernatePersistence kell.
A Wildfly szervereden definiálsz egy datasource-ot (standalone/domain.xml-ben kézzel
, vagy jboss-cli-ben vagy webes admin konzolon), majd a persistence.xml-ben (ear-ban META-INF könyvtárba, war-ban WEB-INF/classes/META-INF könyvtárba) beállítod a datasource-ot.
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="mysqlpu" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:jboss/datasources/mysqlds</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
</properties>
</persistence-unit>
</persistence>Ezután a managed beanekből már tudod injektálni az em-et:
@PersistenceContext(unitName = "mysqlpu")
protected EntityManager em; -
togvau
senior tag
Ok, rájöttem, hiányzott a form keret
De most jött a "No Persistence provider for EntityManager named".
Mit írjak a persistence-be a provider helyre? Csak hibernate-s provider stringeket találok ha ráguglizok, de nem működik. Vagy milyen JPA implementációt használ ez a wildfly?
Eclipse data source-ként be van állítva, de gondolom az egy másik rendszer rendszerének a rendszere, és nincs átjárás
-
togvau
senior tag
válasz
Lortech #9609 üzenetére
Már megoldottam (kézzel), volt 2 perc. Most a JAAS-al küzdök, a jsf oldalak authentikációját kéne megcsinálni vele, de ahány leírás róla, annyi egymásnak ellent mondó beállítás van. Úgy tűnik az nem megy hogy honnan szedje az adatokat (jelszó, role).
Na meg wildfly-on futtatott jsf egyszerű gombja aminek futtatnia kéne egy metódust, nem csinál semmit. Belöki az oldalt, klikk rá, és semmi. Konzolon sem, debug módban sem, semmit sem ír a szerver, meg más sem.
-
Lortech
addikt
-
togvau
senior tag
<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"%>Eclipse: Can not find the tag library descriptor for "http://java.sun.com/jsf/core"
Mi baja? Wildfly-ra van bekonfigolva, runtime provided library-ra.
Egyébként manapság mi a célszerűen használandó dátum-idő osztály? Adatbázisban lesz eltárolva. Jó az öreg java.util.Date?
-
válasz
Aethelstone #9602 üzenetére
Az a baj, hogy ennek nem vita lett volna a vége. Az vita, hogy pl. Maven vs. Gradle de a kolléga teljesen ignorálta a dolgot.
-
MrSealRD
veterán
válasz
Aethelstone #9602 üzenetére
Nem az összes vitát tiltotta le, csak ezt. Ez meg teljesen jogos volt. Akinek ilyen extrém véleménye van az nem hajlik arra, hogy vevő legyen más felvetésekre...Ebből egy parttalan vita lenne csak. Érdemi eredmény nélkül a végén személyeskedésbe fordulna.
Új hozzászólás Aktív témák
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- PlayStation 5
- Autós topik látogatók beszélgetős, offolós topikja
- exHWSW - Értünk mindenhez IS
- BestBuy topik
- Hobby elektronika
- Melyik tápegységet vegyem?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Crypto Trade
- Milyen házat vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- További aktív témák...
- AKCIÓ! GAMER PC: Új RYZEN 5 4500-5600X +RTX 3060/3070/3080 +Új 16-64GB DDR4! GAR/SZÁMLA! 50 FÉLE HÁZ
- UHH! HP EliteBook 840 G8 Fémházas Laptop 14" -45% i5-1145G7 4Mag 32/512 FHD IPS Intel Iris Xe Magyar
- Xiaomi Redmi Note 13 Pro 5G - 8/256 - Media Markt garancia
- Xiaomi Redmi 9at - 2/32 - szürke
- Xiaomi Mi8 - 6/128 - fekete
- Samsung Galaxy S22 Ultra , 8/128 GB , Kártyafüggetlen
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- Csere-Beszámítás! Asus Rog Strix G731GU Gamer Noti! I7 9750H / GTX 1660TI / 16GB D4 / 512 SSD
- Bomba ár! Lenovo ThinkPad E550 - i5-5GEN I 8GB I 256SSD I DVDRW I 15,6" HD I CAM I W10 I Garancia
- Samsung Galaxy A12 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest