2009-05-27 4 views
0

Возможно ли смоделировать (3.0.27) карту приветственного файла на сервлет?Файл приветствия Resin не загружает сервлет!

Я не могу найти что-либо в документации Caucho, в которой говорится, что это не поддерживается. Ваша помощь будет принята с благодарностью.

<servlet-mapping> 
    <servlet-name>td</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

<welcome-file-list> 
    <welcome-file>index.htm</welcome-file> 
</welcome-file-list> 

Редактировать: Если это не очевидно из моего сообщения, вышесказанное не работает. :)

Редактировать: Если я поместил index.htm в файловую систему, будет выполняться отображение сервлета. Это похоже на то, что Resin завершает запрос, если он не может найти физический файл.

+0

Глупый вопрос, но вы уверены, что индексный файл index.htm, а не index.html? Я уверен, что вы проверили это, но хотели проверить на всякий случай. – Eddie

+0

Не беспокойтесь. Да, это файл .htm. Я использую Spring MVC Dispatcher Servlet для ответа на все запросы на файлы .htm. index.htm на самом деле не является файлом на диске, а скорее URL, который сопоставляется с контроллером. К сожалению, похоже, что Resin игнорирует сопоставления сервлетов, если URL-адрес генерируется из файла приветствия. – BacMan

ответ

1

Из-за того, что caucho_module загружает свою конфигурацию, он очень хорошо может игнорировать файлы приветствия. Отображение приветственного файла выполняется контейнером сервлетов (например, «Смола» в вашем случае). Но caucho_module, похоже, ищет явное сопоставление, чтобы помочь ему решить, что происходит и что не идет на Resin, против того, что Apache будет пытаться обслуживать сам.

Возможно, это ошибка в caucho_module, которая не учитывает обработку файлов приветствия?

Если это так, то одним из способов, с помощью которого вы могли бы обойти это, было бы использовать mod_rewrite от Apache для URL-адресов, которые вы хотите сопоставить с «приветственным файлом». Действительно, попытка этого вполне может доказать это. Например, что-то вроде:

RewriteEngine on 
RewriteRule ^/your/url/$ /your/url/index.htm [R=permanent,L] 

Вы можете попробовать версии URL, что делать и не заканчивается в конечном слэше ... Я не достаточно знаком с mod_rewrite, чтобы знать, если это сделает разница. В любом случае, это скажет Apache, чтобы он сказал клиенту перенаправить (перезагрузить страницу) URL-адрес, который заканчивается на вашей странице приветствия. Если эта проблема устраняет проблему, то IMO это ошибка в cacho_module.

Еще одна вещь, которую следует попробовать в качестве теста - перейти непосредственно к Resin - часто на порту 8888 - обходить Apache HTTP, чтобы увидеть, будет ли прямо переходить на Resin, страница приветствия правильно обрабатывается.

+0

Да, я пробовал правило перезаписи и оно работает. К сожалению, иногда индексный файл является .jsp, а не .htm, поэтому список правил перезаписи может быть довольно длинным. – BacMan

+0

Ну, теперь мы знаем, в чем проблема. Следующий шаг - выяснить, есть ли признанная ошибка или обходной путь в caucho_module для решения этой проблемы. – Eddie

+0

Я думаю, что это ошибка с Смолой. Я попытаюсь связаться с Кочо. – BacMan