Я использую CaptchaImageResource от Wicket для защиты формы отправки от ботов.Он отлично работает в моей тестовой среде (Mac) с использованием сервера Jetty, а также при развертывании на локальном экземпляре Tomcat.
Но образ Captcha не отображается при развертывании приложения в Tomcat 7 наудаленный сервер Linux.Вместо этого я получаю нулевой ответ.Вот что 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.Я зашел так далеко, что включил удаленную отладку и установил точки останова глубоко в CaptchaImageResource.render()
.Это входит в этот метод, но я никогда не увижу его возвращение;где-то около строки 291. он просто таинственно прекращает попадание в мои точки останова.
Серверная JVM - java-1.6.0-openjdk.x86_64
.Есть ли какая-то причина, по которой JVM не сможет отображать графику AWT в режиме без головы?