Wicket のCaptchaImageResourceを使用して、送信フォームをボットから保護しています。Jetty サーバーを使用するテスト環境 (Mac) で正常に動作し、ローカルの Tomcat インスタンスにデプロイした場合も同様です。
しかし、アプリがリモート Linux サーバー上の Tomcat 7 にデプロイされると、Captcha 画像のレンダリングに失敗します。代わりに、0 バイトの応答が返されます。curl -v画像の URL に対して返されるものは次のとおりです。
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。私はそれを設定しps、実際にそのオプションで実行されていることを確認しましたが、キャプチャはまだレンダリングに失敗します.
Tomcat のログにエラー メッセージや警告が表示されません。リモート デバッグを有効にし、ブレークポイントを .NET の奥深くに設定するところまで行きましたCaptchaImageResource.render()。そのメソッドに入っていますが、戻ってくることはありません。291行目のどこかで、不思議なことにブレークポイントにヒットしなくなります。
サーバー JVM はjava-1.6.0-openjdk.x86_64. その JVM がヘッドレス モードで AWT グラフィックスをレンダリングできない理由はありますか?