JMC csatlakozási probléma.

+1 vote
asked May 23, 2014 in IRF tantárgy by csa (45 points)  

Sziasztok!

Következő a problémám:
Elindítom a BookStore alkalmazást localhost-on, megnyitom a JMC-t.
Alapból nem látok semmit, hozzáadok egy új kapcsolatot, ekkor viszont meghal a program az alábbi hibával:
Exception in thread "pool-1-thread-2" java.lang.ArrayIndexOutOfBoundsException:
1 at hu.bme.mit.ftsrg.bookdatabase.handler.RequestHandler.run(RequestHandler.java:46)
Illetve a JMC az alábbival:
Could not connect to localhost:8082 : Failed to retrieve RMIServer stub: javax.naming.CommunicationException [Root exception is java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is:
java.net.SocketTimeoutException: Read timed out]

Ha finish-re kattintok megjelenik a listában és csak az MBean Server megnyitásakor hal meg, Next-re kattintva már akkor meghal (gondolom tesztelné a kapcsolatot).

Port stimmel, mást nem állítottam.

commented May 23, 2014 by Pietro (72 points)  
Az a furcsa, hogy a 46. sor ez: `String resource = requestParts[1];`, amit ez előz meg: `String[] requestParts = headers.get(null).split("\\s+", 3);` (meg a `String method = requestParts[0];`, de az most mellékes). A requestParts tömb tartalma ilyesmi kéne, hogy legyen: `[POST, /user/login, HTTP/1.1]`, tehát innen pl. a `requestParts[1] == "/user/login"`. Szóval nem értem, hogy halhat ez meg a Te esetedben, ha az eredeti alkalmazáson nem is módosítottál semmit. :\
commented May 23, 2014 by csa (45 points)  
Nos azt én se, mindenesetre szerintem a timeout okozza a program halálát. Jó kérdés, hogy miért nem tudok csatlakozni.
commented May 23, 2014 by csa (45 points)  
Egyébként virtuális gépben működik de ezt a hibát elő tudom ott is hozni, hogyha kézzel adom hozzá az új kapcsolatot.
Ott az a különbség, hogy amikor futtatom a programot a JMC-ben megjelenik magától.

1 Answer

0 votes
answered May 24, 2014 by cseppento (294 points)  

Kipróbáltam JMC-vel és JConsole-lal egyaránt valamicske instrumentációval, igaz csak a saját gépemen + távolról, nekem működik. Annyit érdemes megjegyezni, hogy a program által használt 8082 port az nem azonos azzal, amin távolról mendzselni szeretnénk (ez olyan, hogy a másik (telnetes) házinál is volt egy port, de máshonnan ment a menedzsment). A kiadott program arra számít, hogy valid HTTP kérést kap, de ha megnézitek a forráskódot, ezek a dolgok egyértelműen kiderülnek. Érdemes közben néha megnézni a hálózati forgalmat is, erre ott van pl. a WireShark de amikor tipikusan HTTP-t nézünk, akkor lehet jobb a Fiddler (figyelem, Windows-on nincs loopback interfész így érdemes a gép IP címét használni localhost vagy 127.0.0.1 helyett)

commented May 24, 2014 by csa (45 points)  
Portnak azt használtam, amivel indítottam a programot, illetve localhost-ot.
A programból kaptam is visszajelzést, hogy client connected. Azonban ott megáll a dolog.
De ez virtuális gépen is rossz megoldás. Viszont ott a JMC-ben alapból megjelenik a program ha elindítom, és az jó, a saját gépemen viszont valamiért nem jelenik meg.
...