Java

[Megoldva]Nem tudok bejelentkezni az ejelentésbe.

Fórumok

Helósztok. A fogorvosomnak kellene belépjek az ejelentés nevű oldalára, ahol valami bigyókat tud letölteni. A bigyók letöltése eddig se volt egyszerű kb. minden 100-adik frissítésre volt hajlandó megnyitni a listát. Most viszont újra telepítettem a gépét, jobban mondva egy régi imaget vissza állítottam, amivel régen tökéletesen ment az ejelentés, most viszont be se tudok lépni! Arról pofázik, hogy "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." A Java természetesen telepítve és frissítve van. Viszont ami nagyon érdekes, hogy megpróbáltam itthonról W7-ről belépni, de itt is ugyanezt a baromságot nyomja...:\ Ti betudtok lépni, vagy ha nincs azonosítótok, akkor a https://ejelentes.oep.hu/ futtatókörnyezet ellenőrzése mit mond nektek?:\ A válaszokat előre is köszi.

CriteriaBuilder Join probléma

Fórumok

SQL-ben így kellene kinéznie a Join-nak:
LEFT OUTER JOIN igenyek t10 ON (t10.szolgaltatas_id = t1.id AND t10.status_id<50)

Tehát minden elem legyen meg a lekérdezésben a t1-ből, ahol van olyan érték, ami 5-es status_id-nál kisebb, ott legyen a join-ból is érték mellete (1 lehet ilyen).

Ha a where feltételbe raknám a "t10.status_id<50"-t, akkor kiszűrné ezeket a rekordokat a t1-ből is.

Így hirtelen nem találtam megfelelőt az EclipseLink-ben a
Join szolgIgenyek = szolg.join("igenyekList", JoinType.LEFT);
kiegészítésére.

Google-ben sem találtam megoldást.

Van valami ami fölött átsiklottam?

Netbeans trükkök

Fórumok

Netbeans-ben lehet insert code segítségével metódusokat generáltatni. Pl alt+insert segítségével toString() metódust generáltatok az összes használt változóval.

Ha megváltoznak az osztály változói, típusra, névre, esetleg új változó jelenik meg, lehet-e aktualizálni a már létező, általa generált metódust anélkül, hogy azt kézzel ki kellene törölni? Legfőképp az új változós aktualizálás érdekelne.

Eleinor

Mi a gond ezzel a kóddal? Illetve cache alternatívák

Fórumok

Van egy egyszerű cache kódom a KittyCache alapján készült. A performanciája jobb volt mint a többié (EhCache, Guava ...), viszont a napokban fedeztem fel egy furcsaságot, ami gondot is okozhat. Estére, amikor eléri a kb. 900 ezer / 1 milliós lekérésszámot, elkezd nőni a load. Az addig 0.04-es load felmegy kb. 0.4-0.7-es loadra. A cache max elemszáma: 10 ezer.

CentOS alatt fut, java 8 update 20-al. Virtualizációs környezet: OpenVZ 4G RAM. Most így visszagondolva java 7-el is hasonlót produkált, de akkor még nem tűnt fel, hogy ez hiba lehet. 100M szabad ilyenkor még a heapből.

Ebből kb. 1G-át eszik futás közben a java. Van amikor 2 példány is fut egymás mellett, ilyenkor kb. 2G-át eszik, de ez nem az esti időszak.

Kipróbáltam, ha ilyenkor magas loadnál törlöm a cache-t, akkor visszamegy a CPU load 0.04 környékére.

Az is jó, ha tudtok ajánlani valami egyszerű memória cache-t (régen whirlycache-t használtam, de valami a mostani kódjában nem stimmel). De első sorban a hibalehetőségek izgatnak.
Tehát a kód:


import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger;

public class YSCache {

private final Map cache;
private final Queue queue;
private final int maxSize;
private final AtomicInteger cacheSize = new AtomicInteger();
private int gets;
private int hits;

public YSCache(int maxSize) {
this.maxSize = maxSize;
cache = new ConcurrentHashMap<>(maxSize, 0.8f, 16);
queue = new ConcurrentLinkedQueue<>();
}

public V get(K key) {
gets++;
V v = cache.get(key);
if (v != null) {
hits++;
}
return v;
}

public void put(K key, V value) {
if (cache.get(key) == null) {
cacheSize.incrementAndGet();
while (cacheSize.get() > maxSize) {
cacheSize.decrementAndGet();
cache.remove(queue.poll());
}
}
cache.put(key, value);
queue.add(key);
}

public int getGets() {
return gets;
}

public int getHits() {
return hits;
}
}

Java Users Meeting - 2014. szeptember 17.

Fórumok

http://www.meetup.com/javaforum-hu/events/188677712/

A megszokott algoritmus (minden páratlan hónap harmadik szerdája) szerinti júliusi alkalom a nyári szünet és a szabadságok okán idén is elmaradt, így a következő alkalom szeptember 17-én lesz.

Helyszín

A helyszínt a LogMeIn biztosítja! Köszönjük! :)

Tematika

Auth Gábor - Java EE 8 (15 perc előadás + 15 perc vita)

A napokban elindult a Java Enterprise Edition 8 specifikálása, meg is jelent a JSR-366, amely tartalmazza a vitaanyagot, illetve a nagyobb falatok specifikációját: CDI 2 (JSR 365), JSON-B (JSR 367), JMS 2.1 (JSR 368), Servlet 4 (JSR 369), JAX-RS 2.1 (JSR 370), MVC (JSR 371) és JSF 2.3 (JSR 372).

Az előadás során gyorsan végigvesszük a terveket és hagyunk egy kis időt a szakmai vitának is. :)

Balazs Banyai (LogMeIn) - JavaZone2014 beszámoló (25 perc + 5 perc)

Az előadás egy JavaZone 2014 beszámoló, avagy Norvégia legnagyobb IT-s konferenciájának összefoglalója, kiemelve néhány érdekes és említésre méltó témát, ötletet, újdonságot.

A további várható előadások egyelőre szervezés alatt vannak, ami azt is jelenti, hogy lehet jelentkezni előadónak jum@javaforum.hu címen, illetve a http://wiki.javaforum.hu/display/JAVAFORUM/JUM+ShowPool oldalon (mindössze az előadó neve, a téma és egy rövid leírás kell).

Jelentkezés: http://www.meetup.com/javaforum-hu/events/188677712/

Netbeans 8 Glassfish 4 NotificationQueue exeption

Fórumok

Üdv!

Ismerkedem a Java EE 7 + Glassfish 4 párossal.
Ezt a mintát próbáltam megcsinálni: http://netbeans.dzone.com/articles/develop-java-ee-6-app-jsf2
Még a kész app is megvan: itt

A Build lefut, de amikor deploy-olni szeretném a glassfish app szerverre:

...
Caused by: com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid destination jms/NotificationQueue for MDB: JNDI name not found
...
Caused by: com.sun.appserv.connectors.internal.api.ConnectorRuntimeException: Invalid destination jms/NotificationQueue for MDB: JNDI name not found
...
Info: Exception Occurred :Error occurred during deployment: Exception while loading the app : EJB Container initialization error.

Tudna segíteni valaki, hogy hol keressem a hibát? A JNDI-ben kell beállítani még valamit (ami a fenti leírásból kimaradt)?

(OS: Fedora 20 x64)

--
G.

java3D

Fórumok

Sziasztok.

Néhány évvel ezelőtt sikeresen megoldottam, hogy a mindenkori /usr/lib/jre könyvtáramban (ahol a teljes JAVA környezet van) ott legyen a java3D működőképesen.
A jre frissítéseket úgyvégetem, hogy kézzel rámásoltam a meglévő fájlokra az új jávát. a 3D valahol ott maradt benne, sosem bántottam.
Azonban most balga módon a könyvtárat töröltem (nem ittam ma kávét), ráadásul mentés nélkül, így elölről kezdhetem a 3D körüli bonyodalmaimat, melyek évekkel ezelőtt fel sem lettek írva a kis házi manualomban..

Tehát most azt szeretném, hogy nem egy prg (McIDAS) rakja fel a jávát a benne már szereplő 3D-vel együtt, hanem a JRE-t magam tudjam felrakni, a 3D-t meg utána bele, jó szokás szerint. Ezzel elérném azt, hogy megtanulnám manuálisan felrakni a 3Dcsomagot.

A történet ott kezdődik, hogy már az oracle honlapján elvéreztem tipikus lúzerként... (!)

-------
Amiket megtettem, mégsem működik:

file://localhost/dev/shm/j3d-1_5_2-linux-i586/README-unzip.html alapján külön könyvtárba unzippingeltem' a cuccokat ide:
/usr/lib/java3d
azután kiadtam ezeket itt:

export CLASSPATH=.:/usr/lib/java3d/lib/ext/j3dcore.jar:/usr/lib/java3d/lib/ext/j3dutils.jar:/usr/lib/java3d/lib/ext/vecmath.jar

export LD_LIBRARY_PATH=/usr/lib/java3d/lib/i386

...és semmi 6ása, nincs java3d

[megoldva] Spring + Nashorn = furcsa java.lang.IllegalStateException: null

Fórumok

Sziasztok,

Belefutottam egy "érdekes" dologba, és nem igazán tudom mihez kezdjek vele. Adott egy JavaScript fájl, amit szeretnék futtatni. A kód így néz ki:


Resource calculatorJs = new UrlResource("http://localhost:8080/scripts/calculator.js");
ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
Reader scriptReader = new InputStreamReader(calculatorJs.getInputStream());
engine.eval(scriptReader);

Tökéletesen működik, kivéve, hogy 2 Exception is belekerül a logba (illetve ugyanaz 2x):
java.lang.IllegalStateException: null
at org.springsource.loaded.MethodInvokerRewriter$RewriteClassAdaptor$RewritingMethodAdapter.visitInvokeDynamicInsn(MethodInvokerRewriter.java:997)
at sl.org.objectweb.asm.ClassReader.a(Unknown Source)
at sl.org.objectweb.asm.ClassReader.b(Unknown Source)
at sl.org.objectweb.asm.ClassReader.accept(Unknown Source)
at sl.org.objectweb.asm.ClassReader.accept(Unknown Source)
at org.springsource.loaded.MethodInvokerRewriter.rewrite(MethodInvokerRewriter.java:332)
at org.springsource.loaded.MethodInvokerRewriter.rewrite(MethodInvokerRewriter.java:96)
at org.springsource.loaded.TypeRegistry.methodCallRewriteUseCacheIfAvailable(TypeRegistry.java:830)
at org.springsource.loaded.agent.SpringLoadedPreProcessor.preProcess(SpringLoadedPreProcessor.java:317)
at org.springsource.loaded.agent.ClassPreProcessorAgentAdapter.transform(ClassPreProcessorAgentAdapter.java:102)
at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at jdk.nashorn.internal.runtime.ScriptLoader.installClass(ScriptLoader.java:74)
at jdk.nashorn.internal.runtime.Context$ContextCodeInstaller.install(Context.java:130)
at jdk.nashorn.internal.codegen.Compiler.install(Compiler.java:408)
at jdk.nashorn.internal.codegen.Compiler.install(Compiler.java:447)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:961)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:917)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:608)
at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:455)
at jdk.nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:182)
at jdk.nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:153)
at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:141)
at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:238)

Az elsőt a engineManager.getEngineByName("nashorn"), a másodikat pedig a engine.eval(scriptReader) sor dobja. Kicsit utánnajártam a dolognak, és amikor a NashornScriptEngineFactory.getScriptEngine() adja vissza a NashornScriptEngine, közben kerül bele. Természetesen elkapni nem lehet, hiszen valaki valahol lekezeli a kivételt, csak csúnyálkodik a logban.

A dolog érdekessége, hogy tesztesetem is, annyi különbséggel, hogy abban @Before beállítom az eginet:


ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
Reader scriptReader = new InputStreamReader(new FileSystemResource("public/scripts/calculator.js").getInputStream());
engine.eval(scriptReader);

Természetesen így is tökéletesen megy, és logba sem kerül semmi.

Nekem gyanús a kivétel első sora: at org.springsource.loaded.MethodInvokerRewriter$RewriteClassAdaptor$RewritingMethodAdapter.visitInvokeDynamicInsn(MethodInvokerRewriter.java:997) ?? mit keres ott a vezérlés? (amíg ezt olvassátok szerzek Spring sourcet, és meglesem)

Amivel próbálkoztam:
log4j.logger.jdk.nashorn.api.scripting.NashornScriptEngineFactory=FATAL
log4j.logger.jdk.nashorn.api.scripting.NashornScriptEngine=FATAL
log4j.logger.org.springsource.loaded.MethodInvokerRewriter=FATAL

de ezek nem segítettek.

Előre is köszönöm minden hozzászólást.

Java, Future és a többszálúság esete

Fórumok

Sziasztok!

Kezdő programozó vagyok a Javaban és kiváncsi lennék a következőre:

Van egy programom, ami SQL lekéréseket hajt végre egy szerveren. Szeretném, ha ezek a lekérések async módban történnének és nem függesztenék fel a main threadet, ezzel lefagyasztva a szálat. Mivel az SQL lekéréseknek vannak visszatérési értékük, ezért a Future - Callable kombót használnám, de nem tudom, hogy ez pontosan hogyan is működik. Hogyan oldjam meg, hogy amíg a main thread nem kapja meg a future.get()-et, addig ne álljon meg a szál?

Köszönöm a válaszaitokat.

JAVA EE Glassfish doksi

Fórumok

Üdv!

A JAVA EE Glassfish alkalmazás szerver témához keresek doksit. Olyan kellene, ami elég részletes.
Korábban (~2009.) már volt hasonló téma itt, de akkor nem nagyon volt jó könyv a témához.
A helyzet nem változott?

Egyelőre kiindulásnak a JAVA doksija van:
http://docs.oracle.com/javaee/7/tutorial/doc/home.htm

Jó is, de jó volna magyarul is esetleg, ami szépen elmagyarázza részletesebben a technológia részleteit mintakódokkal.
Tud valaki jó kis magyar könyvről?

--
G.