Servlet Filter 질문입니다.

18 views
Skip to first unread message

planner

unread,
Nov 6, 2009, 1:03:16 AM11/6/09
to Korea Spring User Group
안녕하세요. 오랫만에 출첵합니다.

Servlet Filter에 궁금한 점이 있어 글을 올립니다.

현재 환경은 동일 WAS에서 서로다른 두개의 도메인을 사용하고 있습니다.
크게 "UI"와 "비UI"라고 칭하겠습니다.

최초 서버분리를 목적으로 UI쪽에서 전문형태로 변환된 내용을
비UI쪽에 아래소스와 같이 전달후 return을 받고 있습니다.

public byte[] callMethod(String host, int port, String context, byte
[] bytes)
throws IOException {
HttpURLConnection con = null;

try {

URL url = new URL(HTTP_URL_HEADER + host + ":" + port + "/" +
context);
con = (HttpURLConnection) url.openConnection();

if (con == null) {
//에러처러
} else {

con.setDoOutput(true);
con.getOutputStream().write(bytes);

int resCode = con.getResponseCode();

if (resCode == HttpURLConnection.HTTP_OK) {
return URLConnection getStream을 ByteArray로 변환(con);
} else {
//에러처러
}
}

} catch (MalformedURLException mex) {
//생략
} catch (IOException ex) {
//생략
} finally {
if (con != null) {
con.disconnect();
}
return null;
}
}

이것을 하나의 WAS에서 실행 하는것으로 변경되어 바로 method 호출로 변경하자는 고객의
요청이 있는데
비UI쪽은 Servelt 기반으로 되어 있어 불가하다는 입장입니다.

비UI쪽에서 제시하는 방안으로 Servlet Filter를 사용하자고 하는데
제가 이 녀석은 잘 몰라서 과연 어느정도의
기대효과가 있는지와 더 나은 방법이 없는지 조언을 부탁드립니다.

도메인 통합도 가능 하면,
이 문제가 깔끔하게 해결되는 것인지..
library들의 충돌문제 등이 발생할 여지가 있을 듯 해서요.
이때는 어떤 상황을 고려해 볼수 있을 까요?
(예를 들면 log4j)

제가 이쪽에 내공이 부족해서, 더 나은 질문작성을 못했다면 심심한(?) 사과를 드립니다. ^^ ~
안녕히 계세요.

박성철

unread,
Nov 8, 2009, 8:04:45 PM11/8/09
to ks...@googlegroups.com
글을 읽어보니 그동안 도메인 두개가 있었고 각 도메인 마다 별도 servlet
context를 설정해서 운영하셨던 것 같네요.
이제 그것을 통합하면서 원격 호출이 필요 없어졌으니 로컬에서 직접 호출하
시겠다는 거죠?

Servlet Filter는 사실별로 복잡한 기술이 아니라서 검색하면 금방 아실 수
있을 거고요.
지금 하시려는 일을 Servlet Filter로 어떻게 해결하자는 건지 한번 물어보셔
야겠습니다. 저는 딱히 떠오르는 아이디어가 없네요.

오히려 저는 RequestDispatcher를 쓰면 딱일 것 같은데 말이죠?
ServletContext.getRequestDispatcher(path)로 dispatcher를 구한 다음
include() 메소드 호출로 비UI 쪽 서블릿을 실행하시면 비슷한 효과를 얻으실
수 있을 것 같습니다.

아니면 해당 Servlet의 service() 메소드를 직접 호출하셔도 되고요. ^^ (이
게 더 간단하겠네요.)
호출하실 때 ServletResponse를 살포시 wrapping해서 출력 결과를 가로채면
지금 쓰고 계시다는 callMethod()의 bytes parameter 같은 출력 내용 버퍼도
운영하실 수 있을 겁니다.


planner 쓴 글:

박병훈

unread,
Nov 8, 2009, 11:37:24 PM11/8/09
to ks...@googlegroups.com
회장님 조언에 감사 드립니다.

Servlet Filter에 대해서 일단 더 찾아보도록 하겠습니다.

Servlet의 service() 메소드를 직접 호출하는 방법으로
시도해 봐야겠습니다.

다시 한번 감사드립니다.
안녕히 계세요~
Reply all
Reply to author
Forward
0 new messages