MyBatis를 이용해 Spring Batch 구성시 Cannot change the ExecutorType when there is an existing transaction 에러를 만나는 경우

Spring Framework 를 이용해서 잘 돌아가던 서비스 일부를 Spring Batch 에서 구동시키려고 하니 Cannot change the ExecutorType when there is an existing transaction 와 같은 Exception 이 났다.

Spring MVC 에서 Spring Batch 로 이동하면서  Mybatis를 사용할 때 한가지 configuration 이 달라져야 하는 부분이 있다.

Spring 에서는 많은 서비스가 transactional 하게 될 것이다. Service 에서 mapper를 호출할 때 Mybatis 의 SqlSession 트렌젝션 관련해서 살펴볼게 있나 없나 확인하며 기본 설정등을 취하게 되는데

이 때 Spring Batch 에서 만든 transaction 관련해서 건들게 된다. 이것은 허용되지 않아 에러가 발생한다.

 

만일 다음과 같이 선언되어 있다면 BATCH 라는 선언을 추가해 주자.

Posted in: Life

Spring 4.1 에 등장한 AbstractJsonpResponseBodyAdvice 를 통해서 jsonp 데이타 응답을 만들 때의 한글 처리.


@ControllerAdvice
public class JSONPAdvice extends AbstractJsonpResponseBodyAdvice {

public JSONPAdvice() {
 super("callback");
 }

아무 클래스나 이러한 것을 만들어 두면 메세지 컨버터 작업을 할 때 다음의 advice를 참고해서 JSONP 형태의 응답을 만들어 낼 수 있게 된다.

다만 이 경우 JSONP의 응답 contentType은  application/javascript  로 고정 된다. 따라서 다음과 같이 Override하면 된다.

 


@ControllerAdvice
public class JSONPAdvice extends AbstractJsonpResponseBodyAdvice {

public JSONPAdvice() {
 super("callback");
 }

@Override
 protected MediaType getContentType(MediaType contentType, ServerHttpRequest request, ServerHttpResponse response) {
 return new MediaType("application", "javascript", Charset.forName("UTF-8"));
 }
}

 

Posted in: Life

Spring 4 Message Converters 의 처리 방법 분석. UTF-8 한글의 UTF-8 출력.

RESTful 한 응답 처리기를 만들기 위해서는 MessageConverter를 이용한다. 출력물을 적절한 json 형태로 만들기 위해서 컨버터를 사용하는 것이다.

mvc-config.xml 에 다음을 설정하면 스프링은 컨버터를 자동으로 등록한다.


<mvc:annotation-driven />

다음의 컨버터 중에서 위에서 부터 하나씩 처리가 가능한지 살피고 처리가 가능하면 처리 하고 브라우저로 내용을 flush 한다. 이 때 브라우저에게 지금부터 내가 보내는 내용은 어떠한 인코딩으로 작성되어 있다는 사실을 알리는데 그것이 header 값 중에 하나인 Content-Type:text/html 이다.

명시적인 message converter 를 설정에 등록하지 않으면 Spring 4는 기본적으로 7개의 컨버터를 등록하여 사용한다.


org.springframework.http.converter.ByteArrayHttpMessageConverter@3ade80f2
org.springframework.http.converter.StringHttpMessageConverter@49fc954e
org.springframework.http.converter.ResourceHttpMessageConverter@32be2576
org.springframework.http.converter.xml.SourceHttpMessageConverter@64993315
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@2a8ee664
org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter@775509e
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@44234093

controller 의 return type 이 String 이면 StringHttpMessageConverter 가 처리하게 되는데 이 Converter의 supported media type은 다음과 같다.

Posted in: Life

GIT 으로 clone 을 시도 했는데 다음과 같은 에러가 나오는 경우 : Protocol https not supported or disabled in libcurl while accessing …

에러의 시작

GIT 으로 뭔가 clone을 하려고 했는데 Protocol https not supported or disabled in libcurl while accessing … 에러가 났다. libcurl 이 https 를 지원하지 않는다는 것이다. 난 아무것도 안 했는데? 그냥 git 설치할 때 자동으로 깔아주면 안되나?? 누가 libcurl https (http over ssl)  지원 안되는 버전을 깔아놨나보다.

 

잘못된 curl 찾기

일단 curl 과 libcurl 등을 찾아보아야 한다. 커멘드 창에서 다음과 같이 치는 것이 가장 빠르다.


C:\Users\Seungho>where curl
C:\Windows\System32\curl.exe

구지 삭제는 하지 말고 다음 단계로 돌입!
혹시 C:\Windows\syswow64 디렉토리가 발견되었더라도 일단 다음으로 넘어가도록 하자.

 

다운로드

curl 싸이트에 가서 libcurl.dll 을 다운로드 받아야 한다.

Posted in: Life

온라인 툴로 간단하게 색칠놀이로 바꾸는 방법 (매직완드)

간단하게 색칠놀이를 할 수 있는 방법을 공유합니다.

사진 선정

 

dinosaur (1)

 

 

일단은 색과 색 사이에 명확한 구분선이 있는 컴퓨터로 만들어진 이미지를 구합니다. 위의 이미지도 그리 적당하지는 않은 것 같습니다. 일단 그라데이션이 많으면 작업하기 힘듭니다. 그리고 색과 색 사이에 검정색으로 명확하게 그려저 있는 것이 좋은데 위에서는 노란색 캐릭터만 검정선으로 둘러 쌓여 있고 나머지는 그러한 것이 많이 부족한 편이네요 :)

온라인 사진 편집 사이트 접속

중요한 것은 매직완드를 지원하는 사이트에 들어가야 합니다. 5가지 사이트를 제시된 가이드가 있습니다.

저는 이 중에 맨 위에 있는 pixlr 싸이트를 이용했습니다.

Posted in: Life