블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
05-01 12:55
 

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
 

최근에 올라온 글

최근에 달린 댓글

[Spring 3] @Scheduled 설정

Spring / 2011. 1. 17. 16:25
설정에서 cron 은 cron 표현식을 이용하면 되고, 다른 설정의 경우 애매한 부분이 있어 정리를 합니다.

ㅁ fixedDelay
>> 모든 실행이 끝난 후 설정된 시간 이후에 메소드를 다시 실행합니다.


실행결과
start Mon Jan 17 16:17:16 KST 2011
end Mon Jan 17 16:17:17 KST 2011
start Mon Jan 17 16:17:22 KST 2011
end Mon Jan 17 16:17:23 KST 2011
start Mon Jan 17 16:17:28 KST 2011
end Mon Jan 17 16:17:29 KST 2011
start Mon Jan 17 16:17:34 KST 2011
end Mon Jan 17 16:17:35 KST 2011
start Mon Jan 17 16:17:40 KST 2011
end Mon Jan 17 16:17:41 KST 2011

위의 실행결과를 보시면 메소드 종료 후 5초 후에 다시 시작합니다.


ㅁ fixedRate
>> 해당 주기마다 메소드를 실행합니다.


실행결과
start Mon Jan 17 16:19:42 KST 2011
end Mon Jan 17 16:19:43 KST 2011
start Mon Jan 17 16:19:47 KST 2011
end Mon Jan 17 16:19:48 KST 2011
start Mon Jan 17 16:19:52 KST 2011
end Mon Jan 17 16:19:53 KST 2011
start Mon Jan 17 16:19:57 KST 2011
end Mon Jan 17 16:19:58 KST 2011
start Mon Jan 17 16:20:02 KST 2011
end Mon Jan 17 16:20:03 KST 2011

위의 실행결과를 보면 메소드가 끝나는 시간과는 관계없이 5초 후에 다시 시작합니다.

약간의 차이가 있으므로, 용도에 따라 사용하면 될 것 같네요~

Posted by 자수씨
, |

어노테이션을 이용한 Task Scheduling 을 하려면 annotation-driven 엘리먼트를 추가합니다.



그 후, 스케쥴링에 이용할 메소드에 @Scheduled 어노테이션 설정을 합니다.

익숙한 cron 방식으로 설정을 하는 것이라 따로 설명을 하지 않겠습니다.

어노테이션... 생각보다 편의성이 돋네요;;;

참고자료: http://krams915.blogspot.com/2011/01/spring-3-task-scheduling-via.html

Posted by 자수씨
, |
아래와 같이 스프링 applicationContext 들이 web.xml 에 정의되어 있었습니다.

web.xml



conf/gw-Common.xml



conf/gw-Mail.xml



conf/gw-Workflow.xml



conf/gw-Board.xml



이상하게도 자꾸 gw-Common.xml 에 선언된 sqlmap 들을 찾을 수 없다고 하여 org.springframework.orm.ibatis.SqlMapClientFactoryBean 의 소스를 넣고 트레이싱을 해본 결과 com/idstrust/wiseone/engine/gw/conf/SqlMapConfig.xml 대신에 com/idstrust/wiseone/engine/gw/conf/SqlMapConfig-Board.xml 가 설정되고 있었습니다.

여러가지 실험을 해본 결과 gw-Common.xml 에 선언된 sqlMapConfig 의 id 를 다른 것으로 변경하여 문제는 해결하였습니다.
		
	
		
		
	

	...



자기 멋대로 오토와이어링이 먹을리는 없고... 분석할 시간이 없으므로 일단은 다음 단계로 넘어갑니다;;;
(이전 포스팅의 문제는 아니였습니다;;;)

Posted by 자수씨
, |
여러가지 섞여 있던 소스 프로젝트를 모듈 단위 메이븐 프로젝트로 분리하면서 스프링 관련 설정들도 함께 분리하게 되었습니다.

그 중에 한가지가 spring-mvc 서블릿의 분리작업이였습니다.

아래와 같이 *.test 로 들어오는 요청에 대한 스프링 설정을 원래는 한개에서 3개로 분리하였습니다.



conf/test.xml


conf/test-A.xml


conf/test-B.xml



상식적으로 생각하면 test1.test, test-a1.test, ... 이런 요청들에 대해 정상적으로 처리할 것으로 예상하였으나... 서버가 올라올 때 오류도 생기지 않고 호출도 되지 않았습니다.

이런 황당함을 뒤로 하고 여러가지 테스트를 해본 결과 원인을 발견하였습니다. 바로 SimpleUrlHandlerMapping Bean 을 여러개 등록하게 되면 어디선가 꼬여버리는 것이였습니다.

처음에는 SimpleUrlHandlerMapping 클래스를 확장해서 할 수 있는 방법을 찾아보다가 구글의 힘을 빌어 해결책을 찾아냈습니다.



간단하게 테스트 해본 결과 이 문제는 해결된 것 같은데... 다음 차례가 대기 중이네요;;;

Posted by 자수씨
, |

아... REST in Spring 3

Spring / 2011. 1. 7. 17:11

꼬치몽을 통해 알게된 Spring 3 의 REST 지원 방식... 감동입니다.



주소값에 따라 알아서 맵핑이 되는 구조입니다.

털썩... 아름답네요...


참고자료: http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

Posted by 자수씨
, |

@Autowired...

Spring / 2010. 12. 20. 14:30

@Autowired 라는 것을 스프링을 시작한지 3년만에 처음 써 보았습니다.
(2.5 에서 추가된 기능인가???)


참 편합니다. 일단 setter 를 만들지 않아도 되며, bean 설정에서 parameter 들이 획기적으로 줄어듭니다.

이렇게 편한 걸 왜 안썼는지 모르겠네요... 기존에 잘 되던걸 복사해서 쓰다보니 새로운 것에 대해 잘 받아들일 수 없다는...

Posted by 자수씨
, |

스프링 프레임워크의 *.properties 파일을 실행 시 마다 변경하려고 하는데... 기본적으로 제공하는 것은 못 찾겠고, 검색을 어떻게 해야할지도 모르겠어서... 그냥 확장하였습니다.

applicationContext.xml



config.properties 파일이 D:\config.properties 라면 applicationContext 에서  -Dspring.properties 옵션에 경로를 설정합니다.
java -Dspring.properties=D:/config.properties ...



SystemPropertyPlaceholderConfigurer.java



일단은 돌아가니 사용 ㅋㅋㅋ

Posted by 자수씨
, |

기존에 Spring WebServices 로 웹 서비스 클라이언트를 이용하려면 아래와 bean 을 이용하였습니다.




하지만 HTTP Authentication 을 거쳐야 한다면 -ㅁ-;;;  무언가의 작업이 필요합니다.

그냥 원래의 wsdl 주소를 읽으려고 하면 다음과 같은 오류가 발생합니다.
Caused by: javax.xml.ws.WebServiceException: Failed to access the WSDL at: http://localhost:8080/WorkflowWebServices?wsdl. It failed with:
 Server returned HTTP response code: 401 for URL: http://localhost:8080/WorkflowWebServices?wsdl.




1. 브라우저를 통하여 wsdl 에 접근하여 해당 파일을 별도로 저장하여 클래스 패스에 위치시킵니다.
2. wsdlDocumentUrl 프로퍼티를 classpath 에서 읽을 수 있도록 설정합니다.
(해당 wsdl 자체에 접근하려면 인증이 필요한데 wsdl 을 읽을 단계에서는 인증처리가 안되기 때문입니다.)
3. username, password 프로퍼티를 설정합니다.
4. 웹 메소드 호출을 수행합니다.

username 과 password 가 옳지 않으면 다음과 같은 오류가 발생합니다.
Caused by: com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 401: Unauthorized

모든 조건을 만족하게 되면 정상적으로 웹 서비스의 웹 메소드를 호출할 수가 있습니다.


Posted by 자수씨
, |

집에 도착하여 굶주린 하이에나 처럼 웹 서핑을 하다가 Spring 3.0 과 JAXB 를 연동할 수 있는 것을 보았습니다.
그 이름은 바로 Spring OXM...

자세한 내용을 확인할 시간이 없어서 그냥 바로 예제 프로젝트를 생성해보았습니다.

간단한 dtd 를 만들어서 >>> [JAXB] DTD -> JAXB Model <<< 글을 참조하여 model 객체를 생성하고
Toby님의 글을 참조하여 pom.xml 을 구성하였습니다.


프로젝트 구성은 아래처럼 되었네요





그냥 살짝 테스트 해본 것이라 될지 안될지 약간 의구심이 있었지만... 예상외로 빠른 시간내에 결과를 보아서 뿌듯합니다.
다른 기능이나 문제점이 없는지도 살펴보아야 할 것 같네요...


[참고자료]
1. springsource doc - 14. Marshalling XML using O/X Mappers (Link)
2. Toby’s Epril - Spring 3.0 (4) – Maven에서 Spring 3.0 최신버전 사용하기 (Link)



Posted by 자수씨
, |

어쩌다 보니 Spring  3.0 의 O/X Mapper 를 보게 되어서 예제 코드를 작성해보았습니다.

기존에 JAXB의 Context 를 생성하지 않고 spring 을 이용하여 활용하는 점이 마음에 들었습니다.

output xml 의 formatting 을 설정하기 위해 아래와 같이 설정하고 테스트를 돌렸는데...



결과는 익셉션 발생!!!
Caused by: javax.xml.bind.PropertyException: jaxb.formatted.output must be boolean


여러가지 꼼수를 생각하다가 아래와 같이 해 보았습니다.



원하던 결과가 나왔습니다.

스프링 레퍼런스를 아무리 찾아봐도 안 나와서 (제가 못 찾았을 확률이 높았겠지만...)
저런식의 만행을 저지른 것 같네요 -_-;;;




정녕 저 방법 말고는 뭐란 말인가...






Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백