반응형

프레임워크(스프링) 구축시 자주 볼 수 있는 한글 처리와 에러 메세지


작업을 하다보면 종종 볼수 있는 메세지를 정리해 봅니다. 

에러 메세지를 볼때면 자주 찾아 보게 되는데 찾아 봤던것이 기억나지 않는 경우도 종종 있다 보니 따로 정리를 좀 해보았습니다. 

프로그래 밍을 하고 싹 돌려봤을때 에러 없이 딱 작동이 되는 그때의 그기분은 참 짜릿합니다.

그런데 테스트를 하는데 딱 하고 에러 메세지가 나오면 한심하기도 하고 순간 짜증이 많이 날때가 많습니다. 

그런데도 불구하고 비슷한 실수를 많이 합니다.  주의 사항이라고 할 수도 있게 몇 가지를 정리해 봣습니다.  


1. 한글이 깨지는 경우 처리 방법


한글 깨짐은 에러는 아니지만 get방식으로 request할 때 한글 깨지는 문제 처리 방법이다.

클라이언트 측 : jQuery에서 한글로된 인자를 넘길 때 encodeURI(encodeURIComponent(value))로 넘긴다.

서버 측 : Controller에서 한글 인자를 받을 때 URLDecoder.decoded(value)로 처리해준다.



2. Invalid bound Statement (not found): Mapper.function


요것도 메시지를 눈여겨 보면 답이 나온다.

문장과 Mapper의 함수가 연결이 안된다는 이야기의 오류 이다. 

바로 Mapper.xml에 있는 쿼리 id와 Mapper.java에 있는 메소드 명이 달라서 발생한 문제다.



3. Mapped Statemets collection already contains value for...

톰캣을 기동하는데 이런 메시지가 나오면서 디플로이가 제대로 안된다면

Mapper에 중복된 설정이 있거나 id명을 실수해서 썼거나 했을 경우가 많습니다. 

특정 Mapper의 Query문 mapping이 잘 안되었을 경우 볼수 있는 오류 입니다.

MyBatis 쿼리 설정 상의 문제 또는 Mapper와 Query 호출 부분이나 쿼리를 테스트 해 보아야 합니다.



4. requestmappinghandlermapping did not find handler method for


요건 메시지 내용대로 request에 대한 mapping이 잘못되어 요청한 리소스를 찾을 수 없다는 뜻이다.

요런 것이 참 별것도 아니면서 시간 잡아먹는 하마다.

문제의 원인은 엉뚱하게 오타나 다른 request parameter를 값을 호출 해놓고는 호출 시 다른 paramater를 호출한 경우 이다.

반응형
반응형

이클립스 스프링 JNDI 설정 방법


프로젝트를 스프링으로 구성 했을때 JNDI로 DB를 접근해야 하는 경우가 있습니다. 

보통 구축이나 운영 프로젝트를 진행 할때 많이들 사용하게 됩니다.

여러 프로젝트에서 하나의 datasource를 공유해서 사용할때 이용됩니다.

마지막으로 load balancing 이 좋다고 하는게 사용자는 체감을 할수는 없을거라 생각 됩니다.


우선 JNDI 설정은 application(웹사이트) 내에 DB 정보를 설정 하여 접근 하는 방식이 아니고 

WAS(톰캣,제우스,웹로직 등)에서 미리 설정 된 [연결정보name]을 호출 하여 접근 하는 방식입니다.


우선 스프링 구성에서 application-config.xml 파일을 열어 봅니다. 

또는 context-datasource.xml 등의 파일 안에 설정이 있습니다.


가장 간단히 찾아 볼수 있는 방법으로는 프로젝트에서 datasource와 jndi로 검색을 해보면 xml 파일에서 설정되어 있는 부분을 찾을 수 있습니다.


일반적으로 다음과 같이 선언 되어 있습니다.

오라클 DB 기준입니다.  


[jdbc 방식]

<bean id="datasource" class="org.apche.commons.dbcp.BasicDataSource">

  <property name="driverClassName" value="oracle.jdbc.OrcleDriver" />

  <property name="url" value="jdbc:oracle:thin:@아이피:포트:SID" />

  <property name="username" value="접속아이디" />

  <property name="password" value="패스워드" />

</bean>


이것을 JNDI로 변경하면 아주 간단하게 바뀝니다. 


[JNDI 방식]

<bean id="datasource" class="org.springframework.jndi.JndiObjectFactoryBean">

  <property name="jndiName" value="JDNI선언이름" />

  <property name="resourceRef" value="true" />

</bean>


연결 정보가 미리 WAS 서버에서 선어 되어 있기 때문에 이름만 호출 해서 사용을 하면 됩니다. 


TOMCAT에서 JDNI로 DB 연결 정보를 설정 하는 방법 다음글로 올리겠습니다. 

 

반응형

+ Recent posts