<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss version="2.0">
	<channel>
		<title>한국스프링사용자모임 KSUG</title>
		<link>http://www.ksug.org/</link>
		<description>한국스프링사용자모임(KSUG)은 스프링 프레임워크에 대한 정보를 공유하는 모임입니다.
질문과 답변은 [그룹스 포럼]을 이용하시고, 커뮤니티 참여는 [페이스북 포럼]을 이용하실 수 있습니다.</description>
		<language>ko</language>
		<pubDate>Mon, 07 May 2012 08:48:17 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<managingEditor>영회</managingEditor>
		<image>
			<title>한국스프링사용자모임 KSUG</title>
			<url>http://cfile5.uf.tistory.com/image/1319294F4D73A5091EB33E</url>
			<link>http://www.ksug.org</link>
			<description>한국스프링사용자모임(KSUG)은 스프링 프레임워크에 대한 정보를 공유하는 모임입니다.
질문과 답변은 [그룹스 포럼]을 이용하시고, 커뮤니티 참여는 [페이스북 포럼]을 이용하실 수 있습니다.</description>
		</image>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ksug" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="ksug" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
			<title>[공지] KSUG 세미나 2012 - Part1</title>
			<link>http://www.ksug.org/166</link>
			<description>&lt;p&gt;&lt;/p&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;div&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;span class="imageblock" style="display:inline-block;width:200px;"&gt;&lt;img src="http://cfile26.uf.tistory.com/image/137B4D424FA6EC2E074181" filemime="image/gif" filename="KSUG.gif" height="170" width="200"/&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;봄이 시작되는 가정의 달 5월을 맞이하여 KSUG도 새로운 마음으로 시작합니다.&lt;/div&gt;&lt;div&gt;그 첫번째 세미나에 여러분을 초대합니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="im" style="color: rgb(80, 0, 80); "&gt;날짜 :&amp;nbsp;&lt;b&gt;&lt;font size="4"&gt;&lt;font color="#ff0000"&gt;2012년 05월 19일(토) 오전 11시 ~ 오후 2시&lt;/font&gt;&amp;nbsp;(3시간)&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;장소 :&amp;nbsp;&lt;b&gt;&lt;font size="4" color="#ff0000"&gt;토즈강남점&lt;/font&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;참가비 :&amp;nbsp;&lt;b&gt;&lt;font size="4"&gt;만원&lt;/font&gt;&lt;/b&gt;&amp;nbsp;(실제 참석율을 높이기 위한 목적이며, 참석시 다시 돌려드립니다.)&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;div&gt;- 입금계좌 : 우리은행 1002-529-504921 예금주 이재일&lt;/div&gt;&lt;div&gt;- 참가신청 후 2일이내에 입금 부탁드립니다. 2일이 경과하면 대기자분께 참여기회가 넘어가게 됩니다.&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;각 세션은 25분씩 진행되며, 2세션마다 10분간 휴식시간이 있습니다.&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;(1) 스프링 시작하기 (고종봉) : 25분&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;- 스프링을 처음 시작하시는 분들을 위한 스프링 소개 시간&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;(2) 현장에서의 스프링 환경구축 사례 (최영목) : 25분&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;- 스프링 프레임워크가 현장에서 실제로 어떤 구성으로 구축되었는지 실제 프로젝트 사례를 소개&amp;nbsp;&lt;/div&gt;&lt;div class="im" style="color: rgb(80, 0, 80); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;font color="#222222"&gt;(3)&amp;nbsp;&lt;/font&gt;스프링 MVC에서 web request 여행 (양완수) : 25분&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;- 요청에서 응답까지 스프링 mvc에서의 동작을 이해&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;div&gt;(4)스프링은 지금 (박용권) : 25분&lt;/div&gt;&lt;div class="im" style="color: rgb(80, 0, 80); "&gt;-&amp;nbsp;&lt;span style="color: rgb(34, 34, 34); "&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: rgb(34, 34, 34); "&gt;스프링 3.1의 기능 소개와 MVC 변경사항에 대한 내용을 전달&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;(5) 토론 (정상혁) : 1시간&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;- 스프링에 대한 다양한 주제에 대해서 토론&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 14px; line-height: normal; background-color: rgba(255, 255, 255, 0.917969); "&gt;신청은 아래 링크에서 하실 수 있습니다.&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;font color="#222222" face="arial, sans-serif"&gt;&lt;span style="font-size: 14px; line-height: normal;"&gt;&lt;a href="http://onoffmix.com/event/6835" target="_blank" class="tx-link"&gt;http://onoffmix.com/event/6835&lt;/a&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;font color="#222222" face="arial, sans-serif"&gt;&lt;span style="font-size: 14px; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;div style="background-color: rgba(255, 255, 255, 0.917969); "&gt;&lt;font color="#222222" face="arial, sans-serif"&gt;&lt;span style="font-size: 14px; line-height: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-166-0" class="entry-ccl-by" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-166-1" class="entry-ccl-nc" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-166-2" class="entry-ccl-sa" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.png" alt="동일 조건 변경 허락"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-sa/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/166&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>공지/발표 자료</category>
			<author>스쿨쥐</author>
			<guid>http://www.ksug.org/166</guid>
			<comments>http://www.ksug.org/166#entry166comment</comments>
			<pubDate>Mon, 07 May 2012 06:28:22 +0900</pubDate>
		</item>
		<item>
			<title>[공지] 4월 벙개 모임 후기입니다.</title>
			<link>http://www.ksug.org/165</link>
			<description>&lt;p&gt;지난 4월 12일에 KSUG 번개 모임이 있었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;번개의 가장 큰 목적은 그동안 큰 일을 도맡아서 수고를 해주신 박성철님께서 고종봉님께 큰 일꾼을 책임을 정식으로 이양하기 위한 이취임식을 진행하는 것이었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;span class="imageblock" style="display:inline-block;width:400px;"&gt;&lt;img src="http://cfile29.uf.tistory.com/image/1661B3354F8C87F3264EC6" filemime="image/jpeg" filename="SAM_3402.jpg" height="266" style="" width="400"/&gt;&lt;span class="cap1" style="display:block;width:400px;"&gt;ㄹㄹㄹ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;[큰 일을 덜게되신 박성철님의 밝은 미소 +_+]&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;참여해주신 분들이 모두 축하해주셨고, 고종봉님께서는 앞으로 KSUG를 이끌어나갈 방향을 제시하시면서 많은 분들의 기대감을 높여주셨습니다. 또한 박성철님께서도 고문으로 계속 활동하시면서 고종봉님께서 KSUG를 이끌어나가는 데 도와주시기로 하셨습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이번 모임에서 고종봉님의 의견을 간략하게 정리하면 다음과 같습니다.&lt;/p&gt;&lt;p&gt;1. 커뮤니티를 활성화하기 위해서 다양한 수단을 많이 도입하겠다. (다양한 채널, 자유로운 모임 구성 등)&lt;/p&gt;&lt;p&gt;2. 전문성을 살리기 위해서 레퍼런스 번역을 추진하겠다.&lt;/p&gt;&lt;p&gt;3. 기존 운영진에게 많은 권한을 위임하여 운영진에게도 자유롭게 추진할 수 있도록 하겠다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;그리고 5월에 있을 KSUG 세미나에 대한 토론도 오갔습니다. 세미나 일정 및 내용, 발표자 등에 대해서 다양한 의견이 오갔으며, 이 부분에 있어서 박성철님께서 많은 의견을 주셨습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;마지막으로 객체지향, 스프링에 대한 기술적인 의견을 자유롭게 토론할 수 있는 시간이 있었습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;span class="imageblock" style="display:inline-block;width:400px;"&gt;&lt;img src="http://cfile25.uf.tistory.com/image/14786D414F8C8B3C2637C3" filemime="image/jpeg" filename="SAM_3401.jpg" height="266" style="" width="400"/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;오랜만에 다들 기술적인 토론덕에 대화는 더 활발해졌으며, 어느덧 정해진 2시간이 모두 지나가게 되었습니다. 모임이 끝난 후 간단한 커피타임을 즐기면서 개인적인 이야기도 많이 하였고, 다들 즐거운 마음으로 모임을 즐기신 것 같습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;앞으로 KSUG의 많은 발전을 기대해봅니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;참고로 장소 협찬은 지난번과 동일하게 구글코리아에서 지원해주셨습니다. 감사합니다. (&lt;span style="color: rgb(0, 0, 0); font-family: arial, sans, sans-serif; font-size: 13px; line-height: normal; white-space: pre-wrap; "&gt;장소 후원: 구글 코리아 http://goo.gl/P57iM)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;ps. 강남점 토즈 4층을 이용했는데 개인적으로는 알바생분이&amp;nbsp;괜찮았습니다. 흠흠 -_-;;; 참고하시길...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="entry-ccl" style="clear: both; text-align: right; margin-bottom: 10px"&gt;
	&lt;img id="ccl-icon-165-0" class="entry-ccl-by" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black01.png" alt="저작자 표시"/&gt;
	&lt;img id="ccl-icon-165-1" class="entry-ccl-nc" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black02.png" alt="비영리"/&gt;
	&lt;img id="ccl-icon-165-2" class="entry-ccl-sa" src="http://i1.daumcdn.net/cfs.tistory/v/0/static/admin/editor/ccl_black04.png" alt="동일 조건 변경 허락"/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"&gt;
		&lt;Work rdf:about=""&gt;
			&lt;license rdf:resource="http://creativecommons.org/licenses/by-nc-sa/2.0/kr/" /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about="http://creativecommons.org/licenses/by-nc-sa/"&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Reproduction"/&gt;
			&lt;permits rdf:resource="http://web.resource.org/cc/Distribution"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Notice"/&gt;
			&lt;requires rdf:resource="http://web.resource.org/cc/Attribution"/&gt;
			&lt;prohibits rdf:resource="http://web.resource.org/cc/CommercialUse"/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/165&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>공지/발표 자료</category>
			<author>스쿨쥐</author>
			<guid>http://www.ksug.org/165</guid>
			<comments>http://www.ksug.org/165#entry165comment</comments>
			<pubDate>Tue, 17 Apr 2012 06:20:02 +0900</pubDate>
		</item>
		<item>
			<title>[공지] 4월 벙개 모임 안내입니다.</title>
			<link>http://www.ksug.org/164</link>
			<description>&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;span class="imageblock" style="display:inline-block;width:200px;"&gt;&lt;img src="http://cfile26.uf.tistory.com/image/157CE6504F838E1E2B188A" filemime="image/gif" filename="KSUG.gif" height="170" width="200"/&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: center; clear: none; float: none; "&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;‎[공지] KSUG 벙개모임 합니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;부담 없이 모여서 얼굴보는 자리가 되었으면 합니다. ^^; (간단한 신규 운영진 소개도 있을 예정입니다.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;이번주 목(4/12) 저녁 8시 강남입니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;참석 가능하신 분들, (그룹스 메일링이나 페이스북을 이용해) 손 들어주세요~!! (댓글로 남겨주세요)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;감사합니다.ㅎ&lt;/span&gt;
&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0); font-family: 'lucida grande', tahoma, verdana, arial, sans-serif; font-size: 11px; line-height: 14px; text-align: left; "&gt;&lt;span style="font-family: Helvetica; font-size: 14px; line-height: normal; -webkit-tap-highlight-color: rgba(26, 26, 26, 0.296875); -webkit-composition-fill-color: rgba(175, 192, 227, 0.230469); -webkit-composition-frame-color: rgba(77, 128, 180, 0.230469); "&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;장소/시간 공지드립니다.&amp;nbsp;&lt;/div&gt;&lt;div&gt;토즈 강남점(2호점 아니죠.ㅎ) 8시입니다. 모임이름은 KSUG입니다. 간단한 음료와 간식은 있겠지만 식사하고 오시는걸 추천드립니다. (일찍 오신 분들끼리 식사하셔도 좋구요.ㅎ )&lt;/div&gt;&lt;div&gt;참가의사 아직 안밝히셨더라도 시간 되시면 편하게 오시기 바랍니다.&lt;/div&gt;&lt;div&gt;감사합니다. 내일 뵙겠습니다.^^&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="color: rgb(0, 0, 0); line-height: normal; white-space: pre-wrap; font-family: Dotum, 돋움; font-size: 9pt; "&gt;장소 후원: 구글 코리아 http://goo.gl/P57iM&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/164&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>공지/발표 자료</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/164</guid>
			<comments>http://www.ksug.org/164#entry164comment</comments>
			<pubDate>Tue, 10 Apr 2012 10:17:07 +0900</pubDate>
		</item>
		<item>
			<title>Apache CXF 관련한 질문입니다.</title>
			<link>http://www.ksug.org/163</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/dcdb9f31bb489590"&gt;http://groups.google.com/group/ksug/browse_thread/thread/dcdb9f31bb489590&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;안녕하세요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;이클립스 헬리오스&amp;nbsp;&lt;/p&gt;&lt;p&gt;아파치 CXF 2.4&amp;nbsp;&lt;/p&gt;&lt;p&gt;톰캣 6.x&amp;nbsp;&lt;/p&gt;&lt;p&gt;기존에 만들어진 웹서비스 소스가 있는데, 여기에다 메소드를 좀 추가하고 싶은데 기존 프로젝트로는 웹서비스 생성할 때 자꾸 에러&amp;nbsp;&lt;/p&gt;&lt;p&gt;가 떠서 아주 새로 프로젝트를 만들고 기존 소스 코드를 가져왔습니다. 웹서비스 생성은 잘 되는데요. 기존 프로젝트에서 생성되어&amp;nbsp;&lt;/p&gt;&lt;p&gt;진 wsdl과 제가 생성한 wsdl의 네임스페이스가 다르게 지정이 되네요. 프로젝트명과 소스는 기존 서비스랑 완전히 동일한 구조&amp;nbsp;&lt;/p&gt;&lt;p&gt;에 모든 클래스 이름도 같고 모델 클래스와 서비스 클래스에 메소드만 2개 더 추가를 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Project name: clientServices&amp;nbsp;&lt;/p&gt;&lt;p&gt;Interface: CcahClientServicesSEI&amp;nbsp;&lt;/p&gt;&lt;p&gt;Service Class: CcahClientServicesImpl&amp;nbsp;&lt;/p&gt;&lt;p&gt;CcahClientServicesImpl.java를 가지고 웹서비스를 생성했습니다. &amp;nbsp;생성된 네임스페이스는 이렇습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;기존 프로젝트: &amp;lt;wsdl:definitions name="DaoImplService"&amp;nbsp;&lt;/p&gt;&lt;p&gt;신규 프로젝트: &amp;lt;wsdl:definitions name="CcahClientServicesImplService"&amp;nbsp;&lt;/p&gt;&lt;p&gt;이렇게 다르구요. wsdl를 비교해 봐도 중간 중간 다른 부분이 많은데, &amp;nbsp;동일한 프로젝트 환경에서 웹서비스를 생성했다면&amp;nbsp;&lt;/p&gt;&lt;p&gt;wsdl도 동일한 구조이어야 되지 않나요? 왜 그런지 잘 모르겠습니다. 혹시 어떤 부분을 체크해야 하는지 알려주시면 감사하겠습니&amp;nbsp;&lt;/p&gt;&lt;p&gt;다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;기존에 생성된 wsdl과 신규wsdl을 첨부합니다. 포트이름은 자바소스에서 어노테이션 값을 변경하여 일치시켰습니다. 하지만 나머&amp;nbsp;&lt;/p&gt;&lt;p&gt;지는 많이 달라 보입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;OLD:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;wsdl:definitions name="DaoImplService" targetNamespace="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;dao.clientServices.ccah.lodestone.com/" xmlns:wsdl="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;schemas.xmlsoap.org/wsdl/" xmlns:tns="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;dao.clientServices.ccah.lodestone.com/" xmlns:xsd="http://www.w3.org/&amp;nbsp;&lt;/p&gt;&lt;p&gt;2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:types&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;xs:schema elementFormDefault="unqualified"&amp;nbsp;&lt;/p&gt;&lt;p&gt;targetNamespace="http://dao.clientServices.ccah.lodestone.com/"&amp;nbsp;&lt;/p&gt;&lt;p&gt;version="1.0" xmlns:tns="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;dao.clientServices.ccah.lodestone.com/" xmlns:xs="http://www.w3.org/&amp;nbsp;&lt;/p&gt;&lt;p&gt;2001/XMLSchema"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addEmergencyCoords" type="tns:addEmergencyCoords"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addEmergencyCoordsResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:addEmergencyCoordsResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addMediaNote" type="tns:addMediaNote"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addMediaNoteResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:addMediaNoteResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addMobileMessage" type="tns:addMobileMessage"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="addMobileMessageResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:addMobileMessageResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deviceContactAdded" type="tns:deviceContactAdded"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deviceContactAddedResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:deviceContactAddedResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deviceEventAdded" type="tns:deviceEventAdded"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deviceEventAddedResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:deviceEventAddedResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="getAdHocJourneyPlan" type="tns:getAdHocJourneyPlan"/&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="getAdHocJourneyPlanResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:getAdHocJourneyPlanResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="getVersion" type="tns:getVersion"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="getVersionResponse" type="tns:getVersionResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="gpsPing" type="tns:gpsPing"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="gpsPingResponse" type="tns:gpsPingResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="verifyDeviceConfiguration"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:verifyDeviceConfiguration"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="verifyDeviceConfigurationResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:verifyDeviceConfigurationResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="googleId" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="action" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="title" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deleteAssociatedJourneys" type="xs:boolean"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="deviceContactAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:deviceActionAddedEvent"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="deviceActionAddedEvent"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:extension&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType abstract="true" name="resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="errorCode" type="xs:int"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="errorMsg" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="passwordHash" type="xs:base64Binary"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="fromGoogleContactId" type="xs:string"/&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="toGoogleContactId" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="fromLat" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="fromLong" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="toLat" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="toLong" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="optimize" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="arriveBy" type="xs:boolean"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="wheelchair" type="xs:boolean"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="maxWalkDistance" type="xs:int"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mode" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="typeOfDay" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="timeOfDay" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="toDisplayName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="fromDisplayName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="getAdHocJourneyPlanResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:adHocJourneyResponse"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="adHocJourneyResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="fromLat" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="fromLong" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="toLat" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="toLong" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="urlQuery" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="jsonResonse" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="otpResponseInMillis" type="xs:long"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:extension&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="passwordHash" type="xs:base64Binary"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mobilePhone" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="imsi" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="imei" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="latitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="longitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="gpsPingResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return" type="tns:gpsPingResult"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="gpsPingResult"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="latitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="longitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element maxOccurs="unbounded" minOccurs="0"&amp;nbsp;&lt;/p&gt;&lt;p&gt;name="journeySyncDetails" nillable="true" type="tns:journeySyncDetail"/&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element maxOccurs="unbounded" minOccurs="0" name="systemSettings"&amp;nbsp;&lt;/p&gt;&lt;p&gt;nillable="true" type="tns:systemSetting"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:extension&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="journeySyncDetail"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="JourneyId" type="xs:long"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="JourneyName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="JourneyDescription" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="JourneyData" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="JourneyNotes" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="JourneyActive" type="xs:boolean"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="StartLoiName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="StartLoiDescription" type="xs:string"/&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="StartLoiType" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="StartLoiGoogleContactId"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="StartLoiGoogleAddressId"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="EndLoiName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="EndLoiDescription" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="EndLoiType" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="EndLoiGoogleContactId"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="EndLoiGoogleAddressId"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="systemSetting"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="name" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="value" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="type" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="binaryValue" type="xs:base64Binary"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mediaTitle" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mediaTag" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mediaType" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mediaData" type="xs:base64Binary"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="googleCalendarId" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="deviceNoteId" type="xs:int"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addMediaNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return" type="tns:addMediaNoteResult"/&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addMediaNoteResult"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:extension&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="userName" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="passwordHash" type="xs:base64Binary"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="mobilePhone" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="imsi" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="imei" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="latitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element name="longitude" type="xs:double"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addEmergencyCoordsResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:addEmergencyCoordsResult"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="addEmergencyCoordsResult"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:extension&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="getVersionResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="return" type="tns:getVersionResult"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/xs:complexType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexType name="getVersionResult"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:complexContent&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:extension base="tns:resultBase"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:sequence&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="Title" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="Vendor" type="xs:string"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;xs:element minOccurs="0" name="Version" ...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;글이 기나까 많이 잘리네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;NEW:&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;wsdl:definitions name="DaoImplService" targetNamespace="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;dao.clientServices.ccah.lodestone.com/" xmlns:wsdl="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;schemas.xmlsoap.org/wsdl/" xmlns:tns="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;dao.clientServices.ccah.lodestone.com/" xmlns:xsd="http://www.w3.org/&amp;nbsp;&lt;/p&gt;&lt;p&gt;2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:types&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;schema xmlns="http://www.w3.org/2001/XMLSchema"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;import namespace="http://dao.clientServices.ccah.lodestone.com/"&amp;nbsp;&lt;/p&gt;&lt;p&gt;schemaLocation="ccahclientservicesimpl_schema1.xsd"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;/schema&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:types&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="getAdHocJourneyPlanResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:getAdHocJourneyPlanResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="deviceEventAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:deviceEventAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="getVersionResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:getVersionResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="loginCcahUserByUserNameResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:loginCcahUserByUserNameResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="verifyDeviceConfiguration"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:verifyDeviceConfiguration"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addMobileMessageResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:addMobileMessageResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="deviceEventAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:deviceEventAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addEmergencyCoordsResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:addEmergencyCoordsResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addMobileMessage"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addMobileMessage"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addMediaNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addMediaNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="gpsPingResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:gpsPingResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="verifyDeviceConfigurationResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:verifyDeviceConfigurationResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="deviceContactAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters"&amp;nbsp;&lt;/p&gt;&lt;p&gt;element="tns:deviceContactAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:message name="getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:part name="parameters" element="tns:getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:part&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:message&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:portType name="CcahClientServicesSEI"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="deviceContactAdded"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="deviceContactAddedResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:deviceContactAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="getAdHocJourneyPlan"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="getAdHocJourneyPlanResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:getAdHocJourneyPlanResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="gpsPing" message="tns:gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="gpsPingResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:gpsPingResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addMediaNote" message="tns:addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addMediaNoteResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addMediaNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addEmergencyCoords"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addEmergencyCoordsResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addEmergencyCoordsResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="getVersion" message="tns:getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="getVersionResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:getVersionResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addNote" message="tns:addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addNoteResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="verifyDeviceConfiguration"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="verifyDeviceConfiguration"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:verifyDeviceConfiguration"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="verifyDeviceConfigurationResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:verifyDeviceConfigurationResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="loginCcahUserByUserName"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="loginCcahUserByUserNameResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:loginCcahUserByUserNameResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addMobileMessage"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addMobileMessage"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addMobileMessage"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addMobileMessageResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:addMobileMessageResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="deviceEventAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="deviceEventAdded"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:deviceEventAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="deviceEventAddedResponse"&amp;nbsp;&lt;/p&gt;&lt;p&gt;message="tns:deviceEventAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;/wsdl:portType&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;lt;wsdl:binding name="DaoImplServiceSoapBinding"&amp;nbsp;&lt;/p&gt;&lt;p&gt;type="tns:CcahClientServicesSEI"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;soap:binding style="document" transport="http://&amp;nbsp;&lt;/p&gt;&lt;p&gt;schemas.xmlsoap.org/soap/http"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="deviceContactAdded"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="deviceContactAddedResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="getAdHocJourneyPlan"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="getAdHocJourneyPlanResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="gpsPing"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="gpsPingResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addMediaNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addMediaNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addEmergencyCoords"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addEmergencyCoordsResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="getVersion"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="getVersionResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="addNote"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="addNoteResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:input name="loginCcahUserByUserName"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:input&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;wsdl:output name="loginCcahUserByUserNameResponse"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:body use="literal"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:output&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;/wsdl:operation&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;lt;wsdl:operation name="verifyDeviceConfiguration"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;soap:operation soapAction="" style="document"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;...&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;죄송합니다. WSDL이 길어서 엉뚱하게 잘려서 OLD와 NEW가 바뀌었네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;WSDL을 자동생성하면 자동생성 도구와 버전에 따라 다른 결과가 나올 수 있습&amp;nbsp;&lt;/p&gt;&lt;p&gt;니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;이를 보장하려면 정확히 동일한 상황에서 생성하셔야 하는데 어떤 요소가 해&amp;nbsp;&lt;/p&gt;&lt;p&gt;당 도구에 영향을 주는지 확실치 않으니 결국 WSDL 자동 생성은 동일한 결과&amp;nbsp;&lt;/p&gt;&lt;p&gt;를 보장받을 수 없다고 보시는 편이 맞습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;java2wsdl을 쓰셨는지 eclipse의 기능을 쓰셨는지 모르겠지만 일단 자동생성&amp;nbsp;&lt;/p&gt;&lt;p&gt;을 해서 사용중이라면 다시 생성하지 마시고 수정 사항을 수작업으로 반영하&amp;nbsp;&lt;/p&gt;&lt;p&gt;시라고 조언해드리고 싶습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;참고로, 스프링 웹 서비스(http://www.springsource.org/spring-web-&amp;nbsp;&lt;/p&gt;&lt;p&gt;services)라는 프로젝트가 있습니다. 이 프로젝트는 계약 선행 개발(또는 계&amp;nbsp;&lt;/p&gt;&lt;p&gt;약에 의한 개발)이라는 개념을 따르는데, 이 개념은 간단히 말해 WSDL을 계약&amp;nbsp;&lt;/p&gt;&lt;p&gt;문서로 보고 WSDL을 수작업으로 만든 후에 이 계약 사항을 기준으로 (자바)&amp;nbsp;&lt;/p&gt;&lt;p&gt;코드를 자동 또는 수작업으로 만들어 애플리케이션을 개발하도록 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;WSDL은 웹 서비스 제공자와 소비자 사이의 계약문서이므로 이를 동일한 결과&amp;nbsp;&lt;/p&gt;&lt;p&gt;가 보장되지 않는 자동 생성으로 만들면 계약으로서 의미가 없다고 보는 거죠.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/163&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/163</guid>
			<comments>http://www.ksug.org/163#entry163comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:10:45 +0900</pubDate>
		</item>
		<item>
			<title>DAO(Repository)에서 발생한 예외처리 질문</title>
			<link>http://www.ksug.org/162</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/51b06efb99fbf45e"&gt;http://groups.google.com/group/ksug/browse_thread/thread/51b06efb99fbf45e&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;DAO(Repository)에서 발생한 예외를 Service에서 처리해야 할 지 아니면 Controller에서 처리해야 할 지&amp;nbsp;&lt;/p&gt;&lt;p&gt;의문입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;아래 코드는 저 나름대로 예외 처리를 한 코드 입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;MemberDAO에서 중복 예외를 발생 시켜 Controller에서 처리를 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;DuplicateMemberException는 DuplicateKeyException을 &amp;nbsp;의미 있는 uncheck&amp;nbsp;&lt;/p&gt;&lt;p&gt;exception 으로 전환 하기 위해 만든 Exception입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;먼저 Member가 중복인지 아닌지 select로 검사 할 수 있지만 저는 중복을 예외를 처리하려고 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;즉, 중복 Member는 존재하지 않는다는 비즈니스 로직을 예외로 처리하는 것입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;궁금한 점은 controller에서 비지니스 로직적인 것을 controller에서 예외처리를 해야 하는지&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;MemberService에서 또 try catch문으로 예외를 잡아서 처리하여 의미 있는 예외를 controller로&amp;nbsp;&lt;/p&gt;&lt;p&gt;throws 하거나&amp;nbsp;&lt;/p&gt;&lt;p&gt;아니면 return value를 true/fase 로 변경해야 하는 건지 궁금합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;제 생각은 controller에서 예외처리를 하면 MemberService 쪽이 깔끔한(나이스)한 코드가 되어 좋아 보입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;다른 예외 전략(처리)가 있다면 답변 부탁 드립니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;============== &amp;nbsp; Controller 에서 예외처리 &amp;nbsp; ====================&amp;nbsp;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberDAO &amp;nbsp; =============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@Override&amp;nbsp;&lt;/p&gt;&lt;p&gt;public void insertMember(Member member) throws&amp;nbsp;&lt;/p&gt;&lt;p&gt;DuplicateMemberException {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;try {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; sqlMapClientTemplate.insert("member.insertMember", member);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;} catch (DuplicateKeyException e) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; throw new DuplicateMemberException(e);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberService &amp;nbsp; =============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@Override&amp;nbsp;&lt;/p&gt;&lt;p&gt;public void registMember(Member member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;memberDAO.insertMember(member);&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberController &amp;nbsp; =============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@RequestMapping("/member/registmember.do")&amp;nbsp;&lt;/p&gt;&lt;p&gt;public String registMember(Member member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;try {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; memberService.registMember(member);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return "main"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;} catch (DuplicateMemberException e) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return "/member/viewregistmemberform";&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;============== &amp;nbsp; service에서 예외처리 &amp;nbsp; ====================&amp;nbsp;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberService &amp;nbsp;=============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@Override&amp;nbsp;&lt;/p&gt;&lt;p&gt;public boolean registMember(Member member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; try {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; memberDAO.insertMember(member);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return true;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;} catch (DuplicateMemberException e) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return false&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberController &amp;nbsp; =============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@RequestMapping("/member/registmember.do")&amp;nbsp;&lt;/p&gt;&lt;p&gt;public String registMember(Member member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; if(memberService.registMember(member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; return "main";&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; } else {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; return "viewregistmemberform";&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; }&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;&lt;p&gt;개인적으로는 @Controller에 try … catch 문이 나오는 것이 옳지 않다고 생각합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Validator를 이용하여 검증을 서비스 계층으로 이동시키더라도 컨트롤러에서 BindingResult를 이용해 에러 결과를 뽑아보는&amp;nbsp;&lt;/p&gt;&lt;p&gt;방식이 에러처리에도 더욱 적절할 듯 싶네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;form:errors&amp;gt;같은 스프링 EL문법도 사용가능해지구요.&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;저두 try catch가 controller에 있는게 보기 좋지 않습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Validation은 값(value)검증만 하는 것이라 생각했는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;Exception 처리도 하는거 군요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;view(jsp)와 controller 사이에 값 검증만 해봐서 확 와닿지 않아서 그런데&amp;nbsp;&lt;/p&gt;&lt;p&gt;Validator로 Exception 처리하는 참조 사이트든가 처리하는 흐름만 좀 알려주 주시면 정말 감사 하겠습니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;이 경우에는 컨터롤러에서 예외를 처리하는 쪽이 적절하다고 봅니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;MemberDAO에서는 DB Access 관련 예외인 DuplicateKeyException를 도메인 예&amp;nbsp;&lt;/p&gt;&lt;p&gt;외인 DuplicateMemberException로 잘 바꿔서 서비스에서 넘겼는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;DuplicateKeyException 자체가 이미 구현 기술 의존성을 숨긴 추상화한 된 예&amp;nbsp;&lt;/p&gt;&lt;p&gt;외이나 도메인의 스프링 의존성도 줄인다는 관점에서는 의미 있는 작업 같습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;MemberService에서 메서드 시그니처에 throws DuplicateMemberException를 추&amp;nbsp;&lt;/p&gt;&lt;p&gt;가해서 명문화했으면 좋았겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;MemberController의 try-catch는 프레임워크 차원에서도 처리할 수 있지만 공&amp;nbsp;&lt;/p&gt;&lt;p&gt;통사항이 아니라 특정 업무의 워크플로에 해당하므로 컨트롤러에서 흐름을 제&amp;nbsp;&lt;/p&gt;&lt;p&gt;어하는 편이 좋다고 생각합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;저는 왜 두 경우를 두고 고민하시는지 이해하지 못하겠네요. 서비스에서 처리&amp;nbsp;&lt;/p&gt;&lt;p&gt;하면 어떤 이득이 있는 거죠? 코드량이 늘었을 뿐 아니라 서비스의 반환값이&amp;nbsp;&lt;/p&gt;&lt;p&gt;어떤 의미인지 알려면 javadoc 같은 문서를 봐야만 분명해지는 번거로움까지&amp;nbsp;&lt;/p&gt;&lt;p&gt;생겼는데요.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;음.. 저는 약간 생각이 다릅니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;개발자의 성향이나 전체 프레임워크 플로워에 따라서 다르겠지만&amp;nbsp;&lt;/p&gt;&lt;p&gt;되도록이면 Controller에서는 Exception 처리를 하지 않는 편이 좋다고 봅니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;제 경우에는&amp;nbsp;&lt;/p&gt;&lt;p&gt;View - Controller - Validation Logic- Business Logic - DAO&amp;nbsp;&lt;/p&gt;&lt;p&gt;이런식으로 많이 프로그래밍을 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;약간의 코드가 증가되기는 하지만&amp;nbsp;&lt;/p&gt;&lt;p&gt;전체적인 코드의 복잡도나 재활용면에서도 더 효율적으로 프로그래밍을 작성할 수 있는것 같습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;(물론 Class의 양이 많이 늘어나기는 하지만^^;;)&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;조금 더 자세히 설명을 드리자면..&amp;nbsp;&lt;/p&gt;&lt;p&gt;Validation Logic 부분은 Controller에서 로직을 처리하는 과정에서 필요한 데이터를 처리하는 부분입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;데이터를 원하는 형태로 가공한다던지.. 실제로 Repository단까지 내려가지 않고 데이터를 거르는 부분입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;그리고 Exception 처리는 Controller에서 되도록이면 하지 않는 편이라는 말은..&amp;nbsp;&lt;/p&gt;&lt;p&gt;오류를 처리하는 logic을 따로 작성하여 사용한다는 말입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Controller에서 처리해도 상관없지만 *개인적으로는 너무 복잡하거나 지저분한 코드를 싫어해서*^^;;&amp;nbsp;&lt;/p&gt;&lt;p&gt;오류가 발생하면 오류를 따로 처리하고 처리할 수 없는 경우는 View단으로 정보를 던저거나 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;(처리한다는건 해당 오류를 페이지에 보이지 않고 정상적으로 처리하는 과정을 말합니다)&amp;nbsp;&lt;/p&gt;&lt;p&gt;저처럼 하는 방법도있다는 걸 참고하시라고 말씀드리는겁니다.^^;;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;저는 Controller에서 try catch 문이 들어 가서 좋지 않다기 보다는&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Business Logic이 들어 가는게 아닌가해서 그렇게 생각 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Business Logic이 변경되면 Controller가 변경되는거 아닌가 해서요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Controller는 DispatcherServlet가 Service에 맵핑하는 중간 역할이라 생각 하고 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;2번째 방법은 true/false 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;만약 Business 로직이 Member 중복을 허용으로 바뀌면 Controller는 변경이 없을수 있겠죠(?)&amp;nbsp;&lt;/p&gt;&lt;p&gt;Exceptoin 처리 전략을 프레임 워크로 해결 할 수 있다면 if else 또한 사라질 수 있지 않을 까 했습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;이 방법은 저의 개인적인 생각입니다. 저두 지금 현재 구글링 하며 자료들을 찾고 있는 중이에요..&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;저같은 경우는 익셉션 처리를 SimpleMappingExceptionResolver 를 상속받아&amp;nbsp;&lt;/p&gt;&lt;p&gt;CustomSimpleMappingExceptionResolver 를 구현하여 예외처리를 한곳으로 모았습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;예외는 예외상황별로 runtime 익셉션을 상속받아 정의하였구요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;헤더타입(Accept)에 따라 결과(예외코드 및 오류 메시지)처리를 하였습니다. (html, json, xml)&amp;nbsp;&lt;/p&gt;&lt;p&gt;간혹 라이브러리에서 checked exception을 발생하는 메소드 같은 경우는 wrapping하여 runtime익셉션을&amp;nbsp;&lt;/p&gt;&lt;p&gt;발생하도록 하였습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;위구조에서는 Controller에서는 try{} catch{} 문이 필요없구요. 서비스나 다오 레이어에서는 상황에 따라 있을&amp;nbsp;&lt;/p&gt;&lt;p&gt;수 있지만 public method에서는 가독성을 위해서 지양하고 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;물론 예외가 아닌 정상플로우로 진행시켜야 하는 경우에는 컨트롤러에서 try catch가 필요할수도있겠으나 아직까지 그런 경우는&amp;nbsp;&lt;/p&gt;&lt;p&gt;없었습니다.(이 경우는 controller 보다는 서비스 레이어에서 처리하는게 낫지 않을까 생각합니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;아 덧붙이면 이성현님 말씀대로 예외 발생은 모두 서비스단에서 하고 있습니다.(비즈니스 예외)&amp;nbsp;&lt;/p&gt;&lt;p&gt;저도 비즈니스 로직을 어디에 두어야 하나, (컨트롤러?, 서비스?, 컨트롤러 + 서비스?) 고민이 많았습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;현재는 사이트 성격에 따라 좀 달라질수 있다고 생각하여 그부분에서는 자유도를 두고 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;하지만 동일한 사이트에서는 일관성있어야 겠죠.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;대충 비슷한 의미이긴 한데요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;요세 리팩토링에 심취해 있다보니. 살짝 코드가 변하는게 눈에 보이네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;저라도 처음에는 Controller단에서 try{} catch(){}로 자연스럽게 DuplicateMemberException로 처리를&amp;nbsp;&lt;/p&gt;&lt;p&gt;했을거 같습니다. 하지만, 다른 컨트롤러에서도 같은 방식으로 try {}catch(){}로 로 감싸줬다면. 중복이&amp;nbsp;&lt;/p&gt;&lt;p&gt;발생하니 MemberService 에 메소드는 throws로 DuplicateMemberException선언이 되어 자연스럽게 흘러가지&amp;nbsp;&lt;/p&gt;&lt;p&gt;않았을까 하네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;딱히 이건 이렇게 하라는것보다는 자연스럽게 어디다 놓으면 좋을지 정해지는면 되는게 아닌가 싶습니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;원론적인,, 그리고 실제로도 좋은 설계가 될 수 있을 (것으로 생각하는) 개념을 말씀 드리면,&amp;nbsp;&lt;/p&gt;&lt;p&gt;DAO, Service, Controller 모두 각 단에서 적잘한 예외 처리를 해야 한다고 생각합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;DAO에서는 DB Access가 주요 관심사항이니까,&amp;nbsp;&lt;/p&gt;&lt;p&gt;duplicated key가 발생하면,, (이건 DB 제약에 따라 발생하겠죠?) DuplicatedKeyException을 던지는게&amp;nbsp;&lt;/p&gt;&lt;p&gt;적절하다 보구요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Service 에서는, DAO의 DuplicatedKeyException을 받아서 DuplicatedMemberException을&amp;nbsp;&lt;/p&gt;&lt;p&gt;던져야 되구요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;(!! DB, DAO 관점에서는 key가 중복된거지,, 걔가 멤버인지,, 머시기인지는 모르는게 맞다고 봅니다. 걔가 멤버고,, 멤버는&amp;nbsp;&lt;/p&gt;&lt;p&gt;중복되면 안된다는 스펙은 서비스 로직에 해당된다고 봅니다.)&amp;nbsp;&lt;/p&gt;&lt;p&gt;그리고, Controller에서는,, 서비스 로직 처리 중에 예외가 발생했으니,, 컨트롤러 단의 예외 처리를&amp;nbsp;&lt;/p&gt;&lt;p&gt;해야 한다고 봅니다.. 기본적으로 예외가 발생하지 않는게 정상 플로우고,, 예외가 발생하면 발생&amp;nbsp;&lt;/p&gt;&lt;p&gt;예외별로 메시지를 표시한다고 하면,&amp;nbsp;&lt;/p&gt;&lt;p&gt;========== &amp;nbsp;MemberController &amp;nbsp; =============================&amp;nbsp;&lt;/p&gt;&lt;p&gt;@RequestMapping("/member/registmember.do")&amp;nbsp;&lt;/p&gt;&lt;p&gt;public String registMember(Member member) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;try {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; memberService.registMember(member);&amp;nbsp;&lt;/p&gt;&lt;p&gt;} catch(DuplicatedMemberException dme) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; alertAndReturn("이미 등록된 회원입니다."); // 화면 alert 처리&amp;nbsp;&lt;/p&gt;&lt;p&gt;} catch(Exception e) {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; alertAndReturn("처리 중에 오류가 발생했습니다."); // 화면 alert 처리&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;return "success";&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;spring mvc는 ExceptionResolver가 있잖아요(다른mvc모델도 비슷한게 있던데...). Controller에서는&amp;nbsp;&lt;/p&gt;&lt;p&gt;의미있는 Exception을 던지면 그만이죠. 그래야 내 Exception답지!!&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/162&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/162</guid>
			<comments>http://www.ksug.org/162#entry162comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:08:17 +0900</pubDate>
		</item>
		<item>
			<title>웹상에서 형상관리 기능구현 문의</title>
			<link>http://www.ksug.org/161</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/7ecd8ad6f74dee6d"&gt;http://groups.google.com/group/ksug/browse_thread/thread/7ecd8ad6f74dee6d&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;안녕하세요&amp;nbsp;&lt;/p&gt;&lt;p&gt;Spring 과는 무관한 질문이지만 문의 드립니다.^^&amp;nbsp;&lt;/p&gt;&lt;p&gt;jira 에서 버전관리 기능연동(ex. cvs/FishEye..)처럼, 웹 어플리케이션 상에서 게시판에 문서를 첨부했을 때&amp;nbsp;&lt;/p&gt;&lt;p&gt;버전관리기능을 구현해야 하는데 연동이 가능한지 모르겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;MS의 Share Point 에서도 버전관리 기능이 있더라구요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;SVN과 연동이 된다면 가장 좋겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;비슷한 구현 경험이 있으신분들의 조언을 듣고자 합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;감사합니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;&lt;p&gt;화면(jsp)에서 서버로 파일을 업로드하면 해당 파일을 svn커넥터 api로 svn서버로 전송할수 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;전송 후(commit) 화면에 commit된 파일을 보여주면 되죠. 당연 버젼관리 되구요&amp;nbsp;&lt;/p&gt;&lt;p&gt;문제는 화면을 다 만들어줘야겠죠.&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/161&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/161</guid>
			<comments>http://www.ksug.org/161#entry161comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:05:07 +0900</pubDate>
		</item>
		<item>
			<title>.beabuild.txt 파일에 대해 궁금합니다.</title>
			<link>http://www.ksug.org/160</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/fdca8c380e66e28b"&gt;http://groups.google.com/group/ksug/browse_thread/thread/fdca8c380e66e28b&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;웹로직을 이클립스에서 연동하여 테스트 중입니다 몇일간 너무나 헤매여서 지하철에서 답답한맘 이기지못하고 남깁니다&amp;nbsp;&lt;/p&gt;&lt;p&gt;maven으로 그냥 war로 빌드하여 웹로직 콘솔에서 디플로이하면 잘됩니다&amp;nbsp;&lt;/p&gt;&lt;p&gt;하지만 이클립스 서버탭에서 해당모듈을 디플로이하면 ClassNotFoundExcept 이 떨어집니다&amp;nbsp;&lt;/p&gt;&lt;p&gt;몇일헤맨끝에 workspace 아래 plugin 쪽에 아래 .beabuild.txt 라는파일이 실제 소스위치를 매핑하고 있다는건 알아냈습니다&amp;nbsp;&lt;/p&gt;&lt;p&gt;근데 이상하게 거기에 jar 파일들은 하나도 등록안되어있네요.. 그것때매 클래스를 못찾는것같은데 ..&amp;nbsp;&lt;/p&gt;&lt;p&gt;같은 프로젝트를 체크아웃받은 동료pc의 그파일에는 필요한 jar들이 모두 매핑이되어 있더군요&amp;nbsp;&lt;/p&gt;&lt;p&gt;물론 저랑 이클립스 웹로직 메이븐로컬리파지터리 위치 등이 약간씩 다릅니다만..&amp;nbsp;&lt;/p&gt;&lt;p&gt;어떤 이유일까요???&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;이클립스에서 SpringMVC 테스트(JUnit) 환경 구축하기 &amp;lt;http://springmvc.egloos.com/438345&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;제가 예전에 했던 고민들이네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;답만 말하자면 프로젝트 - 특성 - Deployment Assembly에&amp;nbsp;&lt;/p&gt;&lt;p&gt;Maven Dependencies가 추가되있는지 확인해보세요.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;&lt;p&gt;강종욱님이 설명하신 내용이 정리된 불로그네요&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://beans9.tistory.com/m/103&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/160&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/160</guid>
			<comments>http://www.ksug.org/160#entry160comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:04:05 +0900</pubDate>
		</item>
		<item>
			<title>시큐리티3 로그인시 바로이전에 접근했던 페이지로 이동이 가능한가요?</title>
			<link>http://www.ksug.org/159</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/f2ba3cd10abedd3b"&gt;http://groups.google.com/group/ksug/browse_thread/thread/f2ba3cd10abedd3b&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;안녕하세요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;스프링 시큐리티 3.1버전으로 프로젝트를 진행중인데 모르는부분이 생겨 질문드립니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;권한이 없는 URL로 접근할경우 로그인페이지로 이동하게 되있는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;여기서 로그인한뒤에 좀전의 권한이 없었던 URL로 다시 보낼려면 어떻게 해야되나요??&amp;nbsp;&lt;/p&gt;&lt;p&gt;시큐리티는 너무어려운거 같아요.ㅠㅠ&amp;nbsp;&lt;/p&gt;&lt;p&gt;도움좀 부탁드려요.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;오래간만에 답변을 올려 봅니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;우선 해결 방안을 올리기 전에 저는 security 를 조금 수정해서 사용하고 있음으로 감안하고 들어 주십시요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;하지만 해결 아이디어 정도는 드릴수도 있을것 같아서 글을 올립니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;1. 권한이 없어서 login page로 전달할때 이전 request를 pageContext에서 가지고 있을 것입니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;login page로 이동할때 최초 request를 유지하고 있을 경우 해당 request의 정보에서&amp;nbsp;&lt;/p&gt;&lt;p&gt;좀전에 요청한 url을 다시 받을수 있겠죠...&amp;nbsp;&lt;/p&gt;&lt;p&gt;2. 권한없는 page에서 login page로 이동할때 redirect: 하지 않고 forward: 하면.&amp;nbsp;&lt;/p&gt;&lt;p&gt;브리우져의 url에는 최초에 요청한 url이 그대로 남아 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;해당 정보를 활용해도 되겠죠..&amp;nbsp;&lt;/p&gt;&lt;p&gt;그럼 도움이 되었기를 바랍니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;먼저 답변달아주셔서 감사합니다!&amp;nbsp;&lt;/p&gt;&lt;p&gt;제가 아직 시큐리티를 다루는게 미숙해서&amp;nbsp;&lt;/p&gt;&lt;p&gt;뭔가 아~! 하면서도 어떻게 해야될지를 모르겠어요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;좀더 설명을 붙여서 다시한번 질문드리겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;form-login login-page='/common/user/login.do'&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;login-processing-url="/j_spring_security_check"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;default-target-url='/common/user/login_success.do'&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;authentication-failure-url="/common/user/login.do?error=1"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;always-use-default-target='true' /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;시큐리티 설정을 이렇게 해놨습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://localhost:8080/center/main.do ( 허용 )&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://localhost:8080/center/report/report.do (미허용)&amp;nbsp;&lt;/p&gt;&lt;p&gt;메인페이지에서 report.do 링크를 클릭하게되면 권한이 없는페이지라서&amp;nbsp;&lt;/p&gt;&lt;p&gt;설정에 있는 /common/user/login.do 가 호출되는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;request에 있는 referer를 뽑아봐도 report.do 가 아닌 main.do 를 가지고있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;위의 설정처럼 해서는 중간에 인증이 불허된 report.do의 정보를 가져오는건 안되는건가요?&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;default-target-url='/common/user/login_success.do' 값과&amp;nbsp;&lt;/p&gt;&lt;p&gt;always-use-default-target='true' 값을 제거하시면 원하시는 행동을 할거에요.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;오전에 출근하자마자 테스트해봤는데..&amp;nbsp;&lt;/p&gt;&lt;p&gt;형민님이랑 용권님 방법을 동시에 적용하면 될거같기도 한데..&amp;nbsp;&lt;/p&gt;&lt;p&gt;또 막혀버렸어요ㅠ_ㅠ&amp;nbsp;&lt;/p&gt;&lt;p&gt;먼저 용권님이 얘기주신데로 하니 로그인이후에 제가 원한 이전페이지로 돌아가긴하는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;default-target-url='/common/user/login_success.do'&amp;nbsp;&lt;/p&gt;&lt;p&gt;제가 위의 저쪽 메서드에서 필요한정보를 session을 등록해놨는데&amp;nbsp;&lt;/p&gt;&lt;p&gt;그부분만 처리가 되면될거같아요..&amp;nbsp;&lt;/p&gt;&lt;p&gt;형민님이 얘기주신 이전 페이지의 정보를 login_success.do에서 가져오는 방법을 찾아내던지&amp;nbsp;&lt;/p&gt;&lt;p&gt;용권님이 얘기주신 방법을 사용하면서 로그인성공시의 이벤트를 잡아서 세션을 추가해주면 되지않을까라고 고민을하면서&amp;nbsp;&lt;/p&gt;&lt;p&gt;답변을 작성할려구 들어왔어요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;감사합니다&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;로그인완료 후 저렇게 처리 하지 마시고&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;form-login login-page="/main/loginPage" login-processing-url="/&amp;nbsp;&lt;/p&gt;&lt;p&gt;login"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; always-use-default-target="false"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; authentication-success-handler-ref="authenticationSuccessHandler"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;-- 이부분&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; authentication-failure-url="/main/loginFailure"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;저렇게 authentication-success-handler-ref 이부분을 등록해 주세요&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;beans:bean id="authenticationSuccessHandler" &amp;nbsp;class="클래스 위치 "/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;이 클래스 내용은&amp;nbsp;&lt;/p&gt;&lt;p&gt;public class CustomAuthenticationSuccessHandler extends&amp;nbsp;&lt;/p&gt;&lt;p&gt;SavedRequestAwareAuthenticationSuccessHandler implements&amp;nbsp;&lt;/p&gt;&lt;p&gt;AuthenticationSuccessHandler{&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public void onAuthenticationSuccess(HttpServletRequest&amp;nbsp;&lt;/p&gt;&lt;p&gt;request, HttpServletResponse response, Authentication authentication)&amp;nbsp;&lt;/p&gt;&lt;p&gt;throws IOException, ServletException {&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // 로그인 완료후 처리할 내용&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; super.onAuthenticationSuccess(request, response, authentication);&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;/p&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이런식으로 클래스를 만들어 주시면&amp;nbsp;&lt;/p&gt;&lt;p&gt;따로 저런식으로 사용 안하셔도 로그인 완료 후 처리가 됩니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;SavedRequestAwareAuthenticationSuccessHandler 이걸 상속 받으시면 완료 후 이전 URL로 이&amp;nbsp;&lt;/p&gt;&lt;p&gt;동합니다.&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/159&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/159</guid>
			<comments>http://www.ksug.org/159#entry159comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:02:48 +0900</pubDate>
		</item>
		<item>
			<title>ant javac task를 이용하여 compile 시 class 파일 사이즈가 다른 문제</title>
			<link>http://www.ksug.org/158</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/0023153d66518893"&gt;http://groups.google.com/group/ksug/browse_thread/thread/0023153d66518893&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;ant의 javac로 컴파일하여 생성된 class파일과 로컬 &amp;nbsp;이클립스에서 컴파일 된 class 파일이 서로 사이즈가 다른 현상이 있어&amp;nbsp;&lt;/p&gt;&lt;p&gt;질문 올립니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;모든 class파일의 사이즈가 다른 것이 아닌 특정 클래스 몇 개들이 사이즈가 다르네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;이상한 점은 다른 사이즈를 가진 class 파일을 decompile 했을 때 안의 코드는 동일하며 그렇다고 jvm버전이 다른 것도&amp;nbsp;&lt;/p&gt;&lt;p&gt;아닙니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;okjsp에 문의 해봤더니 debug 옵션을 주면 그럴 수도 있다고는 하셨는데 debug 옵션 및 기타 다른 옵션들을 모두 삭제하고&amp;nbsp;&lt;/p&gt;&lt;p&gt;테스트를 해봐도 동일한 현상이 발생하네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;혹시 이런 현상에 대해서 경험해 보신 분 계시면 답변 좀 부탁드리겠습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;*ant javac 설정 내용*&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;target name="build"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;echo message="|-------------------------------------------------------------| " /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;echo message="| BUILD START &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; | " /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;echo message="|-------------------------------------------------------------| " /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;copy todir="${app_home_dir}" overwrite="true"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;fileset dir="${project_home}/WebContent"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;include name="**/*.jsp" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;include name="**/*.xml" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;include name="**/*.jar" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/fileset&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/copy&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;copy todir="${app_home_dir}/WEB-INF/classes" overwrite="true"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;fileset dir="${project_home}/conf"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;exclude name="**/.svn" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/fileset&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/copy&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;javac&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; target="${java.target}"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; debug="on"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nowarn="true"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; deprecation="off"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; listfiles="true"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; failonerror="true"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; srcdir="${project_home}/src"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; destdir="${app_home_dir}/WEB-INF/classes"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; encoding="${java.compile.encoding}"&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; includeantruntime="false"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;include name="**/*.java" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;classpath&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;path refid="common_classpath" /&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;fileset dir="${app_classpath}/WebContent/WEB-INF/lib"&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;include name="*.jar"/&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/fileset&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/classpath&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/javac&amp;gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;/target&amp;gt;&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;&lt;p&gt;eclipse는 ecj라는 증분(incremental) 자바 컴파일러를 따로 가지고 있습니&amp;nbsp;&lt;/p&gt;&lt;p&gt;다. 변경된 소스와 이에 관련된 소스만 추적해서 컴파일하는 컴파일러인데&amp;nbsp;&lt;/p&gt;&lt;p&gt;javac와 동일한 결과가 나오지 않을 수도 있어요. 최적화 알고리즘이 다를테&amp;nbsp;&lt;/p&gt;&lt;p&gt;니까요.&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;저도 옛날에, 개발자 한명이 Eclipse에서 컴파일해서 서버로 배포하던 시절에, Eclipse의 컴파일 결과와 javac로 한게&amp;nbsp;&lt;/p&gt;&lt;p&gt;달라서 신기해했던 경험이 있습니다..&amp;nbsp;&lt;/p&gt;&lt;p&gt;정확히 어떤 문제였는지는 가물가물한데, 찾아보니 serialVersionUID 관련해서도 문제가 생길수 있다고 하네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;http://wiki.eclipse.org/FAQ_Why_does_the_Eclipse_compiler_create_a_di...&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/158&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/158</guid>
			<comments>http://www.ksug.org/158#entry158comment</comments>
			<pubDate>Fri, 06 Apr 2012 01:00:56 +0900</pubDate>
		</item>
		<item>
			<title>cp /dev/null &gt; was_log.out 이거 안전한건가요?</title>
			<link>http://www.ksug.org/157</link>
			<description>&lt;p&gt;&lt;a href="http://groups.google.com/group/ksug/browse_thread/thread/f58db839ea38e311"&gt;http://groups.google.com/group/ksug/browse_thread/thread/f58db839ea38e311&lt;/a&gt;
&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;was나 서버데몬을 죽이지 않고 로그파일을 초기화하기 위해&amp;nbsp;&lt;/p&gt;&lt;p&gt;cp /dev/null &amp;gt; log_file&amp;nbsp;&lt;/p&gt;&lt;p&gt;혹은&amp;nbsp;&lt;/p&gt;&lt;p&gt;cat /dev/null &amp;gt; log_file&amp;nbsp;&lt;/p&gt;&lt;p&gt;이런거 하는 경우가 있는거 같은데...&amp;nbsp;&lt;/p&gt;&lt;p&gt;이거 안전한 행위인지.. 궁금하네요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;예전에 잠깐 어디선가 테스트해본적 있었던거 같은데(어떤 os에서 어떤 데몬이 만들어내는 로그인지 기억이 안남 ^^)&amp;nbsp;&lt;/p&gt;&lt;p&gt;실제 파일은 초기화가 되는데 파일사이즈는 원래 사이즈를 그대로 가지고 있었던 기억이 있는데...&amp;nbsp;&lt;/p&gt;&lt;p&gt;혹시 경험 있으신 분들 있나요?&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;파일사이즈 0로 만들기위해 자주 사용하는 방식입니다. 문제 없어요.&amp;nbsp;&lt;/p&gt;&lt;p&gt;cp -f /dev/null log_file&amp;nbsp;&lt;/p&gt;&lt;p&gt;From. Ted Cho.&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;null copy는 물리적인 디스크 사용 율 (du )을 줄일 수는 없으나 , 로그파일의 내용은 줄일수 있습니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;결론적으로 로그는 0바이트로 보이나 물리적인 디스크 사용율은 프로세스를 내려야만 처리가 됩니다&amp;nbsp;&lt;/p&gt;&lt;p&gt;그래서 was 기동을 nohup 으로 기동하고, 주기로 로그를 로테이션합니다(펄 이용)&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="txc-textbox" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(254, 137, 67); border-right-color: rgb(254, 137, 67); border-bottom-color: rgb(254, 137, 67); border-left-color: rgb(254, 137, 67); background-color: rgb(254, 222, 199); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; "&gt;&lt;p&gt;물리적 디스크의 기존사용하는 어드레스를 가지고 있으며 0부터 기존 어드레스까지는 못쓰게 하면서 기존이후 부터남긴다고 하네요 ^^*&amp;nbsp;&lt;/p&gt;&lt;p&gt;즉, 널카피는 내가 지금 까지 온 거리를 제외하고 현재 위치부터 0으로 다시 시작하는거죠 ^^* 비유가 이상하지만 쩝 ....&amp;nbsp;&lt;/p&gt;&lt;p&gt;간단히 df -k, du -k 한결과 기록 후&amp;nbsp;&lt;/p&gt;&lt;p&gt;null copy 하구&amp;nbsp;&lt;/p&gt;&lt;p&gt;다시 df -k, du -k 해보시면&amp;nbsp;&lt;/p&gt;&lt;p&gt;실제 파일사이즈는 0으로 되나 du -k 값은 다름을 아실 수 있을 겁니다 ^^*&amp;nbsp;&lt;/p&gt;&lt;p&gt;물론 모든 OS 에서 검증한 내용은 아닙니다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;그래서 저 같은경우는 로그는 전혀 다른 디스크 볼륨으로 주기 로테이션 하도록 합니다 ^^*&amp;nbsp;&lt;/p&gt;&lt;p&gt;WAS의 로그 full 로 인한 문제가 없도록 위함입니다 ^^* 도움이되셨길 ....&amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style="text-align:left; padding-top:10px;"&gt;
&lt;iframe src="http://www.facebook.com/plugins/like.php?href=www.ksug.org/157&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=310&amp;amp;action=like&amp;amp;font=tahoma&amp;amp;colorscheme=light&amp;amp;height=65" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:310px; height:65px;" allowTransparency="true"&gt;&lt;/iframe&gt;
&lt;/div&gt;
</description>
			<category>그룹스Q&amp;A</category>
			<author>머큐짱</author>
			<guid>http://www.ksug.org/157</guid>
			<comments>http://www.ksug.org/157#entry157comment</comments>
			<pubDate>Fri, 06 Apr 2012 00:59:38 +0900</pubDate>
		</item>
	</channel>
</rss>

