problem z MySQL - za długo sie łączy?

0

Witam. Mam problem. Mianowicie czasem, jak probuje zadac z poziomu appletu zapytanie do bazy MySQl to wyskakuje mi wyjatek, po czym nic do bazy nie jest zapisane. Niekiedy wszystko jest w porzadku, a niekiedy jest bład. Na localhoscie wszystko działa jak należy. Czyzby to był problem z czasem połączenia?

Oto ten wyjatek:

java.io.EOFException

STACKTRACE:

java.io.EOFException
	at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1956)
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2368)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2867)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3178)
	at com.mysql.jdbc.Statement.execute(Statement.java:711)
	at OknoGraczDane.update(OknoGraczDane.java:501)
	at OknoGraczDane$1.actionPerformed(OknoGraczDane.java:52)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)


** END NESTED EXCEPTION **



Last packet sent to the server was 0 ms ago.
	at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2579)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2867)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1616)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1708)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3249)
	at com.mysql.jdbc.Connection.execSQL(Connection.java:3178)
	at com.mysql.jdbc.Statement.execute(Statement.java:711)
	at OknoGraczDane.update(OknoGraczDane.java:501)
	at OknoGraczDane$1.actionPerformed(OknoGraczDane.java:52)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

Mozna sobie z tym jakos poradzic?

0

Tak. Po pierwsze nie uzywać apletu do łączenia się z bazą danych :) I tu mówię na serio. Najlepszym rozwiązaniem jest komunikacja z serwerem na którym masz aplikację łączącą się z bazą danych. W ten sposób unikasz błędów związanych, z tak jak w tym przypadku najprawdopodobniej, zerwaniem połączenia przez serwer baz danych.

0

Ja jeszcze dodam, że to jest niebezpieczne bo hasło i login musi być w aplecie :-)

0

Hasła nie musza byc w aplecie. U mnie Applet jest tylko interfejsem do łączenia sie z baza, wyswietla wyniki i takie tam pierdoły. Myślicie, ze jakbym zrobił samodzielny program to tego typu problem moznaby uniknąć?

0

Czyli wywala sie komunikacja, o ile dobrze rozumiem architekturę:
Aplet→żądanie POST → skrypt w php na serwerze → odpowiedź do Apletu
Serwer, a właściwie skrypt wyciągający informacje z bazy, nie zwraca żadnych wyników. W tym momencie zwraca od razu pusty plik, czyli dostajesz coś co wygląda na \eof i nic więcej.

Rozwiązanie:
Niech skrypt wybierający dane sprawdza czy cokolwiek może wysłać. Jak nie niech wysyła komunikat że mówiący że danych nie ma

0

Mam jedno pytanko, masz to zrobione tak: aplet wysyła jakieś żądania do aplikacji serwera a on się łączy z bazą danych, jeśli tak to czy baza jest na tym samym kompie co aplikacja serwera?
edit pisałem w tym samym czasie co koziołek :-D

0

@kaziuuu, baza i aplikacja mogą być na dowolnych komputerach. Aplikacja łaczy się z bazą podając jej adres uri zatem można ją umieścić nawet na Vanuatu.

0

To ja wiem, tylko się pytałem samosa, bo może ma na innym serwerze baze i stąd problem

0

co do Twojego exception
problemow jest kilka
1 - podstawowy - synchronizacja zapytan w srodowisku wielowatokwym - wyglada na to, ze tego nie robisz
2 - zarzadzanie pula polaczen
2.1 - poczytaj i zdecyduj czy bedzie dla Ciebie odpowiednie utrzymywanie polaczenia na sesje czy stalego.

pozdrawiam

0

Witam ponownie.
Znowu chce wrócic do tego problemu. Od tamtego czasu nic nie próbowałem poprawić, bo projekt zawiesiłem na rzecz innego ;). Do tej pory sprawa wyglądała tak:

Applet łączy sie z baza-> Wysyła jakies zapytanie do bazy typu . Insert into... Update.select.

I podczas insertu, updata sie wysypywało.

Skoro nie łączyc sie z appletu do bazy, to czy zrobic program w j2SE i wrzucic go na serwer i z poziomu appletu łączyc sie z tym programem, czy Wam chodzi o to, aby applet łączył sie z aplikacja php, która to by była łącznikiem miedzy apletem a serwerem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1