- Google Pixel 6/7/8 topik
- Huawei Mate 20 Pro - a mindenit!
- Ezek a OnePlus 12 és 12R európai árai
- Telekom mobilszolgáltatások
- Motorola Edge 40 - jó bőr
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Okosóra és okoskiegészítő topik
- Holnap mutatkozik be a HMD Pulse Pro
- Audiofil mobillal készül a Moondrop
- MG4 menetpróba
Hirdetés
-
Nyár közepén jön az AOC 540 Hz-es gaming monitora
ph Az Agon Pro szériás, kellemes felszereltségű újdonság lényegesen olcsóbb lesz a jelenleg kapható ellenlábasánál.
-
20 ezer új munkást visz Eindhovenbe az ASML
it Hatalmas politikai feszültséget okozott az ASML és a holland kormány nézeteltérése, de most úgy néz ki, hogy jelentős bővítésbe kezdenek Eindhovenben.
-
PowerWash Simulator - Már több mint 12 millióan próbálták ki
gp Sokak szerint abszurd a játék alap témája, mégis nagyon sokan döntöttek arról hogy kipróbálják a programot.
Új hozzászólás Aktív témák
-
CJ19
csendes tag
válasz WonderCSabo #7099 üzenetére
Igen, tudom. A kodot magamnak írtam ezert ilyen furcsa nevű változók/metódusok vannak benne.. de tény, ideje lenne átszokni az angol elnevezésekre! Köszi a tanácsot !
-
veterán
Betenném ide is életem első stackoverflow kérdését, hátha valaki tud segíteni.
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
jetarko
csendes tag
válasz Oppenheimer #7102 üzenetére
Tipp:
Error creating bean with name 'emf' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException:
A spring xml-ben emf-t adtál meg, a repoban meg em-re hivatkozol.
Az xml fájlokban miért van annyi kommentezés?<!-- Use @Component annotations for bean definitions -->
<context:component-scan base-package="com.movietime.controller" />Itt szerintem fel kell sorolni azokat a packageket amikben @componentekre hivatkozol. Pl dao(repo) service csomagok is.
[ Szerkesztve ]
-
Lortech
addikt
válasz Oppenheimer #7102 üzenetére
Szerintem az van, amit a hibaüzenet is mond, hogy ha JTA -t akarsz használni, akkor a persistence-unit-on belül kell egy <jta-data-source>$datasource</jta-data-source>
Ha meg nem JTA, akkor a transaction-type-ot át kell állítani RESOURCE_LOCAL-ra.[ Szerkesztve ]
Thank you to god for making me an atheist
-
floatr
veterán
válasz Oppenheimer #7102 üzenetére
[link] Egy válasz a sok közül
Amúgy a load-time weaving nem fog működni tomcat alatt. Egy kollégám hónapokig kesergett miatta. JUnit tesztben ment tomcat 8 alatt nem. Ha jól emlékszem 7-essel még ment a dolog.
De ha nem akarsz métereseket szívni a persistence.xml és tsai konfigurációjával, akkor miért nem csak springben rakod össze a datasource + JPA EMF csomagot?
<!-- setting up JPA EMF -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
p:dataSource-ref="dataSource"
p:packagesToScan="com.movietime.entities" >
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
</property>
<property name="jpaProperties">
<props>
...
</props>
</property>
</bean>
<!-- Transaction Manager -->
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
p:entityManagerFactory-ref="entityManagerFactory" />
<tx:annotation-driven />
<bean id="persistenceExceptionTranslationPostProcessor"
class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" /> -
jetarko
csendes tag
Service rétegben akarok egy bizonyos ídő után módosítani az objektum értékén, de nem megy.
A user bejelentkezik majd kap egy aktivációs tokent, de azt akarom, hogy a token csak x ideig legyen életben.
A dao és service így néz ki röviden: [link][link]
Hiba üzenet:org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
at org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:134)
at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:1014)A szál előtti módosítás megtörténik a db-ben, de mikor a szál elkezdi a módosítást, akkor jön a hiba.
Nem csináltam még szálkezelést Service rétegen belül, hogyan kéne ezt rendesen kivitelezni?
-
Mukorka
addikt
válasz jetarko #7107 üzenetére
Hát nem Így!
Nem elég neked ha a session timeout-ol egy idő után?
Tippre még csinálhatnál bejelentkezéskor egy timer taskot ami adott idő után lejáratja a tokent vagy meghívhatod a kódodat egy Async függvényel ott meg már lenne tranzakciód is stb.
[ Szerkesztve ]
Mukor#2214 --- "Ezt nem én gondolom így, EZ EGY TÉNY!"
-
veterán
válasz jetarko #7103 üzenetére
(#7103) jetarko:
Itt szerintem fel kell sorolni azokat a packageket amikben @componentekre hivatkozol. Pl dao(repo) service csomagok is.Felsorolhatom, de nem kéne neki rekurzívan bejárni a packageket?
A spring xml-ben emf-t adtál meg, a repoban meg em-re hivatkozol.
Tutorialokból raktam össze. A célom az lenne, hogy @PersistenceContext annotációval be tudjak injektálni EntityManagert, és azt használni. Egyébként itt ezt írja: Spring injects @PersistenceContext into Spring components on its own. In order to do so, applications need to be have access to an EntityManagerFactory bean. Gondolom ezért tettek a tutorialban a spring-servlet.xml-be LocalContainerEntityManagerFactoryBean-t.
Ha ehhez a funkcionalitáshoz, amit írtam, valami más kéne a spring-servlet.xml-be, nyugodtan szóljatok.Az xml fájlokban miért van annyi kommentezés?
Azok olyan dolgok amik most nem kellenek, de később fognak. Először működjenek legalább az alapok.
(#7104) Lortech:
Beírtam a persistence.xml-be az alábbi sort az alapján amit floatr linkelt:
<jta-data-source>java:/DefaultDS</jta-data-source>de deployment közben továbbra is error van:
13:57:38,405 INFO [org.jboss.as.server] (ServerService Thread Pool -- 28) JBAS018559: Deployed "MovieTimeProject.war" (runtime-name : "MovieTimeProject.war")
(#7105) floatr:
Ahogy fent is írtam, kipróbáltam, hogy beállítom a jta-data-source-ot, de nem jó. Később szeretném ha az adatbázis 2db clusterezett MySQL instance lenne, köztük egy load balancerrel, és ehhez gondolom nem elég jó a RESOURCE_LOCAL transaction-type. Egyébként Wildfly 8.2-t akarok használni, nem Tomcatet.
Azt mondod, ha kidobnám a persistence.xml-t a kukába, és helyette az általad adott kóddal configolok a spring-servlet.xml-ben, akkor működőképes lesz a cucc? Ha később JTA tranzakciókra kell átállnom, akkor is megoldható lesz így?
[ Szerkesztve ]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
veterán
válasz Oppenheimer #7109 üzenetére
Rossz sort másoltam ki. Ez az error.
[ Szerkesztve ]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
Lortech
addikt
válasz Oppenheimer #7110 üzenetére
Datasource definícióval nem jó valamiű, de mindenre van egy SO link: [link]
Thank you to god for making me an atheist
-
jetarko
csendes tag
válasz Oppenheimer #7109 üzenetére
Szerintem az xml-ben és java kódban megadottnak egyeznie kell, azaz ha ott emf, akkor a java-ban is írd át emf-re.
A package bejárás meg azért nem megy ha jól látom, mert "com.movietime.controller" van megadva, de a dao ez mellett van és nem benne, ezért vagy megadod, hogy "com.movietime" és innentől bejárja vagy, megadod külön a dao és service package-t is. -
veterán
válasz Lortech #7111 üzenetére
Már elindultam abba az irányba, hogy persistence.xml-t kitöröltem, és helyette a spring-servlet.xml-ben configolok, de ekkor egyrészt sír az IDE, hogy hiányzik a persistence.xml, másrészt meg nem tudom, hogy ez esetben hogyan férek hozzá a PersistenceContexthez, vagy azzal ekvivalens funkcióhoz. Ehhez dobna valaki egy leírást?
Most így néz ki a spring-servlet.xml.
(#7112) jetarko:
Jaja, azt benéztem, de eredetileg azért volt ott a .controller, mert azt hittem, hogy csak @Controller osztályokra van szüksége.[ Szerkesztve ]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
floatr
veterán
válasz Oppenheimer #7113 üzenetére
Találtam neked egy persistence unitos összetettebb példát: [link]
-
veterán
-
zolka95
őstag
A float változóba csak 32bites rendszeren tudok törtszámot megadni?
A double-be pedig 64bitesen?Mert olvasom a java 24 óra alatt című könyvet (2000-ben jelent meg) és ebben azt írja, hogy a float-ban lehet tört számot megadni. Nálam nem működött (64 bites rendszer).
Rákerestem és ezt találtam:float egyszeres pontosságú lebegőpontos méret/formátum: 32 bit IEEE 754
double dupla pontosságú lebegőpontos méret/formátum: 64 bit IEEE 754Ez azt jelentené, amit írtam?
Mert a double működik tört számmal, a float pedig nem.És mit jelent az egyszeres és dupla pontosságú lebegőpontos változó?
[ Szerkesztve ]
Figyeltél rám? Vagy azt a piros ruhás nőt nézted?
-
-
Lortech
addikt
Szerintem arra gondolhat, hogy ha float f = 0.1; -t ír, akkor erre hibát jelez a fordító, mivel a 0.1 literál alapból egy double, de ha 0.1f -et ír, akkor már float.
szerk: ja.
Szóval zolka95, ha
float valami = 3.15;
helyett
float valami = 3.15f; -et írsz, akkor már nem panaszkodik a fordító.[ Szerkesztve ]
Thank you to god for making me an atheist
-
estro
csendes tag
Sziasztok!
Akarok csinálni egy bejelentkezést jsp+servletel, de ugyan azt a hibát kapom akármit csinálok.
Servlet doPost:PrintWriter out = response.getWriter();
String username = request.getParameter("user");
String password = request.getParameter("pwd");
UserSQL dao = new UserSQL();
int result = dao.loginUser(username, password);
if (result == 1) {
RequestDispatcher rd = getServletContext().getRequestDispatcher("index.jsp");
out.println("<font color=red>Adatbázis hiba.</font>");
}
if (result == 2) {
RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
// RequestDispatcher rd = getServletContext().getRequestDispatcher("error.jsp");
out.println("<font color=red>Rossz felhasználónév/jelszó.</font>");
}
HttpSession s = request.getSession();
s.setAttribute("username", username);
s.setAttribute("login", true);
response.sendRedirect("success.jsp");A userSQL class aminek át kellene vennie a 2 stringet és vissza adni egy számot, de szerintem nem kapja meg az értékeket:
public int loginUser(String username, String password) {
connect();
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
String sql_comm = "select * from root.users where username = ’" + username + "’ and password = ’" + password + "’";
try {
stmt = con.createStatement();
rs = stmt.executeQuery(sql_comm);
if (rs.next() == false) {
return 2;
} else {
return 0;
}
} catch (SQLException e) {
e.printStackTrace();
return 1;
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (con != null) {
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}Hibaüzenet:
java.lang.NullPointerException
model.UserSQL.loginUser(UserSQL.java:47)
controller.login.doPost(login.java:53)
javax.servlet.http.HttpServlet.service(HttpServlet.java:644)
javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)Tudna valaki segíteni, ötletet adni mi baja lehet? Van sok megoldás a neten, de én ezzel akarom csinálni és érdekelne mit rontottam el. NullPointerException ez ha jól tudom azt jelenti, hogy null értékű objektummal tér vissza, de javítsatok ki ha tévedek.
Előre is köszi a segítséget.[ Szerkesztve ]
-
Lortech
addikt
NullPointerException-t alapvetően akkor kapsz, ha olyan objektum mezőjére / metódusára hivatkozol, amely null.
A konkrét esetben a lényeg:
...
Connection con = null;
...
stmt = con.createStatement();Nem állítod be a con változódat, null marad, de hívod a metódusát.
Thank you to god for making me an atheist
-
Aethelstone
addikt
Connection con = null;
Statement stmt = null;
ResultSet rs = null;String sql_comm = "select * from root.users where username = ’" + username + "’ and password = ’" + password + "’";
try {stmt = con.createStatement();
Mintha nem lenne inicializálva....gondolom, hogy a connect(); tenné meg, de akkor azt mondjuk a deklaráció után kellene írni...vagy hogyisvanez?
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
veterán
Miota a workspacet felhobe akarom menteni, azota crashel az asztalin a sync engine...
Ezzel mas is talalkozott, vagy csak en voltam helikopter, hogy ezzel probalkoztam?Everybody lies.
-
Sk8erPeter
nagyúr
Azt vágod, hogy a felhasználótól kapott adatot egy az egyben dobálod bele a query-be, escape-elés vagy sokkal inkább prepared statement (rendkívül meglepő módon erre való a PreparedStatement és a Connection osztály prepareStatement metódusa) használata helyett, ezzel fasza kis lehetőséget adva az SQL Injectionre?
http://docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html
Meg amúgy a SELECT * használata nagyon nem javasolt sehol. Sorold fel szépen a mezőket, amikre szükséged van.
Sk8erPeter
-
Ursache
senior tag
Miert nem javasolt? Vannak otleteim, de hallani is akarok felole.
https://www.youtube.com/watch?v=eIri9YLHpOg
-
Sk8erPeter
nagyúr
válasz Ursache #7133 üzenetére
Most ezt kitől kérdezed? Mert megint nem használtad a Válasz linket. Szokj már rá a használatára légyszi, nagyon zavaró a hiánya (hogy nincs előzménye a hsz.-eidnek a fejlécben), köszi.
Amúgy keress rá Google-ben a "why select * is bad" kulcsszavakra, bőven fogsz találni cikkeket a témában. Röviden: teljesítmény szempontjából nagyon káros tud lenni. Ezenkívül teljesen felesleges minden egyes oszlopot kiválasztani, amikor az esetek 99%-ában nincs szükség mindegyikre. Nem beszélve arról, hogy a mezők egyértelmű felsorolásával kiolvasható a query-ből az is, hogy egyáltalán milyen mezők lesznek elérhetőek (pl. ha már JDBC, a ResultSetből való mezőeléréskor), és melyekre van szükségünk, tehát maga a kód is értelmesebb lesz tőle.[ Szerkesztve ]
Sk8erPeter
-
Ursache
senior tag
válasz Sk8erPeter #7134 üzenetére
Pár éve olvastam egy etikettet, vagy szabályzatot, miszerint ha az éppen előtted szólónak szánod a hozzászólást, akkor ne használd a válasz gombot. Azóta megváltozott? Vagy a topicra más érvényes?
Tőled kérdeztem.
Oké, köszi, nagyjából ezeket tudtam volna elképzelni.
https://www.youtube.com/watch?v=eIri9YLHpOg
-
Sk8erPeter
nagyúr
válasz Ursache #7135 üzenetére
"Pár éve olvastam egy etikettet, vagy szabályzatot, miszerint ha az éppen előtted szólónak szánod a hozzászólást, akkor ne használd a válasz gombot. Azóta megváltozott? Vagy a topicra más érvényes?"
Ilyen szabály SEHOL nem volt soha érvényben. Sőt, pont ennek ellenkezője van az alapelvek között is.
http://prohardver.hu/allando/alapelvek.html#jotanacsok
III.12.4.3. "Egy hozzászólásra mindig a Válasz linkkel írj, hogy mindenki láthassa mire és kinek válaszoltál."Sk8erPeter
-
Ursache
senior tag
-
Aethelstone
addikt
válasz Sk8erPeter #7136 üzenetére
Mivel megeshet, hogy közben valaki gyorsabban ír egy hozzászólást, már azonnal nem a következő lesz....
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Sk8erPeter
nagyúr
válasz Aethelstone #7138 üzenetére
Így van. De vágod, nem nekem kell magyarázni, pont emiatt szóltam a kollégának.
Sk8erPeter
-
Aethelstone
addikt
-
Ursache
senior tag
válasz Sk8erPeter #7134 üzenetére
LOL! Most látom, hogy ezt a "másik" topikban is megkaptam, arra ott nem reagálnék, ha nem gond
https://www.youtube.com/watch?v=eIri9YLHpOg
-
floatr
veterán
válasz Ursache #7135 üzenetére
Visszakanyarodva az eredeti felvetéshez -- mielőtt elmegy a topic a PH fórum szabályai irányába -- még ha van egy perzisztencia motorod, az is bele fog gabalyodni az oszlop nevekbe, mert nem fog tudni kötni semmilyen objektumot a resultset-hez jól, ha abban két azonos nevű oszlop van, pl.:
SELECT * FROM User u
INNER JOIN Company c ON c.id=u.company
WHERE ...Ha a User és a Company táblában is van egy name oszlop, akkor a visszakapott eredményben a User és a Company nevek értékei kavarodnak. Ha már csak egy natív SQL-t hajtasz végre, és egy Object[]-be kéred az eredményt, akkor is az egyik táblában lévő name értéke lesz mindkét pozícióban. Ezért van az, hogy minden mezőt felsorolnak és mindegyiknek egy aliast adnak.
[ Szerkesztve ]
-
estro
csendes tag
válasz Sk8erPeter #7132 üzenetére
Az SQL injection tudtam, hogy veszélyes az adatbázisomra, de még nem néztem utána mit lehet ellene tenni, de akkor most már tudom . A SELECT * tényleg eléggé rontja a teljesítményt most, hogy belegondolok (főleg ha majd joint is használok), majd kijavítom azt is, mert már van vagy 5 mező mivel regisztrációt is csináltam hozzá. Köszi a tippeket!
-
werszomjas
őstag
Sziasztok.
Az alábbi oldalon nektek megy a java?
Hiába telepítem a java alkalmazást, nem akar menni. Se chrome, se mozilla, se explorer. Win7 alatt.
Ezt írja:
Nem megfelelő futtatókörnyezet
Ha ezt az oldalt látja, az azt jelenti, böngészője nem, vagy csak részben alkalmas az e-Jelentés rendszer futtatására.
A probléma oka: nincs engedélyezve a JAVA alkalmazások futtatása.
A hiba elhárításához kérjük vegye fel a kapcsolatot számítógépe rendszergazdájával, és kérje meg, engedélyezze az e-Jelentés weblapjáról származó JAVA alkalmazások futtatását.Ha valakinek van valami ötlete, szívesen fogadom, meg hogy egyáltalán van-e olyan akinek megy
üdv
-
veterán
Na újra itt vagyok. Kicsit rendbeszedtem a config fájlokat, most a következőképpen néznek ki a dolgok:
web.xml, spring-servlet.xml, persistence.xml
A HelloController-ben kérek egy lekérdezést az adatbázisból a MovieService-en keresztük a MovieRepository-tól, és az em.createQuery exceptiont dob.
Nem értem miért, mert a LocalContainerEntityManagerFactoryBean-ben meg van adva a "packagesToScan" property "com.movietime.entities"-nek, és a persistence.xml-ben is ott van, hogy
<exclude-unlisted-classes>false</exclude-unlisted-classes>.Azt mondja, hogy
"[14, 19] The abstract schema type 'Movie' is unknown.
[28, 35] The state field path 'm.title' cannot be resolved to a valid type."miközben az IDE képes volt rájönni, hogy mi ez a Movie.
Miért ilyen nehéz rávenni a springet és a JPA-t, hogy működjön?
[ Szerkesztve ]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
veterán
válasz Oppenheimer #7147 üzenetére
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
veterán
válasz Oppenheimer #7147 üzenetére
Az a baj, hogy hiába gúglizok, csak olyan találatok vannak, amikor JPQL-ben a tábla nevét használták az entitás helyett, de nálam nem így van. Próbáltam azt is, hogy a
<exclude-unlisted-classes>false</exclude-unlisted-classes>
sort kivettem a persistence.xml-ből és explicit felsoroltam az osztályokat, ugyan ez az error volt.https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
nagyúr
válasz Oppenheimer #7147 üzenetére
"Miért ilyen nehéz rávenni a springet és a JPA-t, hogy működjön?"
Azért,mert ezeket arra találták ki, hogy minel tobb konzultanst meg fejlesztőt kelljen a multicegeknek alkalmaznia, az, hogy bizonyos esetben meg lehet veluk oldani a problémát (vagy azt hiszed, hogy meg lehet), csak egy mellékhatás /troll
"LocalContainerEntityManagerFactoryBean" -- ez szepen összefoglalja
Szoval ha jol latom, egy irtozatosan egyszeru dolgot akarsz megcsinalni -- a problema ezzel az okoszisztemaval az, hogy
- egyszeru dolgokat is bonyolult megcsinalni
- ha az egesz hobelevancot megtanulod sok-sok ido alatt, onnantol meg van egy bazi nagy kalapacsod, es igazabol ugy tudsz normalis penzt keresni, ha mindent szognek nezel.[ Szerkesztve ]
while (!sleep) sheep++;
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- HiFi műszaki szemmel - sztereó hangrendszerek
- Google Pixel 6/7/8 topik
- DIGI internet
- Suzuki topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- exHWSW - Értünk mindenhez IS
- Huawei Mate 20 Pro - a mindenit!
- Mini-ITX
- Ezek a OnePlus 12 és 12R európai árai
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- ÚJ Független Apple iPhone 15 128GB !!! 1éV nemzetközi APPLE GARANCiA
- ÚJ bontatlan aktiválatlan Apple iPhone 15 256GB !!! 1éV nemzetközi APPLE GARANCiA
- AKCIÓ Új Bontatlan 2023 MacBook Pro 16 M2 Pro 12/19 16GB/512GB Magyar billent Azonnal Átvehető Deák.
- ÚJ Független Apple iPhone 15 Plus 128GB és 256GB Black ! 1éV nemzetközi APPLE GARANCiA
- teljesen ÚJ bontatlan Apple iPhone 15 Pro 128GB !!! 1éV nemzetközi APPLE GARANCiA