# Webstart & SQL



## freez (13. Okt 2005)

Hallo,

ich habe eine Webstart Applikation geschrieben. Diese soll sich mit dem MYSQL Server (ebenfalls der selbe) verbinden und nun mal irgendwas tun.

Mein Problem ist, daß ich folgende Fehlermeldung bekomme:

Beim Starten/Ausführen der Anwendung ist ein Fehler aufgetreten.

```
Titel: MYSQL Test
Hersteller: Sun Microsystems, Inc.
Kategorie: Sicherheitsfehler

access denied (java.util.PropertyPermission jdbc.drivers write)
```

Meine Testumgebung:

Server (Apache, MySQL): 192.168.1.106
Client: 192.168.1.40

Meine Connection baue ich direkt über die IP Adresse auf. Dies funktioniert auch, solange ich das Programm als normale Anwendung starte. Läuft sie allerdings als WebstartApplication, kommt der fehler.

Und hier der Code, wo der Fehler auftritt:

```
Statement stmt = SQLConnection.getStatement("192.168.1.106", "3306", "mysql", "user", "pwd");
		try
		{
			rs = stmt.executeQuery("show databases;");
		}
		catch (SQLException e)
		{
			e.printStackTrace();
		}
```

Und hier zur erläuterung noch einen Teil der SQLConnection:

```
public static Connection getAConnection(String hostname, String port, String datenbankName, String user, String passwort)
	{
		SQLConnection conn = new SQLConnection(hostname, port, datenbankName, user, passwort);
		
		if(conn.connect())
			return conn.getConnection();
		else
			return null;		
	}

	public static Statement getStatement(String hostname, String port, String datenbankName, String user, String passwort)
	{
		Connection conn = SQLConnection.getAConnection(hostname, port, datenbankName, user, passwort);
		Statement stmt = null;
		if(conn != null)
		{
			try
			{
				stmt = conn.createStatement();
				return stmt;
			}
			catch (SQLException e)
			{
				System.out.println("Konnte Statement nicht erstellen");
				e.printStackTrace();
				return null;
			}
		}
		else
			return null;		
	}
```

Ich habe schon mehrere Threads bei euch gelesen. Leider war nie etwas in Verbindung mit Webstart dabei. Ich weiss,  daß es ein Sicherheitsproblem ist. Aber ich verstehe nicht, wieso. In einem Buch haben Sie per Applet auch über die IP eine Verbindung aufgebaut.


----------



## AlArenal (13. Okt 2005)

Hast du das JAR, in dem sich deine Webstart-Applikation befindet, signiert?


----------



## freez (13. Okt 2005)

Vergass ich zu erwähnen. Nein, habe ich nicht. Will ich auch gar nicht, da ich mich ja eh an das halte, was die Sicherheit vorschreibt. Ich greife lediglich auf den Server zu, von dem die Applikation stammt.


----------



## AlArenal (13. Okt 2005)

Das ist egal. Du musst signieren, sonst wird das nichts 



> Applications launched with Java Web Start are, by default, run in a *restricted environment* where they have limited access to local computing resources, such as storage devices and the local network. In this sandbox environment, Java Web Start can guarantee that a downloaded and potentially untrusted application cannot compromise the security of the local files or the network.





> By including the following settings in the JNLP file, an application can request full access to a client system *if all its JAR files are signed* :
> 
> 
> ```
> ...



Siehe: http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/development.html#security


----------



## freez (14. Okt 2005)

Aha ... ist das dann wohl mit einem Applet anders? Im Buch, welches ich erwähnte, war eine Verbindung per Java Applet hergestellt worden. Ich glaube, daß probiere ich gleich mal aus.


----------



## freez (14. Okt 2005)

Naja, also mit einem Applet wird das auch nix. Na dann muß ich wohl ans signieren.
Schade, ich war der Meinung, daß ich mit meiner Webstart Application problemlos auf den Homeserver zugreifen kann. Stellt sich mir tatsächlich die Frage, warum das so kompliziert ist. Ist das so Sicherheitskritisch?


----------

