2012-06-14 4 views
0

누구나 이와 같은 작업을 수행했는지 묻고 싶습니다. 기본적으로 paypal 익스프레스 체크 아웃 기능과 같습니다 :Jersey Servlet과 JSF Backing Bean 사이의 범위 공유

1.) 가맹점에서 결제 할 항목을 선택합니다.

2.) 로그인 페이지로 리디렉션됩니다. 제 경우에는 Jersey Rest Servlet으로 구현했습니다. 게시물에서 세션 EJB 백킹 빈에 데이터를 저장하고 Response.seeOther()를 호출하여 로그인 페이지 (JSF)로 리디렉션합니다.

3) 로그인이 성공하면 게시 된 트랜잭션 데이터가 유지되어야합니다.

하지만 세션 백킹 빈을 호출 할 수 있지만 게시 된 데이터를 해당 빈 내부의 변수에 저장하는 것으로 보입니다. 로그인 (로그인 확인)을 클릭하고 동일한 bean에 다시 액세스하면 게시 된 데이터를 저장하는 변수가 null이됩니다.

그래서 세션 범위가 Jersey Rest Servlet과 ejb의 세션 범위 백업 빈간에 공유되지 않습니까?

기타 좋은 방법이 있습니까?

감사합니다,
czetsuya

답변

0

이 문제를 해결하기 위해 jsf 세션을 다른 방법으로 구현했기 때문에 저지 세션이나 서블릿 세션을 공유 할 수 없다는 결론을 얻었습니다.

내 문제에 대한 내 솔루션은 (하지 질문에 대답)의 HttpServlet을 사용하고 세션 속성으로 트랜잭션을 저장하는 것입니다

:

HttpSession session = request.getSession(true); 
session.setAttribute("POSTED_ITEMS", postedItems); 

그래서 나는 다음 페이지에 액세스 할 수 있습니다 .

* javaee6 bean이 뒷받침하는 jsf 페이지에 게시하는 방법이 있으면 삶이 간단 해집니다 .--).

1

세션 범위는 웹 서비스 호출을 사용할 수 없습니다. 응용 프로그램 범위를 사용하거나 자신 만의 응용 프로그램 범위를 만들어야합니다.

+0

이제 알았습니다. 불행하게도 애플리케이션 스코프는 좋은 생각이 아닙니다. 동시에 여러 체크 아웃 트랜잭션을 수행 할 수 있으며 게시 된 데이터를 1 개의 애플리케이션 범위 변수에 저장하고 싶지 않기 때문입니다. – czetsuya

+0

그건지도가 디자인 한 것입니다. (물론 응용 프로그램 서버가 내부적으로 병렬 세션을 처리하는 방법도 있습니다 :-) 또 다른 옵션은 데이터베이스에 데이터를 저장하는 것이지만 취소 된 로그인으로 피들을 써야 할 수도 있습니다. –

+0

불행히도 데이터베이스가 가장 간단한 방법이지만 쓰레기 데이터가 데이터베이스에 쌓이기 때문에 최상의 옵션이 아닐 수도 있습니다. 이전에 이런 유형의 기능을 구현하지 않았기 때문에지도가 확실하지 않습니다. 따라서 사용자 (1 대 1)에 묶일 주문지도가있는 것처럼 보입니까? – czetsuya

관련 문제