2016-06-22 1 views
0

Tomcat 5에서 실행되는 완벽하게 작동하는 웹 Java 1.5 웹 응용 프로그램이 있습니다. 응용 프로그램은 세션에 의존하므로 세션 쿠키가 전달되거나 JSESSIONID가 컨텍스트의 끝에 오는 한 모든 것이 잘 작동합니다 이 같은 경로 "; JSESSIONID = ..."를JSESSIONID를 사용하여 특정 세션을 어떻게 설정할 수 있습니까?

지금과 같이 작동 환경에서, 내 응용 프로그램 작업을해야 :

  • 내 응용 프로그램에 대한 모든 요청이 POST 것 하나에 URL, 매개 변수 없음 whatsover (그래서 나는 컨텍스트 경로에서 jsessionid를 설정할 수 없습니다).
  • 리디렉션이 허용되지 않습니다. 내 응답과 함께 HTTP 상태 200을 반환해야합니다.
  • POST의 본문은 특정 XML입니다 (사용자 지정 매개 변수를 추가 할 수 있습니다).

내 응용 프로그램이 오래되어 잘 작동하므로 모든 것을 변경하지 않고이 작업을 수행하려고했습니다. 필자는 XML 본문의 매개 변수 중 하나 인 실제 URL을 추가 한 다음 해당 URL에 대한 응답을 전달하고 나머지 매개 변수를 추가하여 단일 URL을 작동하도록 만들 수있었습니다.

http://server.com/realPage.do?param1=value1&param2=value2 

그리고 작동 : 다음 앞으로 이것에

POST http://server.com/singleUrl.do 

<xml> 
    <parameters>url=realPage.do&amp;param1=value1&amp;param2=value2</parameters> 
</xml> 

예를 들면 다음과 같습니다. 방금 애플리케이션에 추상화 레이어를 추가했는데 모든 것이 잘 작동합니다. 세션을 제외하고 ...

세션 쿠키가 전송되지 않으므로 POST 간의 세션이 끊어집니다. 나는이 같은 XML에서 사용자 정의 매개 변수 중 하나로서 JSESSIONID를 추가 :

<xml> 
    <parameters>url=realPage.do&amp;param1=value1&amp;param2=value2&amp;jsessionid=ABC121312</parameters> 
</xml> 

그리고에 전달 시도 :

http://server.com/realPage.do;jsessionid=ABC121312?param1=value1&param2=value2 

그러나 그것은 작동하지 않습니다. 같은 일이 리디렉션과 함께 작동합니다. 물론 새로운 요구 사항에서는 리디렉션이 허용되지 않습니다.

마지막으로, 내 질문. JSESSIONID에 해당하는 세션을 어떻게 설정할 수 있습니까? 나는 "실제"응용 프로그램으로 보내기 전에 요청을 처리하는 동일한 추상화 계층에서이 작업을 수행하려고합니다.

+0

쿠키가 요청 헤더에 설정됩니다. 주어진 제약 조건으로 인해 동일한 세션을 유지할 수 없으면 변경해야합니다. – EJP

+0

나를 믿어 라. 나는 이것에 대해 뜨거운 논쟁을했다. 그들의 플랫폼은 변경할 수 없습니다. 그 중 하나가 클라이언트가되거나 잃는 것입니다. – manugarciac

답변

0

나는 이것에 대한 해결책을 생각해 냈다 ... 나는 XML을 파싱 한 다음 JSESSIONID를 사용하여 새로운 요청을하는 프록시를 구현했다. 그런 다음 실제 요청의 응답에 대한 요청의 응답을 작성합니다.

프로토 타입을 만들었고 제대로 작동하는 것 같습니다. 정말 못 생겼지 만, 적어도 내 응용 프로그램은 실제로 이런 일이 일어나는지 알지 못합니다.

관련 문제