# HTTP 504 Fehler bei DataInputStream



## tay (26. Aug 2005)

Moin!

Ich habe folgendes Problem:

Ich habe ein Programm geschrieben, dass ein PHP Skript auf einem Server ausführt, welches mir Daten zurückliefert. Wenn ich das einfach als Programm laufen lasse, funktioniert alles tadellos. Lass ich das ganze jedoch per JWS ausführen (Zertifikat vorhanden, Zugriffsrechte sollten eigentlich da sein...) bleibt mein Programm bei 


```
dataIn = new DataInputStream(targetURL.openStream());
```

irgendwann hängen und ich bekomme einen 504 Fehler. 
Liegt das an den JWS Netzwerkrechten? Eigentlich sollte das ganze nicht in einer Sandbox ausgeführt werden (und wird auch nicht, da gültiges Zertifikat), da müßte ich doch die Rechte haben, oder? Und an dem Server liegt es nicht, wenn ich es, wie gesagt, als normale App laufen lasse geht alles.

Jemand ne Idee?

peace

Edit:
Hier mal die methoden:

für den Verbindungsaufbau:


```
protected void setUpConnection(){
       
        try{
	        //Connection wird geöffnet, Einstellungen werden getätigt
	        System.out.println("open connection");
	        urlConnec = (HttpURLConnection)targetURL.openConnection();            
	        System.out.println("trying to connect...");
	        
	        //settings
	        urlConnec.setAllowUserInteraction(true);
	        urlConnec.setDoInput(true);
	        urlConnec.setDoOutput(true);
	        urlConnec.setUseCaches(true);         
	        
	        //connect
	        urlConnec.connect();
	        System.out.println("connected");
        }//try
        catch(IOException e1){
            JOptionPane.showMessageDialog(null, "Es konnte keine Verbindung zum Server aufgebaut werden. \n" +
            		"Bitte versuchen Sie es zu einem späteren Zeitpunkt nochmal.");
            System.exit(1);
            //System.err.println(e1.toString());         
        }//catch
        
    }//method setUpConnection
```

um die Informationen abzuholen:

```
protected String getInformation(){
        
        System.out.println("trying to read...");
        
        DataInputStream dataIn;
        try {
            System.out.println("creating new DataInputStream...");
            //ein Datastream vom Server wird erstellt
            dataIn = new DataInputStream(targetURL.openStream());
        
            System.out.println("finished reading.");            
            
            //Zwischenlager für die Zeichen
            Vector tmp = new Vector();
            
            //liest die Zeichen einzeln ein
            for (;;){
                int data;
                data = dataIn.read();
                // Check for EOF
                if (data == -1)
                    break;
                else{         
                  //fügt die Zeichen im Zeichenzwischenlager ein  
                  tmp.add(new Character((char)data));                       
                }//else                        
            
            }//for              

            // ende der Verbindung
            dataIn.close();
                      
            String tmpString = "";

	        //Umwandlung der Zeichen aus dem Zeichenzwischenlager in einen String 
	        for(int i = 0; i< tmp.size(); i++){
	            tmpString = tmpString+((Character)tmp.get(i)).toString();
	        }//for

            //gibt den eingelesenen String zurück
            return tmpString;
            
        }catch (IOException e1) {
            System.out.println(e1);
            e1.printStackTrace();
            JOptionPane.showMessageDialog(null, "Es ist ein Fehler bei der Verbindung zum Server aufgetreten. \n " +
            		"Bitte versuchen Sie es erneut.");            
            //System.exit(1);            
            return null;
        }//catch
        
    }//method getInformation
```


----------



## AlArenal (26. Aug 2005)

Man nehme http://de.wikipedia.org/wiki/Http und erfahre, dass HTTP Fehler 504 soviel bedeutet wie "Gateway Time-out". Bei Timeout-Fehlern stellt sich immer die Frage was wartet wie lange worauf? Was braucht zu lange bzw. wo ist der Timeout zu gering eingestellt?

Im Übrigen frage ich mich warum das Rad neu erfunden werden muss und du nciht gleich SOAP oder XML-RPC benutzt. Dafür isses schließlich da


----------



## tay (26. Aug 2005)

Mein Problem ist eher, dass ich von JWS nicht so wirklich Ahnung habe und jetzt an einem bestehenden Projekt weiterarbeiten soll, das diese vorgegebenen Technologien benutzt. Also bleibt mir nix anderes übrig, als es so zu probieren. Was ich gerne wüsste ist: Liegt mein Problem an JWS-Netzwerkzugriffsrechten? Und wenn ja, was muss ich tun um das zu umgehen bzw. das Problem zu lösen, oder wo kriege ich die nötigen Informationen dazu her?
Google schon den halben Tag, aber finde einfach nichts und es frustriert ein wenig, da ich so nicht testen kann, ob ich den Rest richtig gemacht habe....

peace


----------



## AlArenal (26. Aug 2005)

Wenn es was mit der Sandbox zu tun hätte, bekämst du eine SecurityException. Das kannst du ja ganz einfach testen indem du die JARs nicht signierst, dann siehste die passende Exception.


----------



## tay (26. Aug 2005)

Jo dann bekomme ich einen Sicherheitsfehler und nichts geht. Also kann es an den Rechten nicht liegen? Hast Du sonst ne Idee, woran das liegen kann? Habe mit Netzwerkprogrammierung bisher noch keinen Kontakt gehabt und bin deshalb etwas ratlos... thx schonmal


----------



## AlArenal (26. Aug 2005)

Benutzt ihr nen Proxy?



> 504 - Gateway Timeout
> 
> Diese Meldung wird vom Gateway oder einem Proxy-Server generiert. Der von diesem kontaktierte eigentliche Webserver hat dann für die Antwort zu lange gebraucht.


----------



## tay (26. Aug 2005)

Wenn ich das mal wüsste... naja, bin jetzt eh erstmal im Wochenende, werde mal Montag nachfragen, wie das bei denen alles aufgebaut ist. Wie gesagt, bin grade neu dabei und hab mich noch nicht um viel anderes als mein Programm gekümmert. Wenn wir einen benutzen würden, auf was müsste ich dann achten? Wäre das etwas, was ich mit meinem Programm, bzw. JWS handhaben muss, oder geht es dabei um Proxy Einstellungen? Davon habe ich nicht wirklich ne Ahnung...

Schönes Wochenende erstmal und Danke soweit


----------



## AlArenal (27. Aug 2005)

Die Proxy-Einstellungen fürs Java-Plugin und JWS kann man getrennt  vornehmen. Möglicherweise stimmt da die Konfig nicht, wenn es ja als App funzt und als Webstart App nicht.


----------



## tay (30. Aug 2005)

So, ich hab das mal überprüft, aber es scheint alles korrekt eingestellt zu sein. Keine Ahnung, es weigert sich sowieso bei jeder Einstellung... kein Plan, wie ich rausfinden soll, woran das liegt... :bahnhof:


----------



## AlArenal (30. Aug 2005)

Was hast du denn nachgeschaut? Wo hast du nachgeschaut? Welche Einstellungen hast du vorgefunden?

Seit wann besteht das Problem? Was hat sich im Gesamtsystem seit dem letzten funktionierenden Stand geändert?


----------



## Bleiglanz (30. Aug 2005)

```
<security>
<all-permissions/>
</security>
```
auch wenn alles signiert ist, sollte dieses in deiner jnlp datei stehen


----------



## tay (30. Aug 2005)

steht es


----------



## tay (30. Aug 2005)

@AlArenal: bei den Java Web Start Einstellungen und bei den Java Plugin Einstellungen... Das Programm das ich geschrieben habe ist neu, hat daher als Java Web Start Prog noch nie funktioniert. Es funktioniert nur als normale Application...
Edit:
Um es richtig zu beschreiben: Das Programm besteht aus zwei Teilen, einmal dem, der das PHP Skript auf dem Server ausführen lässt und zum anderen aus einer Anwendung. Die Anwendung funzt soweit, auch wenn ich sie als Java Web Start ausführe. Diese Anwendung ruft jedoch das PHP-Skript-Ausführprog auf. Und da sind die Probleme, weil ich das PHP Skript nicht ausführen kann, da es eben ne IOException beim DataInputStream mit ner 504 Fehlermeldung schmeisst... bzw. ich kann die Daten nicht abholen... weiss nicht, ob das Skript ausgeführt wird...


----------



## AlArenal (30. Aug 2005)

Ist ne mitunter etwas ätzende Klamotte. Wir haben hier auch JWS-Client-/Server-Software und immer wieder lustige Effekte bei Kunden, wenn die Proxys und Authentifizierungsmechanismen nutzen, vor allem wenn die Software dazu aus dem Hause MS stammt...


----------



## tay (30. Aug 2005)

Kann es sein, dass es Probleme mit JWS gibt, wenn der Server von dem das Programm runtergeladen wird nicht der gleiche ist, auf den ich mit dem Programm zugreifen will? Oder ist das egal, solange ich alle Rechte habe?


----------



## AlArenal (30. Aug 2005)

So lange du alle Rechte hast, ist das egal. Ich benutze z.B. BlogBridge, um über rund 60 RSS-Feeds auf dem Laufenden zu bleiben, die von etwa 50 verschiedenen Web-Servern stammen...


----------



## tay (30. Aug 2005)

boah ich bin ein Idiot! Hatte nicht gecheckt, dass ich JWS 1.5 benutze und habe die ganze Zeit bei der alten Version die Einstellungen gemacht. Bei JWS1.5 waren die Netzwerkeinstellungen falsch. :autsch: 
Jetzt geht alles bestens!  

Vielen Dank für die Hilfe!

peace


----------



## AlArenal (30. Aug 2005)

Ja, so gehts uns allen manchmal.. Wald, Bäume, ...


----------

