Applet stucks at SQL Connection (jTDS JDBC)

SirHans

Mitglied
Hi
Ich versuche gerade einen Login in einem Applet zu schreiben. Funktioniert auch soweit beim Ausführen über Eclipse aber wenn ich das Applet über den Browser ausführe bleibt es bei der connection Funktion einfach hängen ohne Fehlermeldung. Es geht einfach nicht weiter.

Java:
import java.sql.*;
import java.util.List;
import java.util.ArrayList;

class SQLCon
{
	Connection con;

    public SQLCon() {}

    public String Connect()
    {
    	String returnstring = "";
        try
        {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:jtds:sqlserver://localhost/DB;instance=SQLEXPRESS;");
            returnstring = "connected";
        }
        catch (Exception e)
        {
            e.printStackTrace();
            returnstring = e.toString();
        }
        return returnstring;
    }

    public void Close()
    {
		try
		{
			if(con!=null) con.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
    }
    
    public void cmd(String cmdstring)
    {
    	Statement statement = null;
		try
		{
	    	statement = con.createStatement();
	    	statement.execute(cmdstring);
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
		
		try
		{
			if(statement!=null) statement.close();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
    }
}
 

L-ectron-X

Gesperrter Benutzer
Schau mal in die Java-Konsole, da steht bestimmt eine AccessControlException drin.
Du musst die DB-Bibliothek und dein Applet signieren. In den FAQ gibts ein Tutorial mit Batchdatei.

BTW: Meiner Meinung nach, ist das eine ganz unsichere Sache, ein Login zu einer DB mit einem Applet zu realisieren. Man kann das Applet dekompilieren und den Code einsehen...
 

SirHans

Mitglied
Danke das gin schnell o_O

Wie kann ich die Java-Konsole öffnen? Beschäftige mich zum ersten mal so richtig mit Java aber kann schon viele andere Sprachen wie C#, C++ etc.
Was meinst du mit signieren?

Ja das hab ich schon mitbekommen. Gibt es keine möglichkeit den Code zu sichern? Wie gesagt bin neu bei Java und wollte einfach mal eine etwas größere Web-Anwendung mit Datenbank usw. in einer neuen Sprache schreiben.
 

L-ectron-X

Gesperrter Benutzer
Wie kann ich die Java-Konsole öffnen?
Das hängt von deiner Programmierumgebung ab. Wenn du eine IDE hast, zeigt die meistens die Fehlerausgaben der Java-Konsole irgendwo an.
Ansonsten startet die Konsole beim Programmstart mit, wenn du nicht mit javaw interpretierst, sondern mit java. javaw unterdürckt die Konsole.

Was meinst du mit signieren?
Steht alles in den FAQs. ;)

Gibt es keine möglichkeit den Code zu sichern?
"Echte" Java-Webanwendungen laufen mit JSP. Kommt aber im privaten Sektor eher selten vor, weil die Provider für einen solchen Server meistens Geld sehen wollen.
Daher greifen fast alle Freizeitentwickler auf PHP zurück. Wenn du ein Applet schreibst, überlässt du es dann PHP, die Verbindung zum DB-Server herzustellen, weil das nicht einsehbar ist. Das Applet übergibt dem PHP-Skript dann einfach nur die eingegebenen Login-Daten.
Die Signierung des Applets würde in dem Fall auch entfallen, weil das Applet sich mit keinem anderen Server verbinden müsste.
 

SirHans

Mitglied
Wie zuvor gesagt funktioniert das ganze im "normalen" Ausführen aber nicht im browser (Firefox, Safari etc., aber Java ist an)

Ups... Ich hab mir den Bericht gerade mal durchgelesen aber ich glaube nicht dass das das ist was ich suche. Ich möchte auf die Datenbank des Servers zugreifen auf dem das Applet liegt und nicht auf dem Pc der den Browser ausführt.

Ich versuche eigentlich ein Spiel mit awt zu machen und keine Webseite an sich. Dafür benutze ich ASP.NET.
 

L-ectron-X

Gesperrter Benutzer
Dann öffne mal die Java-Konsole vom Browser oder schau mal (unter Windows) in den System-Tray, da sollte ein Java-Symbol (Kaffetasse) zu sehen sein. Über dieses Symbol kannst du ebenfalls die Konsole (per Rechtsklick) öffnen.

Ein Applet hat eingeschränkte Rechte. Es darf sich u.a. nur zu dem Server verbinden, von dem es heruntergeladen wurde. Aber die Verbindung zu einem Datenbankserver ist auch eine Verbindung zu einem fremden Server. Wenn das Applet das also machen soll (was aber unsicher ist), muss es signiert sein.
 

SirHans

Mitglied
Also das hat mich schonmal weitergebracht. Jetzt kommt der Error: java.lang.ExceptionInInitializerError
at net.sourceforge.jtds.jdbc.Driver.parseURL(Driver.java:373)

Und was ist wenn ich ein Programm schreibe das auf dem Server laufen lasse das Verbindungen von dem Applet fängt und zurücksendet (wie Login, Register, etc.)? Wäre das mit Packets möglich? Ich möchte nur wissen ob das möglich ist weil mir es langsam so vorkomt das Java nicht grad die beste Lösung dafür ist.
 

L-ectron-X

Gesperrter Benutzer
Jetzt kommt der Error: java.lang.ExceptionInInitializerError
at net.sourceforge.jtds.jdbc.Driver.parseURL(Driver.java:373)
Beim Initialisieren einer/der Klasse ist ein Fehler aufgetreten. Das kann verschiedene Ursachen haben, die meistens unterhalb der obersten Exception bei cause mit aufgeführt werden.

Und was ist wenn ich ein Programm schreibe das auf dem Server laufen lasse das Verbindungen von dem Applet fängt und zurücksendet (wie Login, Register, etc.)?
Das ginge, wenn du auf dem Server Programme starten kannst.

Wäre das mit Packets möglich?
Wie ist das gemeint?

...weil mir es langsam so vorkomt das Java nicht grad die beste Lösung dafür ist.
Java ist äußerst vielseitig und sehr mächtig. Aber es gibt dennoch Einsatzzwecke, die mit Java nicht abgedeckt werden können.
Es kommt wirklich darauf an, was genau du vorhast.
 

SirHans

Mitglied
Beim Initialisieren einer/der Klasse ist ein Fehler aufgetreten. Das kann verschiedene Ursachen haben, die meistens unterhalb der obersten Exception bei cause mit aufgeführt werden.
OK, das werd ich mir später mal genauer angucken.

Das ginge, wenn du auf dem Server Programme starten kannst.
Auf dem Server hab ich komplette Admin-Rechte.

Wie ist das gemeint?
Also das ich ein Packet vom Applet zu dem Programm schicke und ein Packet von dem Programm zum Applet zurückschicke. Denk mal das das geht ich werd später mal googlen.
 

SirHans

Mitglied
So ich habe jetzt den Server geschrieben und auch eine Verbindung zwischen dem Applet und dem Server. Jetzt gibt es aber 2 Probleme.

1. Problem:
Wenn ich den Clienten schließe tritt dieser Error auf anstatt dass der User sich ausgeloggt hat.
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
an der Zeile:
Java:
    	    	for (String buffer;(buffer = in.readLine()) != null;) 
    	    	{
	
		        }

2. Problem:
Wenn ich das Applet im Browser ausführe kommt diese Fehlermeldung:
java.security.AccessControlException: access denied (java.net.SocketPermission...
Ich will das Apllet immoment nur auf den localhost zugreifen lassen und das Applet liegt auch auf meinem Pc also warum kommt dann die Fehlermeldung ich dachte das Programm darf auf den Server zugreifen von dem es kommt. Ich weiß ich könnte das Applet wieder signieren aber das muss der User erstmal zulassen und ich will nicht dass der misstrauisch wird :D


PS: Soll ich das lieber in dem richtigen Forum nochmal posten? weil hier kann jeder direkt sehen was ich genau machen will.
 

SirHans

Mitglied
Erstes Problem hab ich selbst gefixt. Ich versuch das zweite natürlich weiterhin zu fixen aber wenn irgendwer eine Idee hat versuch ich die gerne^^
 

L-ectron-X

Gesperrter Benutzer
Erstes Problem hab ich selbst gefixt.
Sagst du da auch mal (für die "Nachwelt"), was das Problem war?

2. Problem:
Wenn ich das Applet im Browser ausführe kommt diese Fehlermeldung:
java.security.AccessControlException: access denied (java.net.SocketPermission...
Korrekt! Rechner != Server. Ein Server ist immer eine Software, die auf einem Rechner läuft. D.h., du kannst mehrere Server auf einem Rechner laufen lassen.
Und in deinem Fall verbindet sich das Applet mit einem anderen Server, nämlich nicht mit dem, von dem es heruntergeladen wurde. Ergo: AccessControlException.
Applets leben ausschließlich in Webseiten.

Zwei Lösungsansätze dafür:
  1. die (ungewünschte) Signierung des Applets
  2. die Verbindung mit deinem Server auf einem anderen Weg
In dem Fall kann man das Applet in eine PHP-Seite einbetten, und die aus dem Applet ausgelesenen Daten an deinen Server weiterreichen. Wobei mit einer PHP-Seite auch der direkte Zugriff auf die Datenbank OK wäre.
 

SirHans

Mitglied
Was das Problem war weiß ich selbst nicht aber ich hab einfach ein try catch eingebaut und bei einem Fehler muss der Client sich nunmal (wie auch immer) ausgeloggt haben :D

Die Benutzer des Applets sollen untereinander sich auch verständigen können deshalb wird das mit PHP wohl nichts beziehungsweise sehr umständlich.
Danke funktioniert perfekt.

PS: Wie kann man sich hier im Forum überhaupt anmelden? o_O Und kann ich diese Beiträge dann auf den angemeldeten Account irgendwie übertragen?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D MySQL Applet MYSQL Abfragen Sicherheit Datenbankprogrammierung 2
D Oracle SQL Ergebnis anzeigen und Applet Fehlermeldung Datenbankprogrammierung 12
D Datenbank Applet Datenbankprogrammierung 4
I Java (J)Applet und und RMI (momentan eher RMI) Datenbankprogrammierung 6
S Datenbankabfrage mit Applet Datenbankprogrammierung 13
G Applet und MsAccess Datenbankprogrammierung 2
M Aus einem Applet eine Datenbankverbindung starten? Datenbankprogrammierung 26
S Problem mit JDBC und Applet Datenbankprogrammierung 3
T APPLET MYSQL JDBC zum 1001mal Datenbankprogrammierung 6
A Java-Applet -> MySQL Datenbank Datenbankprogrammierung 7
S Applet und Verbindung zur DB Datenbankprogrammierung 8
N Hilfe ! Mein Applet bekommt ein Access-Denied von MySQL Datenbankprogrammierung 7
M Sicherheit bei Applet auf MySQL Datenbank Datenbankprogrammierung 4
A MySQL+Webserver --(Java-Applet)----> Client Datenbankprogrammierung 11
G Access Zugriff, DB auf Server, Applet Datenbankprogrammierung 4
A Datenbankzugriff per Applet - Problem beim Treiber laden Datenbankprogrammierung 6
P Datenbankabfrage MYSQL aus Applet heraus Datenbankprogrammierung 6
T Applet bekommt keinen Datenbankzugriff Datenbankprogrammierung 11
T Datenbankzugriff (Oracle) mit Applet via Internet? Datenbankprogrammierung 6
S Datenbankanbindung + HTML + Applet Datenbankprogrammierung 7
D Applet + MySQL Datenbankprogrammierung 9
L Problem DBVerbindung ausserhalb des Editors:z.B Applet,MSDOS Datenbankprogrammierung 4
M Mit Java Applet via HDBC auf MySQL DB zugreifen? Datenbankprogrammierung 2
S Datenbanktest ergibt graues Fenster bei Applet Datenbankprogrammierung 5
L Zugriff von Applet auf mysql-DB Datenbankprogrammierung 2
F Problem mit MySQL-Datenbank und Java-Applet Datenbankprogrammierung 2
Maxim6394 EclipseLink + SQLite | Unable to acquire a connection from driver [null] Datenbankprogrammierung 6
J PC-Start Problem JDBC Connection Datenbankprogrammierung 10
S Oracle DB-Connection in .jar file ändern Datenbankprogrammierung 11
yakazuqi MySQL MySQL Connection reset Datenbankprogrammierung 7
K Glassfish 4.1.1 Connection Pool u. Resource Ref Datenbankprogrammierung 20
OnDemand Hikari Pool Connection Validation Datenbankprogrammierung 18
Dimax MySQL Methodenaufruf mit Connection Übergabe Datenbankprogrammierung 8
D MySQL Connection richtig herstellen. Wie ? Datenbankprogrammierung 7
D Multiple Connection mit MySQL Datenbankprogrammierung 4
S Connection Pool Hikari Datenbankprogrammierung 7
P MySQL Connection Global Datenbankprogrammierung 13
J Connection Datenbankprogrammierung 1
F Brauche dringend Hilfe Java-Access Connection Datenbankprogrammierung 3
S New Connection Wizard / NetBeans Datenbankprogrammierung 0
P Frage zu Connection.close() Datenbankprogrammierung 4
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
M Connection erstellen Datenbankprogrammierung 1
F Monitoring DB Connection Pool Datenbankprogrammierung 3
H JDBCODBC - Connection-Objekt Datenbankprogrammierung 3
E MySQL SQL - wann connection schließen Datenbankprogrammierung 2
R HSQLDB Connection refused Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
B JDBC-Connection: Data source name too long Datenbankprogrammierung 3
crashfinger jdbc-connection mit jre7 funktioniert nicht Datenbankprogrammierung 5
reibi Derby/JavaDB Connection refused Datenbankprogrammierung 14
S Ressourcenverbrauch Connection Open/Close Datenbankprogrammierung 11
W MySQL-Connection-Objekt übergeben Datenbankprogrammierung 2
N SQL-Connection Datenbankprogrammierung 3
B MySQL Datenbank Connection als String zurückgeben Datenbankprogrammierung 7
M Connection Pooling Datenbankprogrammierung 7
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
K Connection - möglich & nicht möglich Datenbankprogrammierung 2
T Datenbank connection mit Servlet Datenbankprogrammierung 4
c_sidi90 JDBC Oracle Connection schlägt fehl Datenbankprogrammierung 2
H H2 H2-Connection bei WebStart Datenbankprogrammierung 6
JavaKaffee Derby/JavaDB Quartz-WebAnwendung - Connection/Treiber Problem Datenbankprogrammierung 47
ruutaiokwu jdbc connection als singleton Datenbankprogrammierung 11
S Wie überprüfe ich ob die Instanz einer Connection gerade werwendet wird? Datenbankprogrammierung 4
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
C Derby/JavaDB JavaDB: Keine Connection Datenbankprogrammierung 7
T Pooled Connection und Connection Pool Datenbankprogrammierung 2
S Java Connection to MySQL Datenbank FunPic Datenbankprogrammierung 4
Q java.lang.NullPointerException connection = null Datenbankprogrammierung 13
N Connection bleibt null Datenbankprogrammierung 7
H DB-Connection zu MySQL Datenbankprogrammierung 12
D Wie bekommt man die JDBC connection zum laufen?(Eclipse) Datenbankprogrammierung 16
T MySQL ResultSet zurückgeben nachdem Connection geschlossen wurde? Datenbankprogrammierung 3
B db2 jdbc connection Datenbankprogrammierung 4
G MySQL Connection Problem Datenbankprogrammierung 3
R sql.Connection vs. mysql.Connection Datenbankprogrammierung 3
R Connection Pooling - Tote Verbindungen Datenbankprogrammierung 5
S Connection Pool Datenbankprogrammierung 23
P JPA Connection dynamisch hinzufügen Datenbankprogrammierung 2
S JDBC connection open Datenbankprogrammierung 3
D MySQL Verständnisproblem mit globalen Variablen (Connection) Datenbankprogrammierung 7
F Connection refused: connect Bei Verbindungsherstellung zu MySQL Datenbank Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
R Connection nur als root Datenbankprogrammierung 3
N Connection kann nicht geschlossen werden!? Datenbankprogrammierung 4
S JPA Hibernate: "The user must supply a jdbc connection" Datenbankprogrammierung 4
F MySQL - Connection JDBC-Driver Problem Datenbankprogrammierung 4
E MSSQL-Server connection aufbau sehr langsam Datenbankprogrammierung 2
S Zuviele DB Connection Datenbankprogrammierung 4
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
S Connection String MS Access mit Systemdatenbank / Arbeitsgruppeninformationsdatei Datenbankprogrammierung 4
R DB-Connection, aber wie? Datenbankprogrammierung 2
F Java SQL Connection mit Rollback Datenbankprogrammierung 2
P DB- Connection lösen Datenbankprogrammierung 7
padde479 Connection String Oracle Datenbankprogrammierung 5
W JDBC Connection isValid()? Datenbankprogrammierung 4
G Frage zu connection? Datenbankprogrammierung 9
G allgemeine JDBC-Connection Frage Datenbankprogrammierung 2
H Wie kann ich eine Datenbank Connection aus XML-Datei lesen! Datenbankprogrammierung 2
J jdbc Oracle Connection refused Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben