Hiçbir bağlantı-yakın döndürülür çünkü eksen web hizmeti kilitleniyor

2 Cevap java

Ben (Bahar) ile bir Axis 1.4 (Apache üzerinde çalışan) bir PHP web hizmeti alan web hizmeti istemcisi var. Bu geliştirme ortamında mükemmel çalışır, ancak üretim ortamında kod yürütülmesine istemci soap yanıtı aldı sonra doğrudan yere Eksen kütüphanede duruyor. Ben müşteri açısından tek fark geliştirme ortamında SOAP Response HTTP başlık girdiyi içeren olmasıdır Wireshark ile belirledik


Connection: close

Üretim ortamında eksik edilmektedir. Benim varsayım bu Eksen bağlantı yakın başlık alanını bekliyor çünkü kod yürütme, asılı neden olmasıdır.

Ben müşteri yapılandırarak bu durumu düzeltmek için yapabileceğiniz bir şey var mı? Değilse, doğru bağlantıyı kapatmak için Apache + PHP yapılandırmak için herhangi bir ipuçları takdir edilmektedir.

2 Cevap

Uygulamanın diğer bölgelerinde canlı tutma devre dışı gelemez, sizin uygulamanızda-Dhttp.keepAlive = false sistem özelliğini ayarlamayı deneyin. Bu java-iç HttpClient sınıf hevesle açık bağlantıdan bir BufferedInputStream doldurmak için çalışıyor belli kilitleniyor önleyecektir.

Ayrıntılar için bakınız ayrıca http://bugs.sun.com/bugdatabase/view%5Fbug.do?bug%5Fid=4479751.

Bu sizin asılı istemci yığın izleme bakabilirsiniz yardımcı bir şans varsa, bu gibi görünmelidir:

java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:129) at java.io.BufferedInputStream.fill(BufferedInputStream.java:218) at java.io.BufferedInputStream.read1(BufferedInputStream.java:258) at java.io.BufferedInputStream.read(BufferedInputStream.java:317) - locked <0xab82fa30> (a java.io.BufferedInputStream) at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:632) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1072) - locked <0xab82c838> (a sun.net.www.protocol.http.HttpURLConnection)

HeavyWave önerdiği gibi: 'yakın ilişkiyi' http.keepAlive esas ayarı HttpClient her zaman göndereceğiz sağlar.

İsteğiniz ile: Sen Http Header "yakın Connection" göndermeyi deneyebilirsiniz.