2013-09-27 5 views
0

ICEFaces 1.8.2와 Tomcat 6.0.24를 사용하여 하나의 jspx 페이지를 만들었습니다. 이 페이지에는 3 개의 입력 필드와 몇 개의 출력 텍스트 만 있습니다. 메타 새로 고침으로 인해 페이지가 10 분마다 다시로드됩니다.리디렉션의 원인은 누구입니까? Tomcat 또는 ICEFaces?

FireFox 23에서 페이지를 열고 잠시 동안 열어두면 페이지가 존재하지 않는 URL로 리디렉션되어 오류 페이지가 표시됩니다. URL buildserver/proef/terminal/sample ...은 buildserver/proef/terminal/inal/sample로 리디렉션됩니다.

내 질문은 무엇입니까? 페이지가 잘못된 URL로 리디렉션되는 이유는 무엇입니까? Tomcat 또는 ICEFaces에 문제가 있습니까?

Apache 웹 서버를 사용하여 HTTP 트래픽을 Tomcat으로 리디렉션하지 않습니다. Eclipse에서 Tomcat을 실행할 때 리디렉션이 발생하는 것을 보았습니다. 어떤 도움에 감사드립니다

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 

: 여기

는 Wireshask로 촬영 한 브라우저와 톰캣 사이의 통신을 요약 한 것입니다.

답변

0

마침내 나는 문제의 원인을 직접 발견했습니다. 내 web.xml에 나는 두 URL-패턴을 지정 :/ABC있는 권한이 필요하고/*/터미널/* 인증이 요구되지 않은 :

<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> 

시나리오를 문제 재현 :

    을 하나 개의 브라우저에서
  • 열기 두 페이지 : ABC/one.jspx 및 /terminal/two.jspx
  • 터미널/two.jspx에 ABC/one.jspx
  • 스위치에 로그인하고 트리거
  • 이제 터미널 작업 /two.jspx는 redirec입니다. 테드 터미널/inal/two.jspx

나는 그들이 동일한 길이를 가질 수 있도록 web.xml 파일의 URL-패턴을 변경하여 문제를 통해서 문제를 해결할 : 나는 /trm/*을 사용하는 대신 /terminal/*의.

톰캣은 URL 패턴을 혼합합니다. 이것은 Tomcat의 버그 또는 문서화되지 않은 기능입니까?