私は練習として構築している小さなレセレットサービスに奇妙な問題があります。アプリケーションは、HTTP POSTでいくつかのXML(specifically TwiML、Twilioのためのものです)で応答するはずです。スタンドアロン要求に対してはうまくいきました。しかし、Twilioが要求すると、応答は完了せずタイムアウトします。 Twilioから来たトラフィックを(偽のHTMLフォームを使って)動作しているものと比較した後、私はこの問題を「Connection:close」ヘッダーに分離し、curlコマンドラインを使用して問題を再現することができました。ここで働く要求されます。HTTP接続でエラーが発生しました:閉じるヘッダー
curl -i -H 'Connection: keep-alive' -X POST -d "name=value" http://localhost:8020/hello
、ここでは単にハングいずれかです。
curl -i -H 'Connection: close' -X POST -d "name=value" http://localhost:8020/hello
を私がカールし、サーバーを殺す場合は、「サーバーから(52)空の応答を」と言います。ここでは、私がServerResourceで使用しているコードを示します。
@Post
public Representation hello(Representation repr)
{
Representation result = new StringRepresentation(("<Response>\n"+
" <Say>Hello. This is a test.</Say>\n"+
"</Response>"), MediaType.APPLICATION_XML);
return result;
}
私がここで何をしているのか明らかに間違っていますか?私はrestlet-2.0を使用していますが、2.1m1でも同じ結果を試しました。私は演習を終えるために締め切りを迎えているので、すばやい回答に本当に感謝しています。
共有いただきありがとうございます。これは、Restletが "Connection:close"ヘッダ(重大なバグになるでしょう)を持つ接続でうまく動作しなかったことを意味しますか? – haridsv
これは、restletにバンドルされている標準のrestletサーバーの人為的なようです。私はあなたが別のコンテナ(例えば、桟橋)内にあなたのレストレットを配備すれば、この問題にはならないと思います。しかし同意して、それは間違いなくバグです。 – Joey
これは現在公式のバグです。http://restlet.tigris.org/issues/show_bug.cgi?id=1191 – Joey