2013-09-27 6 views
0

Используя ICEFaces 1.8.2 и Tomcat 6.0.24, я создал одну страницу jspx. Эта страница содержит только три поля ввода и несколько выходных текстов. Страница перезагружается каждые 10 минут из-за обновления мета.Кто вызывает перенаправление: Tomcat или ICEFaces?

Когда я открываю страницу в FireFox 23 и оставляю ее открытой в течение некоторого времени, страница перенаправляется на несуществующий URL-адрес, что приводит к отображению страницы с ошибкой. URL buildserver/proef/terminal/sample ... перенаправляется на buildserver/proef/terminal/inal/sample ...

Мой вопрос: что заставляет страницу перенаправляться на неправильный URL? Это проблема с Tomcat или ICEFaces?

Я не использую веб-сервер Apache для перенаправления HTTP-трафика на Tomcat. Я даже видел, что перенаправление происходит при запуске Tomcat в Eclipse.

Вот сводка связи между браузером и Tomcat захваченной с Wireshask:

GET /proef/terminal/sample_label_print.jspx?location=004-PRODEE HTTP/1.1 

Host: buildserver 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: nl,en-us;q=0.7,en;q=0.3 
Accept-Encoding: gzip, deflate 
DNT: 1 
Cookie: JSESSIONID=57AC0E6B2F86B115AE984F3B7E7FBA93; ice.sessions=; updates=; ice.lease=1380208450505; JSESSIONID.8be0fa73=1f4e10ca702da469c4b0c37f42905d6a; screenResolution=1680x1050; JSESSIONID.48b2edef=c66cf618a1d31a7cef66687c8f6c0550; bconn=Bv54BVUkcK2uDN4y25NcvA:50:acquired 
Connection: keep-alive 
Cache-Control: max-age=0 

HTTP/1.1 302 Moved Temporarily 

Server: Apache-Coyote/1.1 
Pragma: no-cache 
Cache-Control: no-cache 
Expires: 0 
Cache-Control: no-cache 
Cache-Control: no-store 
Cache-Control: must-revalidate 
Location: http://buildserver/proef/terminal/inal/sample_label_print.jspx 
Content-Type: text/html;charset=UTF-8 
Content-Length: 0 
Date: Thu, 26 Sep 2013 15:14:06 GMT 


GET /proef/terminal/inal/sample_label_print.jspx HTTP/1.1 

Host: buildserver 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: nl,en-us;q=0.7,en;q=0.3 
Accept-Encoding: gzip, deflate 
DNT: 1 
Cookie: JSESSIONID=57AC0E6B2F86B115AE984F3B7E7FBA93; ice.sessions=; updates=; ice.lease=1380208450505; JSESSIONID.8be0fa73=1f4e10ca702da469c4b0c37f42905d6a; screenResolution=1680x1050; JSESSIONID.48b2edef=c66cf618a1d31a7cef66687c8f6c0550; bconn=Bv54BVUkcK2uDN4y25NcvA:50:acquired 
Connection: keep-alive 
Cache-Control: max-age=0 


HTTP/1.1 500 Internal Server Error 

Server: Apache-Coyote/1.1 
Pragma: no-cache 
Cache-Control: no-cache 
Expires: 0 
Cache-Control: no-cache 
Cache-Control: no-store 
Cache-Control: must-revalidate 
Content-Type: text/html;charset=UTF-8 
Transfer-Encoding: chunked 
Date: Thu, 26 Sep 2013 15:14:06 GMT 

Любая помощь приветствуется.

ответ

0

Наконец-то я сам нашел причину проблемы. В моем web.xml я указал два URL-модель:/а/*, для которого требуется авторизация и/терминал/*, для которых разрешение не требуется:

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/abc/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>*</role-name> 
    </auth-constraint> 
</security-constraint> 

<security-constraint> 
    <web-resource-collection> 
     <url-pattern>/terminal/*</url-pattern> 
     <http-method>GET</http-method> 
     <http-method>POST</http-method> 
    </web-resource-collection> 
</security-constraint> 

Сценария воспроизвести проблему:

  • Открыть две страницы в одном браузере: а/one.jspx и /terminal/two.jspx
  • Вход в а/one.jspx
  • Переключения в терминале/two.jspx и инициирует действие
  • Теперь терминал /two.jspx redirec Ted к клемме/Инал/two.jspx

Я sovled проблемы путем изменения URL-шаблонов в web.xml, так что они имеют одинаковую длину: вместо /terminal/* я использовал /trm/*.

Tomcat смешивает URL-шаблоны. Это ошибка в Tomcat или недокументированная функция?