logback.xml 설정 파일 위치가 /WEB-INF/classes/ 안에 있는 상태였다.

logback 의 특정 Appender 의 log level을 info 에서 debug 로 변경 후 저장했는데 톰캣 Context 가 reload 되는 부분을 확인.


원인 : 톰캣 server.xml 설정 파일내의 Context 의 reloadable 설정이 true 로 되어 classes 폴더 안에 변경이 발생되면 Context 를 reload 함

<Context path="" docBase="ROOT" reloadable="true"/>


수정 : reloadable="false" 로 수정 후 톰캣 재기동

<Context path="" docBase="ROOT" reloadable="false"/>

Posted by 스트라
,



기대 결과


someList.get(0).getSomething() : something

someList.get(1).getSomething() : something2


실제 결과


someList.get(0).getSomething() : something2

someList.get(1).getSomething() : something2



수정 소스



기대 결과


someList.get(0).getSomething() : something

someList.get(1).getSomething() : something2


실제 결과


someList.get(0).getSomething() : something

someList.get(1).getSomething() : something2



Posted by 스트라
,

기존 소스


insertAndUpdate()는 항상 새로운 트랜잭션을 가져야하기 때문에 propagation=Propagation.REQUIRED_NEW 로 설정

Exception.class 예외가 발생했을 때 rollback 하기 위해서 rollbackFor={Exception.class} 로 설정

update() 메소드에서 강제로 Exception 발생을 시켰는데 insert() 메소드를 통해 DB에 등록된 값이 rollback이 되지 않는 것....


try...catch 문에서 Exception을 catch 하고 증발시켜버려서 Spring 이 예외를 감지하지 못한거였다.


수정 소스


잘 작동한다


참고 : https://stackoverflow.com/questions/16421508/how-to-rollback-spring-transaction-when-an-exception-is-thrown


-------------- 2019-04-17 추가

위 부분 문제가 되기 전에 삽질을 했던 것이 생각나서 추가함.


servlet-context.xml 에 component-scan 을 package 전체를 잡아놔서 안된 것도 있었다.



servlet context에는 controller 만 추가하고, 그 외는 application context에 추가한다



Posted by 스트라
,