Java/Etc

Java addCookie 삽질기

체리필터 2010. 3. 10. 18:16
728x90
반응형

매일 프로그램 삽질은 하고 있지만 이번 건은 유난히 더 삽질이 길었다.
3일 동안 아무런 일도 못하고 이 일에만 매달렸다.
다른 일을 하긴 해야 하지만, 개발자 자존심에 해결하지 못하고 넘어가기에도 뭐 하고...
결국에는 해결하게 되었지만 아무것도 아닌 원인 때문에 해결하고도 짜증이 난다.

증상은 다음과 같다.

package com.naver.widget.action;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.naver.widget.WidgetBaseAction;
import com.nhncorp.lucy.web.helper.ServletHelper;

public class LoginTest extends WidgetBaseAction {
	private static final Log log = LogFactory.getLog(LoginTest.class);
	
	@Override
	public String execute() throws Exception {
		HttpServletResponse response = ServletHelper.getResponse();
		
		Cookie cookie1 = new Cookie("cookieKey1", "bla...bla..");
		cookie1.setDomain(".naver.com");
		cookie1.setPath("/");
		
		Cookie cookie2 = new Cookie("cookieKey2", "bla...bla..");
		cookie2.setDomain(".naver.com");
		cookie2.setPath("/");
		
		response.addCookie(cookie1);
		response.addCookie(cookie2);
		
		return SUCCESS;
	}
}



소스는 간단하다.
그냥 특정 쿠키를 생성한 다음 response에 실어 보내는 것이다.

그런데 로컬과 서버의 결과물이 달랐다.

* 로컬의 결과물

cookieKey1=bla...bla...;
cookieKey2=bla...bla...;


* 서버의 결과물

cookieKey1="bla...bla...";
cookieKey2="bla...bla...";


둘 간의 차이점은 value 앞 뒤로 쌍따옴표(")가 있느냐 없느냐이다.
큰 차이가 아닐지 모르지만 인증 관련된 작업을 다루는데 있어서 해당 값으로 인해 로그인이 되기도 하고 안되기도 하는 부분이라서 매우 골치 아픈 부분이었다.

소스를 이리도 뜯어보고 저리도 뜯어 봤지만 해결은 되지 않았고,
Googling을 아무리 해 봐도 답은 나오지 않았다.(내 능력 부족 -.-;;)

결국 회사 내 다른 분의 도움을 얻어 로컬과 서버의 tomcat 버젼의 차이때문에 생기는 것임을 알게 되었고 서버의 tomcat 버젼을 5.5.27로 downgrade해서 문제를 해결하게 되었다

관련된 내용은 http://tomcat.apache.org/tomcat-5.5-doc/changelog.html 의 46587 에서 확인해 볼 수 있다.

728x90
반응형