세센이 없어지는것 같아요
- 작성자 :
- 박*환
- 작성일 :
- 2012-06-15 10:45:56
- 조회수 :
- 2,368
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
좀 쌩뚱맞게 질문 하는것 같아 망설이지만 일단 질문을 할게요!
현재 어떤 화면에서 어떤 값을 던져주고 팝업창을 띄우는데요
그리고 팝업창에 원하는 처리를 하고 팝업창을 닫았는데요
이때 처리를 할때 LoginVO에 세션 정보를 가져와야 하는데요
처음에는 잘가져오는데요
다시 한번 팝업창을 띄우면 LoginVO 세션 정보를 못물러 옵니다.
왜 이런 현상이 일어나는지 도저히 모르겠습니다.
좀 뜬 구름 잡게 얘기 하는것 같아 죄송하지만 한번 제 의문에 속시한 해결을 부탁 드리겠습니다.
일단 해당 소스는 아래에... ^^;
/**
* 기관을 선택하는 화면을 불러온다.
* @param HttpServletRequest req
* @return
* @throws Exception
*/
@RequestMapping("/send/popup/selectOrganView.do")
public ModelAndView selectOrganView(@ModelAttribute("OrganPopupVo") OrganPopupVo organPopupVo,RecordBoardVO recordboardVO) throws Exception{
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
ModelAndView mv = new ModelAndView();
Map<String, Object> map = new HashMap<String, Object>();
HashMap<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("organId", user.getOrganId());
List<TreeDaoVO> resultTree = sendPopupService.selectTreeOrganDept(paraMap);
ArrayList<NeosJsTree> nodeList = treeUtil.makeTree(resultTree);
JSONArray jsonArr = JSONArray.fromObject(nodeList);
JSONArray organPopupVoJson = JSONArray.fromObject(organPopupVo);
map.put("treeJson", jsonArr);
map.put("afterInfoJson", organPopupVoJson);
map.put("c_sireceivecode", recordboardVO.getC_sireceivecode());
map.put("c_sireceivename", recordboardVO.getC_sireceivename());
map.put("sendername", recordboardVO.getSendername());
mv.addAllObjects(map);
mv.setViewName("/neos/edoc/document/record/popup/outterSelectPopup");
return mv;
}
이상입니다.
현재 어떤 화면에서 어떤 값을 던져주고 팝업창을 띄우는데요
그리고 팝업창에 원하는 처리를 하고 팝업창을 닫았는데요
이때 처리를 할때 LoginVO에 세션 정보를 가져와야 하는데요
처음에는 잘가져오는데요
다시 한번 팝업창을 띄우면 LoginVO 세션 정보를 못물러 옵니다.
왜 이런 현상이 일어나는지 도저히 모르겠습니다.
좀 뜬 구름 잡게 얘기 하는것 같아 죄송하지만 한번 제 의문에 속시한 해결을 부탁 드리겠습니다.
일단 해당 소스는 아래에... ^^;
/**
* 기관을 선택하는 화면을 불러온다.
* @param HttpServletRequest req
* @return
* @throws Exception
*/
@RequestMapping("/send/popup/selectOrganView.do")
public ModelAndView selectOrganView(@ModelAttribute("OrganPopupVo") OrganPopupVo organPopupVo,RecordBoardVO recordboardVO) throws Exception{
LoginVO user = (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser();
ModelAndView mv = new ModelAndView();
Map<String, Object> map = new HashMap<String, Object>();
HashMap<String, Object> paraMap = new HashMap<String, Object>();
paraMap.put("organId", user.getOrganId());
List<TreeDaoVO> resultTree = sendPopupService.selectTreeOrganDept(paraMap);
ArrayList<NeosJsTree> nodeList = treeUtil.makeTree(resultTree);
JSONArray jsonArr = JSONArray.fromObject(nodeList);
JSONArray organPopupVoJson = JSONArray.fromObject(organPopupVo);
map.put("treeJson", jsonArr);
map.put("afterInfoJson", organPopupVoJson);
map.put("c_sireceivecode", recordboardVO.getC_sireceivecode());
map.put("c_sireceivename", recordboardVO.getC_sireceivename());
map.put("sendername", recordboardVO.getSendername());
mv.addAllObjects(map);
mv.setViewName("/neos/edoc/document/record/popup/outterSelectPopup");
return mv;
}
이상입니다.
A
안녕하세요.. 박기환님..
이런 경우는.. 하나의 도메인(http://localhost도 해당)에 여러 개의 web app가 운영될 때에 발생합니다.
이유는 session에 대한 정보를 jsessionid라는 cookie를 통해 관리합니다.
이때에 도메인당 하나의 cookie를 갖을 수 있기 때문에.. 서로 다른 web app를 호출한다면..
다른 web app에서 생성된 jessionid를 가지고 서버의 세션 정보를 가져오기 때문에.. 엉뚱한 세션 정보를 가져오는 경우가 됩니다. (로그인이 되었는데.. 다른 web app를 호출하면.. 기존 로그인 정보가 없어짐)
해결방법은.. 각 webapp 마다 JSESSIONID라는 키값을 다르게 지정하는 것입니다.
방법은 각 WAS별 문서를 참조하시거나.. 인터넷을 통해 확인하시면 됩니다.
예를 들면.. weblogic의 경우는 weblogic.xml 상에.. 다음과 같은 설정을 추가하시면 됩니다.
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>MYJSESSIONID</param-value>
</session-param>
위 경우외에는 프로그램 상의 문제는 없을 것 같습니다.
(혹.. 다른 부분에서 세션을 강제로 없애주는 로직이 추가된 경우 제외)
그럼.. 즐거운 하루되십시오.
감사합니다.
이런 경우는.. 하나의 도메인(http://localhost도 해당)에 여러 개의 web app가 운영될 때에 발생합니다.
이유는 session에 대한 정보를 jsessionid라는 cookie를 통해 관리합니다.
이때에 도메인당 하나의 cookie를 갖을 수 있기 때문에.. 서로 다른 web app를 호출한다면..
다른 web app에서 생성된 jessionid를 가지고 서버의 세션 정보를 가져오기 때문에.. 엉뚱한 세션 정보를 가져오는 경우가 됩니다. (로그인이 되었는데.. 다른 web app를 호출하면.. 기존 로그인 정보가 없어짐)
해결방법은.. 각 webapp 마다 JSESSIONID라는 키값을 다르게 지정하는 것입니다.
방법은 각 WAS별 문서를 참조하시거나.. 인터넷을 통해 확인하시면 됩니다.
예를 들면.. weblogic의 경우는 weblogic.xml 상에.. 다음과 같은 설정을 추가하시면 됩니다.
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>MYJSESSIONID</param-value>
</session-param>
위 경우외에는 프로그램 상의 문제는 없을 것 같습니다.
(혹.. 다른 부분에서 세션을 강제로 없애주는 로직이 추가된 경우 제외)
그럼.. 즐거운 하루되십시오.
감사합니다.