私はWicketのCaptchaImageResourceを使用して、提出フォームをボットから保護しています。私のテスト環境(Mac)では、Jettyサーバーを使用して、ローカルのTomcatインスタンスにデプロイされたときに正常に動作します。Wicket CaptchaImageResource Linuxサーバで長さゼロの画像を作成する
しかし、アプリケーションがリモートLinuxサーバー上のTomcat 7にデプロイされたときにCaptchaイメージがレンダリングされません。代わりにゼロバイトの応答が得られます。
HTTP/1.1 200 OK
Date: Thu, 28 Jul 2011 14:28:22 GMT
Set-Cookie: JSESSIONID=6D37183A1FF2C3F43C35B49433A0FC1B; Path=/; HttpOnly
Cache-Control: no-cache, must-revalidate
Content-Type: image/png
Content-Length: 0
Connection: close
* Closing connection #0
私の最初の本能は、Tomcatが-Djava.awt.headless=true
で実行するために必要なことだった。ここではどのような画像URLのcurl -v
リターンです。私はそれを設定し、ps
で実際にそのオプションで実行されていることを確認しましたが、captchaはまだレンダリングに失敗します。
Tomcatのログにエラーメッセージや警告が表示されません。リモートデバッグを可能にするために行ったところで、ブレークポイントをCaptchaImageResource.render()
の深いところに設定しました。それはその方法に入っていますが、私はそれが戻ってくるのを見ません。 291行目のどこかで、私のブレークポイントにぶつかるのは不思議なことです。
サーバーJVMはjava-1.6.0-openjdk.x86_64
です。 JVMがヘッドレスモードでAWTグラフィックスをレンダリングできない理由はありますか?
あなたはどのLinuxのフレーバーに展開していますか?私はCentOSのJFreeChartで同様の問題をレンダリングしています(Tomcatコンテナーもあります)。 – ireddick
@ireddick - 私にとっては同じです.RackspaceのCentosサーバーです。 –
同じマシンでスタンドアロンテストを試しましたか?あるいは、別のOSでのTomcatテスト。 – biziclop