본문 바로가기

프로그래밍

[Java/Servlet]Read timed out 에러 작업중에 아래와 같은 오류가 발생했다. org.apache.catalina.core.StandardWrapperValve invoke 심각: Servlet.service() for servlet [appServlet] in context with path [] threw exception [Request processing failed; nested exception is org.apache.tiles.definition.DefinitionsFactoryException: I/O Error reading definitions.] with root cause java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socke.. 더보기
[Spring/Tiles] Apache Tiles3, CSS, JS 페이지별 동적로딩 구현하기 Apache Tiles3 는 View 구성시에 템플릿을 통해서 정말 편리하게 View를 관리하게 해준다. 어떤 주소 형식인가에 따라서 반환을 어떻게 할지 등을 정할 수 있다. 이러한 Tiles 를 통해서 layout을 짯을 때 양식별로 페이지는 뿌리면서 css나 js도 동일한 형태로 할 수 없을까라는 의문을 가졌다. 답은 간단했다. 위에 보이는 소스에서 put-attribute의 name includeCSS를 layout에 가져가서 쓰면 된다. layout.jsp라는 파일이 있다고 했을 때 includeCSS의 값을 부르는 방법은 이렇게 기술하면 된다. 당연한 얘기지만 상단에 taglib에 tiles를 포함하고 진행해야한다. tiles가 들어간 한줄의 전체 형태는 아래와 같다. 더보기
[JSTL/JSP] EL 값 로드 후 비교하기 session에 사용자 정보를 담아서 메뉴 출력을 제어하려고 char 타입의 값을 비교대상으로 삼아서 el을 이용한 결과를 확인하려고 했다. char[] arrLevel = { '1', '1'}; 이런 형태로 되어 있는 값을 불러서 비교하도록 jsp에 표현했다. ${arrLevel[0] == '1'} 결과는 false가 나온다. 왜일까? 아래 링크를 보면 답이 나와있었다. EL은 따옴표('', "")로 쌓인 값을 String으로 인식하기 때문이라고 한다. 이를 해결하는 방법은 해당 값에 .charAt(0)을 취해서 반환받는 char값을 이용하면 된다. 그렇다면 떼어내면 어떻게 될까? 떼어내면 상수를 정수로 인식하고 비교대상 값이 정수가 아니라면 다른 값으로 인식한다. 형변환이 필요한 것이다. char[].. 더보기
[Spring/JSP] @Value를 이용한 properties정보 로드 보통 나는 Spring의 context에서 properties파일을 로드하도록 설정한다. 이렇게만 해두고 Controller에서 로드된 데이터를 불러오기 위해 맴버변수를 선언하고, 그위에 @Value를 기술한 뒤, 불러올 Key값을 기술했다. 결과는 안불러와졌다.. 이상하게도 해당 키값이름이 그대로 대입되어 있었다. 이유가 무엇을일까? context, 즉 Spring Framework의 문맥흐름에서 쓰려고 properties를 불러온 것때문에 상당한 문제가 있었다. 이게 좀 심각한 문제였다... 글로 알고 몸으로 못느끼고 그냥되겠거니 하는 안일한 태도가 또 한숨을 일으켰다. 프로젝트의 web.xml에 아래와 같이 기술하였다. context에 대한 xml의 위치, servlet에 대한 xml 위치가 분명히.. 더보기
[Java/MongoDB/Spring]데이터(Document) 입력시 _class 제거 인터넷에 떠도는 접속 MongoDB접속 방법 등을 통해서 Java MongoDB Driver 를 사용해 update, insert 등을 이용하면 Document에 내부적으로 _class가 같이 들어가게된다. 이기능을 지원하는 이유는 스키마가 애초에 없기때문에 예를 들어 같은 내용을 각기 다른 클래스의 인스턴스가 입력했을 때 어떤 것을 통해서 입력이 되었는지 분명히 하기위해 이같은 값이 들어가도록 되었다고 한다. 어떤 데이터가 정확한 프로세스로 들어갔는지 검증을 위해 이용할 수도 있지만, 정의가 확실하고 필요가 없다면 낭비되는 필드 하나가 생기는 것이다. 이를 제거하려면 아래와 같이 MongoMappingContext와 DefaultMongoTypeMapper의 설정을 변경하여 Driver에 접근하면 되겠.. 더보기
JUnit으로 성능 테스트 겉핥기 JUnit으로 성능 테스트 겉핥기 일단 하단 참고블로그를 상당부분 보고 따라했으며, 기록에 개입을 혼자 생각한 내용을 첨부해서 적어본다. JUnit의 사용목적은 단위 테스트(unit test@wikipedia.org)에 있다. 프로그램의 성능을 시험하는데 부분 별로 테스트하여 성능을 점검해보는 것이라고 생각할 수 있겠다. 분명히 프로그램에는 다양한 함수가 쓰이고 클래스가 유기적으로 엮여있기 때문에 어떤 부분에서 부하가 발생할지를 예상도 해야할 것이고 최적으로 만들려면 어떻게 해야할지를 고민하면서 여러가지 상황을 엮어서 생각해봐야 할 것이다. 과거에 프로젝트 진행 시 선임분이 작업이 안된 부분도 이를 이용하여 작성전에 퍼포먼스를 예상하는 경우를 본적이 있다. 이 부분까지 볼 수 있을지 모르겠지만 우선 작성.. 더보기
eGovFrame HelloWorld 샘플 실행해보기 eGovFrame HelloWorld 샘플 실행해보기 하단 링크를 통하여 진입한뒤 다운로드한 프로젝트를 import해서 실행했다. import 방법은 Existing Projects into Workspace로 실행했다. 기존에 있던 워크스페이스 하위에 다운로드한 파일의 압축을 풀어 나온 디렉토리를 옮겼다. 열자마자 예상대로 x표가 여기저기 뜬다. Test 클래스도 존재하는 것으로 보인다. Run as -> Maven Install을 진행해서 프로그램들을 받아야 겠다. Backgruond로 실행하게 두고 파일들을 보아하니 console에 결과를 뿌릴 것으로 보인다. Maven으로 설치가 끝난 뒤에 context를 보니 또 오류가 있다. beans의 선언을 찾을 수 없다 정도로 해석하고 뭐가 문제인지 보면.. 더보기
eGovern 개발환경 편의기능 설정하기 eGovern 개발환경 편의기능 설정하기 상황에 따라 필요한 도구들이 있다. 일반적이 이클립스 IDE에는 없는 메뉴가 eGovern IDE에는 있다. eGovFrame이라는 메뉴가 그것인데 이를 통해서 편리하게 필요한 개발 도구를 가져올 수 있다. 만약 eGovern IDE임에도 불구하고 안보인다면, perspective를 eGovFrame으로 변경하면 나타난다. eGovFrame -> Configuration -> Customize Development Tool 메뉴를 들으가면 예전에 플러그인을 제작한 사이트에서 주소값을 받아서 접근했던 메뉴와 비슷한 형태의 화면으로 넘어간다. 이 화면인데, 하단 참고사이트에서 보이는 목록에 있는 것들이 안보인다. 이유는 간단하다. 이미 설치되어 있기때문이다. 설치여부.. 더보기