# XML File während Applet-Start auslesen?



## madman (26. Aug 2007)

Hallo, 

ich bin grad dabei ein Applet zu erstellen, welches per JDBC von einer Oracle Datenbank Daten abfragen soll.
Das Applet ist signiert, wird von einem Webserver runtergeladen und verbindet sich mit der Oracle Datenbank, die sich auf einem anderen Server befindet. Soweit klappt das.
Das Applet ist ja nun compiliert und die Oracle-Zugangsdaten (String username = "nousername"; und String password = "nopassword" sind nicht mehr veränderbar. Außer man compiliert das Apllet neu. 

Die Frage ist nun aus diesem Grund, ob es möglich ist die Oracle-Zugangsdaten in ein XML-File zu auf dem Webserver hinterlegen. Das XML-File soll sich im gleichen Verzeichnis wie das Applet befinden und die Daten während dem Start auf dem Clientrechner ausgelsen werden. 

Mit welchen Klasse ist es zu realisieren? Kennt vieleicht jemand einen ersten Lösungsansatz oder ein Beispiel?

Vielen Dank für eure Hilfe!

Gruß
Mike


```
//--------------------XML-File---------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

	<context name="database">
		<param name="OracleUser" value="username"/>
		<param name="OraclePassword" value="password"/>
	</context>
```



```
//--------------------JDBC---------------------------------------------------------------

if(ae.getSource().equals(Button))
		{
			    Connection connection;
			       
			    	 //1. JDBC-Treiber laden
			        String driverName = "oracle.jdbc.driver.OracleDriver";
			    
			        try {
		    	           Class.forName(driverName);
		    	          

		    	      } catch (Exception e) {
		    	    	   System.out.println("Es gibt ein Problem mit dem DB-Treiber:" + e);
		    	       }
		
			        //2. Datenbank-URL spezifizieren   		       
			        String url = "jdbc:oracle:thin:@xytestdb:1521:db";
                                
                   //Daten aus XML-holen
			        String username = ?????
			        String password = ?????
			        
			  	        
			        //3. Verbindung zur Datenbank aufbauen
			        connection = DriverManager.getConnection(url, username, password);

			        System.out.println("Verbindung zur Datenbank '" + connection.getCatalog() + "' hergestellt");
			        
			        //4. Statement erzeugen
			        Statement myStatement = connection.createStatement();
			        
			        //5. Abfrageterm als String
 
			        String abfrageString = "Select " +
			        "TITEL, NAME, NUMMER " +
	        		"FROM " +
	        		"DATEN WHERE " +
	        		"NUMMER=12345678";
 
			        //6. Abfrage ausfuehren
			        ResultSet result =	myStatement.executeQuery(abfrageString);
			      
			        //7. Abfrageergebnis auswerten und ausgeben
			        while (result.next()) {
			     
			        	System.out.println("Titel: " +result.getString("TITEL"));
			        	System.out.println("Name: " +result.getString("NAME"));
			        	System.out.println("Nummer: " +result.getString("NUMMER"));

				        }
}
```


----------



## Wildcard (26. Aug 2007)

Denk nochmal drüber nach ob du die Zugangsdaten *wirklich* öffentlich zugänglich machen willst.


----------



## Guest (26. Aug 2007)

Hi Wildcard,

Gibt es noch andere Möglichkeitend diese Sache mit XML zu lösen?
Ich meine, dass Applet immer neu zu comlilieren ist jetzt auch nicht die beste Lösung.
Das XML-File soll ja nicht auf den Client heruntergeladen werden. Es soll in irgendeinem Verzeichnis auf dem Webserver im Intranet bleiben. Die Daten werden ja nur eingelesen.

Gruß
Mike


----------



## Noctarius (26. Aug 2007)

Auch im kompilierten Client stehen die Daten drin und können ausgelesen werden. Alternativ könntest du RMI benutzen


----------



## madman (26. Aug 2007)

Leider muss ich es auf diese Weise machen. Die Zugangsdaten sollen aus einem XML-File eingelesen werden. RMI kommt hier nicht in Frage. 

Meine Augenmerk richtet sich nun wieder an meine Anfrage, mit der ich das Thema eröffnet habe. 
Ich hoffe sehr, dass mir jemand diesbezüglich ein paar Hinweise geben könnte! 
Danke.

Gruß
Mike


----------



## Wildcard (26. Aug 2007)

Damit das Applet sie über eine URL-Connection auslesen kann, musst du sie so ablegen, dass dein Webserver sie ausliefert.
Das bedeutet natürlich das sie auch jeder andere von dort abholen kann.
Also ich würd mir die Sache nochmal überlegen....


----------



## madman (27. Aug 2007)

Hi Wildcard,

ich steh grad ein bisschen auf dem Schlauch. 


> Damit das Applet sie über eine URL-Connection auslesen kann, musst du sie so ablegen, dass dein Webserver sie ausliefert.


Vielen Dank für den Hinweis das File über URL-Connection vom Client aus auszulesen (siehe Code unten). Anfangs dachte ich verkehrt herum. Aber was meinst damit, das XML-File so abzulegen, dass der Webserver sie ausliefern kann? 


> Das bedeutet natürlich das sie auch jeder andere von dort abholen kann.


 Das XML-File soll in einem Unterverzeichnis des Webservers liegen. Sicher bedeutet dies, dass auch jeder Zugriff auf das File haben kann, wenn man weiss wo es abgelegt ist. 



> Also ich würd mir die Sache nochmal überlegen....


Aber lassen wir diese Bedenken ausser Acht, da es im Moment keinen anderen Weg gibt und ich es so machen muss.  Oder fällt dir spontan eine anderer Weg ein? 

Gruß
Mike



```
String nextLine;
		       URL url = null;
		       URLConnection urlConn = null;
		       InputStreamReader  inStream = null;
		       BufferedReader buff = null;
		       try{
		          
		          url  = new URL("http://localhost/xml/oracle.xml" );
		          urlConn = url.openConnection();
		         inStream = new InputStreamReader( 
		                           urlConn.getInputStream());
		           buff= new BufferedReader(inStream);

		        while (true){
		            nextLine =buff.readLine();  
		            if (nextLine !=null){
		                System.out.println(nextLine); 
		                
		               //Daten filtern und weiterverarbeiten

		            }
		            else{
		               break;
		            } 
		        }
		     } catch(MalformedURLException e){
		       System.out.println("URL überprüfen:" + 
		                                           e.toString() );
		     } catch(IOException  e1){
		      System.out.println("Kein Zugang zum Intranet: "+ 
		                                          e1.toString() ); 
		  }
```
[/quote]


----------



## Wildcard (27. Aug 2007)

> was meinst damit, das XML-File so abzulegen, dass der Webserver sie ausliefern kann?


...


> Das XML-File soll in einem Unterverzeichnis des Webservers liegen.


Im Prinzip das.

Das sieht in deinem Programm hoffentlich anders aus, den der localhost ist in der Regel nicht die Serveradresse der Wahl  :wink:


----------



## madman (27. Aug 2007)

Klar sieht die anders aus. Hab nur zum Test auf meinem Laptop IIS installiert.


----------



## Wildcard (27. Aug 2007)

Hast du jetzt noch eine Frage, oder ist die Sache erledigt?

PS:


> Sicher bedeutet dies, dass auch jeder Zugriff auf das File haben kann, wenn man weiss wo es abgelegt ist.


Und natürlich jeder der das Applet verwenden kann.


----------



## madman (27. Aug 2007)

hi, 



> Und natürlich jeder der das Applet verwenden kann.



Genau. Schliesslich dient das Applet dazu Daten aus der Datenbank abzurufen. Und ohne Zugangsdaten gibts keine Daten 

Die Sache ist soweit erledigt. Vielen Dank nochmal. 


```

```


----------

