<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>JCF3.0 TEAM BLOG</title>
		<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/</link>
		<description>RSS 피드 주소
http://feeds.feedburner.com/itanywhere</description>
		<language>ko</language>
		<pubDate>Tue, 16 Dec 2008 18:05:38 +0900</pubDate>
		<generator>Textcube 1.7.1 : Risoluto</generator>
		<image>
		<title>JCF3.0 TEAM BLOG</title>
		<url>http://blog.dev.daewoobrenic.co.kr/tc/attach/1/1392107526.gif</url>
		<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/</link>
		<width>190</width>
		<height>75</height>
		<description>RSS 피드 주소
http://feeds.feedburner.com/itanywhere</description>
		</image>
		<item>
			<title>Ext JS 3.0</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/Ext-JS-30</link>
			<description>*참조 : &lt;a href=&quot;http://ajaxian.com/archives/ext-js-30-roadmap-and-developer-tool&quot;  target=&quot;_blank&quot;&gt;http://ajaxian.com/archives/ext-js-30-r &amp;middot;&amp;middot;&amp;middot; per-tool&lt;/a&gt;&lt;br&gt;&lt;br&gt;Ext JS 3.0이 내년 1분기에 릴리즈 될 예정이라고 합니다.&lt;br&gt;특히 &lt;a href=&quot;http://www.screencast.com/users/JackSlocum/folders/Default/media/f7450651-778b-4bbc-9fc4-4e921a7a2705&quot;  target=&quot;_blank&quot;&gt;Ext JS Designer&lt;/a&gt;도 함께 출시된다고 하니 기대가 됩니다.&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<author>(장의진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/132</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/Ext-JS-30#entry132comment</comments>
			<pubDate>Tue, 11 Nov 2008 11:30:49 +0900</pubDate>
		</item>
		<item>
			<title>jsp 한글깨짐 현상</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/jsp-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%ED%98%84%EC%83%81</link>
			<description>&lt;P&gt;jsp파일에서 한글 데이터가 &amp;nbsp;깨져서 이리저리 &amp;nbsp;charset도 &amp;nbsp;계속 확인해보고 했는데 원인은 form에 있었음. &lt;BR&gt;&lt;BR&gt;&amp;lt;s:form&amp;nbsp; enctype=&quot;multipart/form-data&quot; action=&quot;saveBBS&quot; method=&quot;post&quot; &lt;BR&gt;&amp;nbsp;theme=&quot;simple&quot; onsubmit=&quot;formCheck();&quot; &amp;gt;&lt;BR&gt;&lt;BR&gt;위에서 enctype부분이 꼭 들어가야함. 안그럼 한글이 깨져서 들어감,. &lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>UI</category>
			<author>(김민아)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/131</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/jsp-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%ED%98%84%EC%83%81#entry131comment</comments>
			<pubDate>Wed, 24 Sep 2008 14:39:21 +0900</pubDate>
		</item>
		<item>
			<title>오라클에서 데이타 복구하기</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%9E%90%EB%8F%99-%EC%A0%80%EC%9E%A5-%EB%AC%B8%EC%84%9C-1</link>
			<description>오라클 10g(?)부터 flash back 이라는 재미있는 기능을 제공합니다.&lt;br&gt;이 기능을 이용하면 이미 업데이트된 데이타를 쉽게 복구할 수 있습니다.&lt;br&gt;&lt;br&gt;만약 USER_ROLE 테이블에 데이타를 잘못 업데이트하여 데이타를 복구하려고 할 경우에&lt;br&gt;아래와 같이 퀴리를 실행하여 undo_sql 을 조회한 다음,&lt;br&gt;undo_sql 을 이용하여 데이타를 복구하면 됩니다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(201, 237, 255);&quot;&gt;SELECT undo_sql from flashback_transaction_query &lt;br&gt;&amp;nbsp;WHERE commit_timestamp &amp;gt;= TO_TIMESTAMP(&#039;2008-08-01 11:30:00&#039;, &#039;YYYY-MM-DD HH24:MI:SS&#039;) &lt;br&gt;&amp;nbsp; and table_name = &#039;USER_ROLE&#039;;&lt;/div&gt;&lt;br&gt;&amp;nbsp; &lt;br&gt;자세한 내용은 아래 링크를 참조하세요.&lt;br&gt;&lt;a href=&quot;http://www.oracle.com/technology/deploy/availability/htdocs/Flashback_Overview.htm&quot;  target=&quot;_blank&quot;&gt;http://www.oracle.com/technology/deploy &amp;middot;&amp;middot;&amp;middot; view.htm&lt;/a&gt;&lt;br&gt;&lt;a href=&quot;http://dbataj.blogspot.com/2008/05/oracle-flashback-transaction-query.html&quot;  target=&quot;_blank&quot;&gt;http://dbataj.blogspot.com/2008/05/orac &amp;middot;&amp;middot;&amp;middot; ery.html&lt;/a&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<category>data recovery</category>
			<category>oracle</category>
			<category>sql</category>
			<author>(장의진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/130</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%9E%90%EB%8F%99-%EC%A0%80%EC%9E%A5-%EB%AC%B8%EC%84%9C-1#entry130comment</comments>
			<pubDate>Fri, 01 Aug 2008 11:46:38 +0900</pubDate>
		</item>
		<item>
			<title>과연 어떤 웹서비스 엔진을 선택할 것인가? - 웹서비스 엔진 스팩 비교</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%9E%90%EB%8F%99-%EC%A0%80%EC%9E%A5-%EB%AC%B8%EC%84%9C</link>
			<description>



&lt;h2 id=&quot;head-53258b89318214dd70f4c758fe75989595904d52&quot;&gt;General Features&lt;/h2&gt;

&lt;div&gt;
&lt;table style=&quot;width: 650px; height: 900px;&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Feature&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Axis 1.x&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Axis2&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;CXF&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Glue&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;JBossWS &lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;XFire (1.2)&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;&lt;a class=&quot;external&quot; rel=&quot;nofollow&quot; href=&quot;https://metro.dev.java.net/&quot;&gt;&lt;img src=&quot;http://wiki.apache.org/wiki/modern/img/moin-www.png&quot; alt=&quot;[WWW]&quot; height=&quot;9&quot; width=&quot;9&quot;&gt; Metro@GlassFish&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;OracleAS 10g&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Basic Profile 1.1 Compliant &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Easily Create Services from POJOs &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Open Source &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; RPC-Encoding &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X [6] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Spring Support   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; REST Support   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; IDEA Plugins   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Ant &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Eclipse Plugins   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; (STP)  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Ant &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; &lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/NetBeans&quot;&gt;NetBeans&lt;/a&gt; Plugins   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Ant &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JDeveloper   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Hot Deployment   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ?   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Soap 1.1   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Soap 1.2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Streaming XML (StAX based)   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL 1.1 -&amp;gt;Code (Client) &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL 1.1 -&amp;gt;Code (Server) &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL 2.0 -&amp;gt;Code (Client) &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL2.0 -&amp;gt;Code (Server)  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Client-side Asynchrony &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; With BPEL &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Server-side Asynchrony &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; With BPEL &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Policy-driven code generation &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-be04d02f2e368c777e77d4200d2f3e6cd0980fe2&quot;&gt;Web Services related JSR standards&lt;/h2&gt;

&lt;div&gt;
&lt;table style=&quot;width: 613px; height: 400px;&quot;&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Feature&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Axis 1.x&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Axis2&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt; CXF&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Glue&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;JBossWS &lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;XFire (1.2)&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt;&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; &lt;strong&gt;OracleAS 10g&lt;/strong&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JAX-RPC &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JAX-WS &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; [Early Access/Nightly] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; [Early Access] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X [5] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JSR 181 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; [Early Access/Nightly] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JSR 181 on Java 1.4   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; SAAJ (1.2/1.3) &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JSR 109  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JBI &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-dd648fcc2d94b5fbceb39ccb6400304180280f51&quot;&gt;Data Bindings&lt;/h2&gt;

&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS 10g &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; XMLBeans  Support   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Castor Support &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X [9] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JiBX &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JAXB &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X [5] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JAX-RPC &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-1a123bf64ce42066ae75df70bd646efafbc04065&quot;&gt;WS-*&lt;/h2&gt;

&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS 10g &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Addressing &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; with BPEL &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Atomic Transaction &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Business Activity &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Coordination &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Eventing &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Metadata Exchange &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X [10] &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Notification &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X [12]  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/ReliableMessaging&quot;&gt;ReliableMessaging&lt;/a&gt;   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Policy   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Secure Conversation &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Security Policy   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Security &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Trust &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WS-Transfer &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL 1.1 Support &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; WSDL 2.0 Support &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-6d7daf17a9b4740dbef4027dca1d97db2c9fc290&quot;&gt;Transports&lt;/h2&gt;

&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS 10g &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; HTTP &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JMS &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X  &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Jabber &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Experimental &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Experimental &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; SMTP/POP3 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; TCP &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; In-VM &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-432e5c4249bfdffeb933013dbd54d66f26a3bc62&quot;&gt;Attachments&lt;/h2&gt;

&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS 10g &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Soap w/ Attachments &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; DIME &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; MTOM &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-4efbe5e22ef1908cdf7b7ea08691ade950f3db2c&quot;&gt;Encoding Table&lt;/h2&gt;

&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; XML Textual &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; MTOM &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; &lt;a href=&quot;http://wiki.apache.org/ws/FastInfoset&quot;&gt;FastInfoset&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; JSON &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;h2 id=&quot;head-ecbe98fcb0fe5295796664c2aea889f7645de25d&quot;&gt;WS-Addressing Versions&lt;/h2&gt;

&lt;p&gt;This section is incomplete. If a stack has no WS-A support listed
next to it, it probably means that this section has not been filled in
for it. &lt;/p&gt;
&lt;div&gt;
&lt;table&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; Feature    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis 1.x &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Axis2 &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;  CXF &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Glue &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; JBossWS   &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; XFire &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; Metro@&lt;a class=&quot;nonexistent&quot; href=&quot;http://wiki.apache.org/ws/GlassFish&quot;&gt;GlassFish&lt;/a&gt; &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; OracleAS 10g &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; 2003-03    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; 2004-04    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; 2004-08    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; ? &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; 2005-08    &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt; 2006-05 [8]&lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt; X &lt;/p&gt;
&lt;/td&gt;
&lt;td&gt;

&lt;br&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;위의 내용은 다양한 웹서비스 엔진의 스팩을 비교한 것이다. 이러한 특성은 구현하고자 하는 웹서비스의 특성에 따라 선택된 스팩을 가장 잘 지원하는 웹서비스 엔진을 선택하기 위한 기준이다. 웹서비스에 있어서는 이러한 스팩적 특성뿐만 아니라 성능과 같은 비기능적 요구사항을 만족해야 한다. 따라서 적절한 웹서비스 엔진을 선택하기 위해서는 충분한 테스트와 도입과정이 필요하다.&lt;/p&gt;&lt;br&gt;
&lt;p&gt;===== Notes =====&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#1&quot;&gt;#1&lt;/a&gt; Bootstrapped this page from &lt;a class=&quot;external&quot; rel=&quot;nofollow&quot; href=&quot;http://xfire.codehaus.org/Stack+Comparison&quot;&gt;&lt;img src=&quot;http://wiki.apache.org/wiki/modern/img/moin-www.png&quot; alt=&quot;[WWW]&quot; height=&quot;11&quot; width=&quot;11&quot;&gt; XFire Stack Comparion page&lt;/a&gt; on Oct 9, 2006.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#2&quot;&gt;#2&lt;/a&gt; Removed forward looking statements like &quot;Coming in ...&quot;&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#3&quot;&gt;#3&lt;/a&gt; Removed JBI JSR as none of the soap stacks here are packaged out of the box with a JBI container.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#4&quot;&gt;#4&lt;/a&gt; Replaced &quot;Via...&quot; with &quot;?&quot;&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#5&quot;&gt;#5&lt;/a&gt;
JAX-RPC 1.1, JAX-WS 2.0 and JAX-WS 2.1 RI are combined together in
Metro. Similarly JAXB 2.0 and JAXB 2.1 are combined together in Metro.
JAX-WS 2.0 and JAXB 2.0 functionality is available in Java SE 6 as well.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#6&quot;&gt;#6&lt;/a&gt; Only available through the JAX-RPC 1.1 APIs.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#7&quot;&gt;#7&lt;/a&gt; Derived from &lt;a class=&quot;external&quot; rel=&quot;nofollow&quot; href=&quot;http://blog.springframework.com/arjen/archives/2006/07/22/ws-addressing-needs-a-phone-book/&quot;&gt;&lt;img src=&quot;http://wiki.apache.org/wiki/modern/img/moin-www.png&quot; alt=&quot;[WWW]&quot; height=&quot;11&quot; width=&quot;11&quot;&gt; ws Addressing review&lt;/a&gt;&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#8&quot;&gt;#8&lt;/a&gt; WSA 1.0 final: shares the same xmlns as the 2005-08 release.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#9&quot;&gt;#9&lt;/a&gt; samples\databinding illustrates how to use castor with &quot;wsdl2java -d none&quot; generated code.&lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#10&quot;&gt;#10&lt;/a&gt; Mex Module for Axis2 is available &lt;a class=&quot;external&quot; rel=&quot;nofollow&quot; href=&quot;http://wso2.org/projects/commons/mex&quot;&gt;&lt;img src=&quot;http://wiki.apache.org/wiki/modern/img/moin-www.png&quot; alt=&quot;[WWW]&quot; height=&quot;11&quot; width=&quot;11&quot;&gt; here&lt;/a&gt; &lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#11&quot;&gt;#11&lt;/a&gt; Transfer Module for Axis2 is available &lt;a class=&quot;external&quot; rel=&quot;nofollow&quot; href=&quot;http://wso2.org/projects/commons/xfer&quot;&gt;&lt;img src=&quot;http://wiki.apache.org/wiki/modern/img/moin-www.png&quot; alt=&quot;[WWW]&quot; height=&quot;11&quot; width=&quot;11&quot;&gt; here&lt;/a&gt; &lt;br&gt;
 &lt;a href=&quot;http://wiki.apache.org/ws/StackComparison#12&quot;&gt;#12&lt;/a&gt; Apache Muse project has support for WS-Notifications&lt;/p&gt;&lt;a href=&quot;http://wiki.apache.org/ws/StackComparison&quot;  target=&quot;_blank&quot;&gt;원문보기&lt;/a&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<category>Axis1.x</category>
			<category>Axis2.x</category>
			<category>CXF</category>
			<category>Glue</category>
			<category>JBossWS</category>
			<category>XFire</category>
			<author>(서경진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/129</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%9E%90%EB%8F%99-%EC%A0%80%EC%9E%A5-%EB%AC%B8%EC%84%9C#entry129comment</comments>
			<pubDate>Mon, 28 Jul 2008 17:50:47 +0900</pubDate>
		</item>
		<item>
			<title>KSUG에서 &quot;회사 전체가 쓰는 프레임웍을 만드는 팀에 바라는 점&quot;이라는 좋은 글 소개합니다.</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/KSUG%EC%97%90%EC%84%9C-%ED%9A%8C%EC%82%AC-%EC%A0%84%EC%B2%B4%EA%B0%80-%EC%93%B0%EB%8A%94-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8D%EC%9D%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%ED%8C%80%EC%97%90-%EB%B0%94%EB%9D%BC%EB%8A%94-%EC%A0%90%EC%9D%B4%EB%9D%BC%EB%8A%94-%EC%A2%8B%EC%9D%80-%EA%B8%80-%EC%86%8C%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4</link>
			<description>&lt;p&gt;KSUG에 좋은 글이 있어서 소개하고자 합니다.&lt;/p&gt;
&lt;p&gt;최근 다수의 회사들이 생산성, 재사용성, 유지보수성, 품질보증 등 자사의 애플리케이션을 견고하게 하고 아웃소싱을 통해 개발되는 애플리케이션을 수치화, 정량화된 데이터를 통해 통제하고자 전사 표준 프레임워크를 구축하거나 도입하고 있습니다. 
이와 같이 전사 표준 프레임워크를 구축하고 도입하는데 있어서 고려해야 할 사항들에 대하여 잘 정리하고 있습니다. 저희가 새롭게 시작하고자 하는 일에 많은 도움이 되는 내용들이 있어서 나름대로 느끼는바가 많습니다.&lt;/p&gt;&lt;p&gt;그럼 시작...&lt;br&gt;&lt;/p&gt;어느 정도 규모가 있는 소프트웨어 관련 회사라면 생산성, 유지보수성을 높이고 개발자의 학습비용을 줄이기 위해 전사 표준
프레임웍을 도입하고 있습니다. 그리고 잘 아시듯이, 그런 프레임웍들은 대부분 자바의 오픈소스 프레임웍들의 기반으로 해서 추가,
확장 개발되어 있습니다. 그동안 제가 몇 개의 전사표준 프레임웍을 접하면서 최종 어플리케이션 개발자로써 가지게 된 생각을 정리해
봅니다.
&lt;p&gt;&amp;nbsp; 아래 내용은 어느 특정 회사의 프레임웍에만 초점을 두고 있는 내용은 아닙니다. 구체적인 코드의 예까지 들고 싶은 내용도
있지만, 여러 프레임웍에 해당하는 내용일지라도 공개적인 웹사이트에 그렇게 자세한 내용을 올릴 수 있는 전사표준 프레임웍은
오픈소스정책을 펴고 있는 애니프레임 밖에 없습니다.&amp;nbsp; 그래서 지나치게 특정 프레임웍의 대한 비판으로만 해석될까봐 코드 예시는
 이 글에는 포함시키지 않았습니다.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp; 첫째, 기존 오픈소스가 제공하는 있는 기능을 중복구현하거나 감싸서 개발할 때는 그 의도를 어플리케이션 개발자에게 알려야
합니다. 오픈소스에서 유사한 이런 것이 있는데, 이런 이유 때문에 따로 작성했다던지, 래핑을 시켰다는 것을 명시해 두면
어플리케이션 개발자들이 그 모듈을 활용하는 할 때 도움이 될 것입니다.&lt;/p&gt;
&lt;br&gt;&lt;p id=&quot;more128_0&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_0&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_0&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; 예를 들어, apache commons의 유틸리티들을 래핑한 클래스를 작성했다면, &#039;이 클래스는 자주 반복적으로
나타나는 몇 개의 호출패턴을 묶어서 새로운 클래스로 래핑을 했고, 만약 이 클래스에서 수용할 수 없는 기능이 필요할 때는 직접
apache commons의 API를 호출하면 된다&#039;라는 정도의 안내 문구와 내부에서 참조하는 API문서의 링크정도가 제공될 수
있습니다. 그렇게 한다면 개발자는 해당&amp;nbsp; 클래스를 설계자의 의도대로 사용하면서도 추가로 필요한 기능에 대해서도 유연성 있게
대처할 수 있습니다. 그리고 래핑도 아닌 중복된 구현이라면 &#039;널리 쓰이는 xx클래스의 xxx메서드보다 성능비교에서 더 뛰어난
결과가 보여서 이 클래스를 추가했다. 해당 오픈소스 커뮤니티에도 이 사실을 문의를 했고, 만약 다음 버전의 패치에서 우리가
제안한 구현방식이 적용된다면 차후에 이 클래스는 depreciate 될 수도 있다.&#039;라는 식으로 안내를 할 수 있을 것입니다.
개발자들이 이해할 수 있는 명확한 이유를 문서화 해서 &#039;몰라서 그 모듈을 안 쓴 것은 아니다.&#039;것이 전달되어야지 전사 프레임웍을
만드는 팀이 더욱 신뢰를 얻을 수 있습니다. 유명 모듈과 기능이 중복이 되면서도 그 의도를 알 수 없는 코드를 발견하게 되면,
그 코드를 작성한 사람이 작업량을 많아 보이게 해서 성과를 과장해서 인정받을려고 이런 코드를 더 짠 것이 아닐까 하는 의심까지도
생기게 됩니다.&lt;p&gt;&amp;nbsp; 프레임웍에서 추가로 클래스가 하나 늘어날 때의 댓가는 코드 작성 비용 외에도 문서화, 교육, 지원 비용이 있음을 다 들
알고 계실 것입니다. 유명한 공개 모듈을 활용하면 대략적인 안내와 API문서 링크, 참고할 웹페이지와 책목록만 안내 문서에
넣어주면 끝날 일이 중복 구현시에는 새로 API문서 작성, 문의 답변, 디버깅 지원, 추가 확장 등의 짐이 따라&amp;nbsp; 붙게 되어
있습니다. 전사프레임웍은 API는 회사의 자산이자 부채라는 말을 실감할 수 있는 예입니다. &lt;sup&gt;&lt;a id=&quot;footnote_link_37_1&quot; href=&quot;http://www.ksug.org/37#footnote_37_1&quot; onmouseover=&quot;tistoryFootnote.show(this, 37, 1)&quot; onmouseout=&quot;tistoryFootnote.hide(37, 1)&quot; style=&quot;color: rgb(249, 101, 13);&quot;&gt;1&lt;/a&gt;&lt;/sup&gt; 그리고, 동등한 기능이라면 특정 회사 내에서만 쓰는 모듈보다는 회사 밖에서도 많이 쓰이는 모듈이 개발자들의 학습의욕을 더 불러 일으킬 수 있을 것입니다.&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp; 둘째, 사내에서 만든 기존 모듈도 지속적으로 개선하고, 때로는 과감히 버릴 수도 있어야 한다고 생각합니다. 기존 모듈의
가치를 지나치게 높게 평가하지 않고, 인터페이스와 구현을 끊임없이 재검토 되어야 합니다. 팀 내에서 높은 직급의 사람이 만들었던
코드라도 마찬가지어야 할 것입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p id=&quot;more128_1&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_1&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_1&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; 인터페이스를 바꾸지 않고 개선하는 작업은 하위버전 호완성의 문제 없이 지속적으로 할 수 있을 것입니다. 그것을
넘어서서, 기존 모듈과 유사한 기능의 널리 알려진 오픈소스 모듈이 있을 때 기존 인터페이스를 포기할 수도 있어야 한다고
생각합니다. 물론 이미 잘 돌아가는 &amp;nbsp;유지보수 중인 시스템에서도 프레임웍 모듈을 바꾸라는 말은 아닙니다. 다만, 프레임웍을
버전업할 때 기존 개발자들의 학습비용을 이유로 회사 밖에서는 널리 쓰이고 있는 모듈과 그 사용방식의 도입이 잘 되지 않는 
현상을 염려해서 하는 말입니다. 기존 개발자가 새로운 모듈을 학습하는 비용도 고려해야 겠지만, 새로 투입될 개발자들의 학습비용을
생각한다면 되도록 참조자료가 많고 개발 경력자가 많은 모듈이 유리할 것입니다. 이직과 업무 변경이 자주 있는 S/W 업계의
특징을 생각해본다면, 더욱 그러합니다.
&lt;p&gt;&amp;nbsp; 예를 들면 스프링의 새로운 버전에서 지원되는 기능이 기존의 전사표준 프레임웍에도 존재한다면, 과감히 기존 모듈은 시간을
두고 depreciate 시키는 전략을 쓸 수도 있습니다. 이럴 때는 점진적인 업그레이드 전략을 가지고&amp;nbsp; 신,구버전의 방식을
동시에 지원해 나가는 단계도 필요할 것입니다. 물론 기존 운영 중인 시스템의 프레임웍 버전 교체를 하는 상황이 많아서 100%
하위호환성을 가지고 가야하는 경우도 있습니다. 그러나 그렇기 않은 경우라면, 유명 모듈이 존재하는 범용적인 기능 부분에서는
기존의 인터페이스와 설정방식을 살리기 위해 적절한 시점에 모듈을 못 버리는 것이 오히려 더 많은 학습비용을 미래에 남길 것이라고
생각합니다.&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp; 셋째, 프레임웍의 개발단계에서도 &amp;nbsp;결정사항과 주요 설계의 의도들에 대한 것들은 문서로 남겨지고 공유되어서,
 어플리케이션 개발자들의 피드백을 받아야 한다고 생각합니다. 보통 모듈 공개 이후에 개발자들이 웹단의 프레임웍 선택
기준이라던지, 모듈의 설계에 대해서 많이 문의를 합니다.&amp;nbsp; 그 때도 답변 담당자가&amp;nbsp; 검토과정을 알지 못하면 상세한 대답을 하기가
어려울 것입니다. &#039;XX 프레임웍은 검토했던 담당자가 지금 여기에 없어서 저도 자세히는 모르겠네요. &#039;라거나 &#039;지금은 그 때 그
모듈을 작성했던 개발자가 없어서 확실히는 모르겠으나, 제 추측으로는...&#039;라는 내용이 포함된 답변을 본적도 있습니다. 프레임웍
개발팀 내부의 업무 인계나 개발자들의 반복적인 문의를 잘 처리하기 위해서라도 그런 내용의 정리, 공유는 필요합니다. 그리고 그런
문의들은 결정사항이 확정된 후에 그것을 돌이킬 수 없을 때가 아닌, 검토 과정 중에서 받아서 실무 개발자들의 경험을 충분히
활용하고 더 많은 사람들의 지식을 모을 수 있어야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p id=&quot;more128_2&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_2&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_2&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; &quot;Spring MVC 등 다양한 프레임웍을 검토했으나, 웹단의 ajax지원 태그라이브러리에 장점이 있는 프레임웍이 저희 조직이 행하고 있는&lt;span id=&quot;callbacknestwwwksugorg378809&quot; style=&quot;width: 1px; height: 1px; float: right;&quot;&gt;&lt;embed allowscriptaccess=&quot;always&quot; id=&quot;bootstrapperwwwksugorg378809&quot; src=&quot;http://www.ksug.org/plugin/CallBack_bootstrapperSrc&quot; wmode=&quot;transparent&quot; type=&quot;application/x-shockwave-flash&quot; enablecontextmenu=&quot;false&quot; flashvars=&quot;&amp;amp;callbackId=wwwksugorg378809&amp;amp;host=http://www.ksug.org&amp;amp;embedCodeSrc=http%3A%2F%2Fwww.ksug.org%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fcfs.tistory.com%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D37%26callbackId%3Dwwwksugorg378809%26destDocId%3Dcallbacknestwwwksugorg378809%26host%3Dhttp%3A%2F%2Fwww.ksug.org%26float%3Dleft&quot; swliveconnect=&quot;true&quot; height=&quot;1&quot; width=&quot;1&quot;&gt;&lt;/span&gt;
유형의 어플리케이션 개발에 가장 생산성 향상을 가져다 줄 것으로 판단하여 Struts2를 기반으로 하여 만들어졌습니다.&quot; 정도의
내용이 프레임웍 안내 문서에 포함되어 있다면, 개발자들의 의구심과 고민을 더 줄여줄 수 있지 않을까요? 그리고 &#039;저희 팀에서
이미 Struts2의 태그라이브러리를 활용한 샘플들이 많으므로 배포 때 같이 포함되면 다른 팀에도 도움이 될 것
같습니다&#039;,&#039;현재 코드 중 이런 부분은 훨씬 짧게 줄일 수 있습니다&#039; 라는 것 같은 피드백을 미리 얻을 수도 있다면 훨씬 더
개발과정이 수월해 질 것 입니다.&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp; 넷째,&amp;nbsp; 배포되는 모듈과 샘플들은&amp;nbsp; 최종 확정 전에 엄격한 설계 검토와 코드리뷰가 이루어 져야 합니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p id=&quot;more128_3&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_3&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_3&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; 큰 틀의 설계는 한번 확정되면 그 유산을 계속 짊어지고 가야하니 더욱 더 신중해야 합니다. Spring-batch
프로젝트의 예를 봐도 작년에 나왔던 마일스톤 버전의 인터페이스와 현재의 버전은 확연히 그 모습이 다릅니다. 최고의 개발자들이
모인 스프링개발 조직에서도 숙고와 재검토를 반복한다고 보여집니다.
&lt;p&gt;&amp;nbsp;  그리고 구현에서도 바람직하지 않은 코드가 배포되었을 때도 문제 해결 지원, 재작성, 수정 비용 뿐만이 아니라, 프레임웍
개발팀의 신뢰하락이라는 치명상을 입힐 수도 있습니다. 큰 문제가 안 되는 사소한 코드라도, 일반적인 Java의 코딩원칙과 명백히
어긋나는 코드를 발견하게 되면, 다른 잘 된 부분의 코드들까지도 다 평가절하되어 버릴 수 있습니다. &amp;nbsp; 언젠가 Effective
Java에 나오는 내용조차도 지키지 않은 코드들을 프레임웍 내부코드에서 만난 적도 있었는데, 프레임웍 개발팀 중에 한명이라도
이런 기초적인 것도 모르는 사람이 있으니 어딘가에 또 문제가 될 수 있는 코드가 있지 않을까 하는 걱정이 생기더군요. 프레임웍
개발팀은&amp;nbsp; 회사전체에서 실력있는 분들이 모인 곳이라고 알고 있으니, 서로 검토만 한다면 일반 개발자들보다 훨씬 높은 품질의
코드를 만들 수 있을 것입니다. &amp;nbsp;그리고 PMD, findBug, JDepend 같은 코드검사툴도 적극활용하는 것이 좋겠고,
이미 프레임웍 개발팀정도면 대부분 그렇게 하고 있는 것으로 알고 있습니다.&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;&amp;nbsp; 다섯째, 프레임웍을 현장에서 적용할 때 선택할 수 있는 사안들이 유연하게 제공되고, 각각의 장단점과 선택의 기준등이
제시되었으면 좋겠습니다. 전사표준 프레임은 개발자들을 가두어 두는 벽이 되어서는 안 되고, 든든하게 딛고 뛸 수 있는 바닥이
되어야 할 것입니다. 그래서 그런 프레임웍에 모듈의 조합이나 설정 파라미터 등에 있어서 다양한 선택이 존재하는 것은 당연한
일입니다. 그러나 각 프로젝트마다 많은 선택의 조합들을 다 검토할 수 있는 여력이 안 되고, 구체적인 선택기준이 없다면 오히려
그런 선택의 폭들은 짐이 됩니다. 프로젝트에서 목소리 큰 사람의 의견대로 흘러가서 동의하지 못하는 구성원들이 생긴다면 갈등의
소지까지도 될 수 있겠습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p id=&quot;more128_4&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_4&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_4&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; 어떤 프레임웍에서 DB access Layer를 Hibenate나 iBatis를 다 쓸 수 있게 안내하고 있다면,
&#039;기술 리더를 할 사람 중에 ORM을 이용한 개발경험이 없고, 기존 Legacy시스템의 SQL 쿼리를 바로 활용할 수 있는
상황이면 iBatis가 유리하다&#039;라는 식의 안내가 자세히 들어간 적용가이드, 실무적용 사례 등이 제공될 수 있을 것입니다.
선택을 하기 위한 점수채점표, 체크리스트 등이 제공될 수 있다면 더욱 유용할 것입니다.
&lt;/div&gt;&lt;br&gt;
&lt;p&gt;&amp;nbsp; 여섯번째, 오픈 소스 프레임웍을 매개로 조직의 경계를 넘어선 공동작업을 시도해 보아야 한다고 생각합니다. 회사와 업계를
막론하고 Java 오픈소스 기반의 프레임웍들은 많이 쓰이고 있습니다. 그래서 많은 조직들에서 같은 고민들을 조직마다 따로 동시에
하고 있을 것으로 추측됩니다. 이런 상황에서 적용사례, 활용팁, 문제해결 사례, 프레임웍 간 비교검토 결과 등의 자료 공유와
코드 공유, 공동의 교육과정 개설 같은 일이 이루어 질 수 있다면 상호이익이 될 것입니다. .&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;&lt;p id=&quot;more128_5&quot; class=&quot;moreless_fold&quot;&gt;&lt;span style=&quot;cursor: pointer;&quot; onclick=&quot;toggleMoreLess(this, &#039;128_5&#039;,&#039; more.. &#039;,&#039; less.. &#039;); return false;&quot;&gt; more.. &lt;/span&gt;&lt;/p&gt;&lt;div id=&quot;content128_5&quot; class=&quot;moreless_content&quot; style=&quot;display: none;&quot;&gt; &lt;a class=&quot;external&quot; title=&quot;http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2538273&amp;amp;amp;CategoryNumber=001001025011&quot; href=&quot;http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=2538273&amp;amp;amp;CategoryNumber=001001025011&quot;&gt;위키노믹스&lt;/a&gt;라
는 책의 6장을 보면, 관련 업계 전체가 협업한 사례로 인간 유전자 지도 연구 프로젝트가 나와 있습니다. 이것은 수많은
제약회사에서 독점적으로 진행하던 유전자 프로젝트를 포기하고 개방적인 협업에 동참하도록 한 중요한 분기점이 되었다고 합니다. 
어짜피 제약회사의 수익은 신약개발을 통해 이루어지는 것이기 때문에 그에 기초에 되는 유전자 지도를 공동으로 연구하면 들어갈
비용을 줄일 수 있다고 생각한 것이죠. 유전자 염기서열이 완제품이 아닌 재료로 쓰일 자원인것과 마찬가지로, 전사 프레임웍은
최종적으로 수익을 창출하는 서비스 개발이나 사업수행을 위한 것입니다. 내부의 성과물을 밖으로 꺼내놓고 외부 의견을 수용할 수
있는 조직이라면 외부인재 활용하면서 &amp;nbsp;비용을 절감하고 &amp;nbsp;혁신속도 향상시킬 수 있는 보답을 얻을 것입니다.
&lt;p&gt;&amp;nbsp; 예를 들면 웹단의 프레임웍을 비교를 하는 보고서를 써야 한다면 다른 업체에서 내놓은 보고서를 참고할 수 있다면&amp;nbsp; 더 깊이 있는 검토를 할 수 있을 것입니다.&lt;sup&gt;&lt;a id=&quot;footnote_link_37_2&quot; href=&quot;http://www.ksug.org/37#footnote_37_2&quot; onmouseover=&quot;tistoryFootnote.show(this, 37, 2)&quot; onmouseout=&quot;tistoryFootnote.hide(37, 2)&quot; style=&quot;color: rgb(249, 101, 13);&quot;&gt;2&lt;/a&gt;&lt;/sup&gt;&amp;nbsp; 중복해서 쓰지 말아야할 것은 코드뿐만이 아니고, 자료작성, 문제해결 탐색에 쓰는 시간도 마찬가지 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 그런 측면에서 삼성SDS 애니프레임웍의 오픈소스 전략이나 대우정보시스템 JCF팀의 블로그( &lt;a href=&quot;../../../../&quot;&gt;http://blog.dev.daewoobrenic.co.kr/&lt;/a&gt;&amp;nbsp;) 를 통한 활용 팁 전파는 바람직해 보입니다&lt;/p&gt;&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;&amp;nbsp; 지금까지 나온 내용을 정리해보면 다음과 같습니다. 오픈소스 모듈을 래핑하거나 중복된 기능을 구현할 때는 의도를
개발자에게 알리고, 기존 모듈에 대해서도 개선을 해나가면서 때로는 과감히 범용적인 모듈로 교체할 수 있어야 합니다. 그리고
개발과정 중에서도 주요 결정사항과 설계안을 공유해서 피드백을 받고, 최종배포 전에는 설계안과 코드를 엄격하게 검증해야 합니다.
그리고 배포 후에는 유연한 선택 사항들과 구체적인 선택 기준을 제공하는 적용가이드를 제공하고, 회사 조직의 경계를 넘어선 협업도
모색해 보는 것이 좋습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp; 이런 것들을 &amp;nbsp;이루는데 기술적으로는 스프링 프레임웍이 든든한 토대가 되어줄 것은 확실합니다. 잘 아시는 것처럼&amp;nbsp; 유연한 구조로 인한 확장성, &lt;a class=&quot;external&quot; title=&quot;http://www.springframework.org/projects&quot; href=&quot;http://www.springframework.org/projects&quot;&gt;Spring portfoilo&lt;/a&gt;에
서 제공하는 폭넓은 기능의 모듈들, 빠른 발전 속도와 안정된 하위호환성, 그리고 세계적으로 많은 사용자로 인한 튼튼한 사용자 층
등이 그 이유입니다. 그리고 스프링프레임웍의 공식포럼들을 이용해서 외국개발자들과도 정보를 주고 받음과 동시에 우리 KSUG(&lt;a href=&quot;http://forum.ksug.org/&quot;&gt;http://forum.ksug.org&lt;/a&gt; )의 포럼을 통해서도 조직의 벽을 넘어서서 성과물 공유를 할 수 있을 것입니다.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.ksug.org/37&quot;  target=&quot;_blank&quot;&gt;원문보기&lt;/a&gt;&lt;br&gt;&lt;/p&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<category>jcf</category>
			<category>ksug</category>
			<category>spring</category>
			<category>전사표준프레임워크</category>
			<author>(서경진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/128</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/KSUG%EC%97%90%EC%84%9C-%ED%9A%8C%EC%82%AC-%EC%A0%84%EC%B2%B4%EA%B0%80-%EC%93%B0%EB%8A%94-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8D%EC%9D%84-%EB%A7%8C%EB%93%9C%EB%8A%94-%ED%8C%80%EC%97%90-%EB%B0%94%EB%9D%BC%EB%8A%94-%EC%A0%90%EC%9D%B4%EB%9D%BC%EB%8A%94-%EC%A2%8B%EC%9D%80-%EA%B8%80-%EC%86%8C%EA%B0%9C%ED%95%A9%EB%8B%88%EB%8B%A4#entry128comment</comments>
			<pubDate>Wed, 23 Jul 2008 10:33:36 +0900</pubDate>
		</item>
		<item>
			<title>CoC를 이용하여 iBATIS 설정 간소화하기</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/CoC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-iBATIS-%EC%84%A4%EC%A0%95-%EA%B0%84%EC%86%8C%ED%99%94%ED%95%98%EA%B8%B0</link>
			<description>서브모듈 별로 분리하여 시스템을 개발하려면 설정파일을 잘 분리해야 한다.&lt;br&gt;iBATIS 인 경우는 sqlmap-config 파일에 모든 mapping 파일을 등록해야 하므로 &lt;br&gt;사실상 설정 파일을 모듈별로 분리하기는 어렵다.&lt;br&gt;이 부분에 대하여 고민하고 있던 중에 Spring 프레임워크가 구원투수로 나섰다.&lt;br&gt;&lt;br&gt;Spring 버전 2.5.3을 이용하면 이 문제를 깔끔(?)하게 처리할 수 있다.&lt;br&gt;&lt;br&gt;새롭게 추가된 SqlMapClientFactoryBean의 mappingLocations 프로퍼티를 통해&lt;br&gt;sqlmap mapping 파일을 일일히 지정하지 않고 패턴을 이용하여 일괄적으로 지정할 수 있게 되었다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;lt;bean id=&quot;sqlMapClient&quot; class=&quot;org.springframework.orm.ibatis.SqlMapClientFactoryBean&quot;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;property name=&quot;configLocation&quot; value=&quot;classpath:sqlmap-config.xml&quot; /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;property name=&quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;mappingLocations&lt;/span&gt;&quot; value=&quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;classpath:**/sqlmap/*.xml&lt;/span&gt;&quot;/&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;property name=&quot;dataSource&quot; ref=&quot;dataSource&quot; /&amp;gt;&lt;br&gt;&amp;lt;/bean&amp;gt; &amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;br&gt;&lt;br&gt;위와 같이 설정하면 sqlmap-config 파일은 아래와 같이 단순해 진다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br&gt;&amp;lt;!DOCTYPE sqlMapConfig PUBLIC &quot;-//ibatis.apache.org//DTD SQL Map Config 2.0//EN&quot; &quot;http://dev.daewoobrenic.co.kr/dtd/sql-map-config-2.dtd&quot;&amp;gt;&lt;br&gt;&lt;br&gt;&amp;lt;sqlMapConfig&amp;gt; &amp;nbsp; &amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt;settings useStatementNamespaces=&quot;true&quot; cacheModelsEnabled=&quot;false&quot;/&amp;gt;&lt;br&gt;&amp;lt;/sqlMapConfig&amp;gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;주의해야 할 것은&amp;nbsp; iBATIS 2.3.2 이상의 버전을 사용해야 하며&lt;br&gt;DTD 파일에서 sqlMap 을 필수에서 옵션으로 변경해 주어야 한다.&lt;br&gt;우선 테스트를 위해서 src 디렉토리에 com.ibatis.sqlmap.engine.builder.xml 팩키지를 &lt;br&gt;만들고 기존의 sql-map-config-2.dtd&amp;nbsp; 복사하여 아래와 같이 변경을 하였다.&lt;br&gt;&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;&amp;lt;!ELEMENT sqlMapConfig (properties?, settings?, resultObjectFactory?, typeAlias*, typeHandler*, transactionManager?, &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;sqlMap*&lt;/span&gt;)+&amp;gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;아직까지는 DTD를 수정해야 하는 번거러움이 있지만&lt;br&gt;개발자 분들의 노가다를 줄이는데 조금이라도 도움이 되었으면 좋겠다^^&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<category>coc</category>
			<category>ibatis</category>
			<category>spring</category>
			<author>(장의진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/127</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/CoC%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-iBATIS-%EC%84%A4%EC%A0%95-%EA%B0%84%EC%86%8C%ED%99%94%ED%95%98%EA%B8%B0#entry127comment</comments>
			<pubDate>Mon, 14 Jul 2008 14:01:58 +0900</pubDate>
		</item>
		<item>
			<title>Character Set과 Encoding 이해하기</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/Character-Set%EA%B3%BC-Encoding-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
			<description>&lt;h3&gt;&lt;span class=&quot;mw-headline&quot;&gt;문자셋과 인코딩의 정의&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;문자셋 (charset, Character Set)
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;하나의 언어권에서 사용하는 언어를 표현하기 위한 모든 문자(활자)의 모임을 문자셋(charater set)이라고 한다. 다시 말하면 우리가
얘기하는 언어를 책으로 출판할 때 필요한 문자(활자)를 모두 모은 것이라고 생각하면 된다. 추가적으로 부호와 공백 등과 같은 특수
문자도 문자셋에 포함된다.
&lt;/dd&gt;&lt;dd&gt;영어의 경우 알파벳 대소문자와 특수 문자 등으로 간단하게 문자셋을 구성할 수 있지만 한글의 경우 출판에서 가,나,다 등으로 출판함으로 훨씬 다양한 문자셋을 가지고, 또한 한자를 병행해서 사용함으로 문자셋의 범위는 더욱 넓어진다.
&lt;ul&gt;&lt;li&gt;추상적인 글자 셋은 여러 개의 인코딩을 가질 수 있다.
&lt;/li&gt;&lt;li&gt;MIME 문자셋은 IANA에서 정의하며 인터넷 및 XML 파일에서 사용한다.
&lt;/li&gt;&lt;/ul&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt;인코딩 (encoding)
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;인코딩은 문자셋을 컴퓨터가 이해할 수 있는 바이트와 매핑하는 규칙이다. 예를 들면 ASCII Code에서 A,B,C
등은 문자셋이고 A는 코드 65, B는 코드 66 등 바이트 순서와 매핑한 것이 인코딩이다. 따라서 문자셋을 어떻게 매핑하느냐에
따라 하나의 문자셋이 다양한 인코딩을 가질 수 있다.
&lt;ul&gt;&lt;li&gt;추상적인 문자셋을 구체적인 bit-stream으로 표기하는 방법
&lt;/li&gt;&lt;li&gt;여러가지 문자셋을 동시에 표시할 수 있다.
&lt;/li&gt;&lt;li&gt;대부분의 인코딩에서는 대소문자를 구분하지 않는다.
&lt;/li&gt;&lt;li&gt;대한민국 문자셋(charater set)에서 가장 많이 사용하는 인코딩은 &quot;UTF-8&quot;, &quot;KSC5601&quot;, &quot;ISO-8859-1&quot; 이다.
&lt;/li&gt;&lt;/ul&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt;문자셋(인코딩)의 예
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;한글 : 8bit KSC5601 (8bit EUC-KR, 7bit ISO-2022-KR, ISO-2022-Int)
&lt;/li&gt;&lt;li&gt;영문 : KSC5636, US-ASCII (둘 간의 차이는 화페 단위 뿐)
&lt;/li&gt;&lt;li&gt;한글+영문 : KSC5861 (EUC-KR), KSC5636 + KSC5601를 모두 포함한다.
&lt;/li&gt;&lt;li&gt;유니코드 : 4byte Unicode &amp;lt; ISO-10646 UCS (ISO-8859-1, UTF-8, UTF-16)
&lt;/li&gt;&lt;/ul&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;p&gt;문자셋과 인코딩은 동일한 명칭을 가질 수 있어 서로 혼용하여 사용되는 경우가 많다.&lt;br&gt;
EUC-KR은 원래 유닉스용 표준이었는데 인터넷으로 확장되어 사용된다.&lt;br&gt;
KSC5601은 인터넷에서 원활한 한글(완성형) 사용을 위하여 정의된 표준이다.&lt;br&gt;
EUC (Extended UNIX Code), UTF (UCS Transformation format)&lt;br&gt;
&lt;/p&gt;
&lt;h3&gt;&lt;span class=&quot;mw-headline&quot;&gt;기본 인코딩&lt;/span&gt;&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;Windows : 시스템 언어와 관련된 코드 페이지를 따름
&lt;ul&gt;&lt;li&gt;영문 Windows는 CP1252 인코딩을 사용
&lt;/li&gt;&lt;li&gt;한글 Windows는 MS949 인코딩을 사용
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;Unix : LANG 환경 변수로 지정된 로케일에 해당하는 인코딩
&lt;ul&gt;&lt;li&gt;Solaris는 LANG 환경 변수가 ko, ko_KR일 경우 EUC-KR 인코딩을 사용
&lt;/li&gt;&lt;li&gt;HP는 LANG 환경 변수가 ko_KR, ko_KR.eucKR일 경우 EUC-KR 인코딩을 사용
&lt;/li&gt;&lt;li&gt;Unix에서 locale -a 명령을 사용하여 LANG 환경 변수에 지정 가능한 문자셋을 확인할 수 있다.
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;ul&gt;&lt;li&gt;HTML : ISO-8859-1와 ISO-10646
&lt;/li&gt;&lt;li&gt;XML : UTF-8
&lt;/li&gt;&lt;li&gt;웹 브라우져 : 내부적으로 모두 유니코드로 처리를 한다.&lt;br&gt;
&lt;/li&gt;&lt;li&gt;HTTP/1.0 : ISO-8859-1
&lt;/li&gt;&lt;li&gt;HTTP (URL,URI) : US-ASCII, %hexadecimal_code, JavaScript escape() 함수 사용
&lt;/li&gt;&lt;li&gt;Java : 유니코드 2.0
&lt;/li&gt;&lt;li&gt;직렬화된 Java Class : UTF-8
&lt;/li&gt;&lt;li&gt;J2EE : ISO-8859-1
&lt;/li&gt;&lt;li&gt;Oracle	: UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;http://www.jopenbusiness.com/mediawiki/index.php/%EA%B7%B8%EB%A6%BC:Charset_sample.png&quot;  class=&quot;image&quot; title=&quot;웹 서비스 표준 인코딩과 포탈에서 필요한 인코딩&quot;&gt;&lt;img alt=&quot;웹 서비스 표준 인코딩과 포탈에서 필요한 인코딩&quot; src=&quot;http://www.jopenbusiness.com/mediawiki/images/4/44/Charset_sample.png&quot; border=&quot;0&quot; height=&quot;372&quot; width=&quot;782&quot;&gt;&lt;/a&gt; &lt;br&gt;&lt;/p&gt;&lt;br&gt;&lt;br&gt;&lt;h3&gt;&lt;span class=&quot;mw-headline&quot;&gt;다양한 환경에서 인코딩 설정&lt;/span&gt;&lt;/h3&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;웹 브라우져 설정&lt;/span&gt;&lt;/h4&gt;
&lt;ol&gt;&lt;li&gt;&quot;도구 -&amp;gt; 인터넷 옵션 -&amp;gt; 언어&quot; 메뉴를 선택한다.
&lt;/li&gt;&lt;li&gt;영어[en]와 한국어[ko]를 추가하고 원하는 언어를 가장 상단에 위치한다.
&lt;/li&gt;&lt;/ol&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;JVM 설정&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;일반적으로 LANG 환경 변수를 설정해 주면 자동으로 설정이 된다.
&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;locale -a                               Solaria unix 명령어로 지원 가능한 encoding을 확인한다.&lt;br&gt;env  LANG  ko                           csh에서 Encoding을 설정한다. (KSC5601, EUC-KR)&lt;br&gt;LANG=ko                                 ksh에서 Encoding을 설정한다. (KSC5601, EUC-KR)&lt;br&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;JVM 옵션 설정 (UTF-8, ISO-8859-1, KSC5601)
&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;-Dfile.encoding=8859_1                  필수 항목&lt;br&gt;-Dfile.client.encoding=8859_1&lt;br&gt;-Dclient.encoding.override=8859_1       JVM 버전에 따라 (사용안함)&lt;br&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;JSP를 사용하여 JVM 옵션 확인 (encoding.jsp)
&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;file.encoding = &amp;lt;%= System.getProperty(&quot;file.encoding&quot;) %&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;file.client.encoding = &amp;lt;%= System.getProperty(&quot;file.client.encoding&quot;) %&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;client.encoding.override = &amp;lt;%= System.getProperty(&quot;client.encoding.override&quot;) %&amp;gt;&amp;lt;br&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;HTML 설정&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;HTML 파일을 UTF-8로 만들어 저장한다.
&lt;/p&gt;
&lt;pre&gt;&amp;lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;XML 설정&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;XML 파일을 UTF-8로 만들어 저장한다.
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; ?&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;JSP 설정&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;JSP 파일을 UTF-8로 만들어 저장한다.
&lt;/p&gt;
&lt;pre&gt;&amp;lt;%@ page pageEncoding=&quot;UTF-8&quot; %&amp;gt;&lt;br&gt;&amp;lt;%@ page contentType=&quot;text/html;charset=UTF-8&quot; %&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;Servlet 설정&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;HTTP 요청의 인코딩 지정
&lt;/p&gt;
&lt;pre&gt;request.setCharacterEncoding(&quot;UTF-8&quot;);&lt;br&gt;&lt;/pre&gt;
&lt;p&gt;HTTP 응답의 인코딩 지정
&lt;/p&gt;
&lt;pre&gt;response.setContentType(&quot;text/html; charset=UTF-8&quot;);&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;web.xml 설정&lt;/span&gt;&lt;/h4&gt;
&lt;pre&gt;&amp;lt;mime-mapping&amp;gt;&lt;br&gt;    &amp;lt;extension&amp;gt;html&amp;lt;/extension&amp;gt;&lt;br&gt;    &amp;lt;mime-type&amp;gt;text/html;charset=UTF-8&amp;lt;/mime-type&amp;gt;&lt;br&gt;&amp;lt;/mime-mapping&amp;gt;&lt;br&gt;&lt;/pre&gt;
&lt;h4&gt;&lt;span class=&quot;mw-headline&quot;&gt;Default Oracle Database 문자셋&lt;/span&gt;&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;Default Oracle Database 문자셋 : UTF-8 (AL32UTF8), 한국에서는 KSC5601 (KO16KSC5601)
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;&lt;ul&gt;&lt;li&gt;AL32UTF8, KO16KSC5601 (KSC5601), WE8ISO8859P1 (8859_1)
&lt;/li&gt;&lt;/ul&gt;
&lt;/dd&gt;&lt;/dl&gt;
&lt;ul&gt;&lt;li&gt;Default Oracle Database 문자셋 확인 방법
&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;sqlplus system/manager&lt;br&gt;&lt;br&gt;select parameter || &#039; : &#039; || value parameter_value&lt;br&gt;  from NLS_DATABASE_PARAMETERS&lt;br&gt; where parameter = &#039;NLS_CHARACTERSET&#039;&lt;br&gt;    or parameter = &#039;NLS_NCHAR_CHARACTERSET&#039;;&lt;br&gt;&lt;br&gt;select name || &#039; : &#039; || substr(value$, 1, 40) parameter_value&lt;br&gt;  from sys.props$&lt;br&gt; where name = &#039;NLS_CHARACTERSET&#039;;&lt;br&gt;&lt;br&gt;select parameter || &#039; : &#039; || value parameter_value&lt;br&gt;  from NLS_INSTANCE_PARAMETERS, V$NLS_PARAMETERS, NLS_SESSION_PARAMETERS;&lt;br&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;Oracle Database 문자셋 변경 방법
&lt;/li&gt;&lt;/ul&gt;
&lt;dl&gt;&lt;dd&gt;환경 변수 또는 %ORACLE_HOME%/dbs/init[SID].ora 을 설정한다.
&lt;/dd&gt;&lt;/dl&gt;
&lt;pre&gt;NLS_LANG=&#039;American_America.Ko16ksc5601&#039;&lt;br&gt;ORA_NLS33=&#039;$ORACLE_HOME/ocommon/nls/admin/data&#039;&lt;br&gt;NLS_DATE_FORMAT=&#039;YYYY-MM-DD&#039;&lt;br&gt;&lt;/pre&gt;
&lt;ul&gt;&lt;li&gt;DriverManager에서 문자셋 설정 방법
&lt;/li&gt;&lt;/ul&gt;
&lt;pre&gt;java.util.Properties props = new java.util.Properties();&lt;br&gt;props.put(&quot;charSet&quot;, &quot;KSC5601&quot; );&lt;br&gt;DriverManager.getConnection(dbUrl, props);&lt;br&gt;&lt;/pre&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<category>charater set</category>
			<category>encoding</category>
			<author>(서경진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/126</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/Character-Set%EA%B3%BC-Encoding-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0#entry126comment</comments>
			<pubDate>Fri, 11 Jul 2008 13:36:04 +0900</pubDate>
		</item>
		<item>
			<title>[eclipse] Jeus4.2 , eclipse3.3 Remote Debugging 설정방법</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/eclipse-Jeus42-eclipse33-Remote-Debugging-%EC%84%A4%EC%A0%95%EB%B0%A9%EB%B2%95</link>
			<description>&lt;h6&gt;&lt;font size=&quot;4&quot;&gt;설정&lt;/font&gt;&lt;br&gt;&lt;/h6&gt;
&lt;ol&gt;&lt;li&gt;Copy C:\Jeus42\bin\jeus.bat -&amp;gt; 
C:\Jeus42\bin\start_jeus_for_debugging.bat&lt;/li&gt;&lt;li&gt;
&lt;p&gt;아래 색칠된 부분 추가(아래 추가된 부분만 보여줌)&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;background-color: rgb(174, 255, 102);&quot;&gt;call wsboot&lt;/span&gt; &lt;span style=&quot;color: rgb(255, 51, 153);&quot;&gt;-&amp;gt; webtob 실행시 추가&lt;/span&gt;&lt;br&gt;java &lt;span style=&quot;background-color: rgb(174, 255, 102);&quot;&gt;-classic -Xdebug -Xnoagent 
-Xrunjdwp:transport=dt_socket,address=8888,suspend=n,server=y -server&lt;/span&gt; 
-Xbootclasspath/p:&quot;%JEUS_HOME%\lib\system\extension.jar&quot;;&lt;br&gt;&quot;%JEUS_HOME%\lib\system\jaas.jar&quot; 
-classpath &quot;%JEUS_HOME%\lib\system\bootstrap.jar&quot; -Djeus.session.version=SOCKET 
-Djava.library.path=&quot;%PATH%;%JEUS_HOME%\lib\system&quot; -Djeus.home=&quot;%JEUS_HOME%&quot; 
-Djeus.servlethome=&quot;%SERVLET_HOME%&quot; -Djeus.ejbhome=&quot;%EJB_HOME%&quot; 
-Djeus.clienthome=&quot;%CLIENT_HOME%&quot; -Djeus.config.home=&quot;%JEUS_HOME%\config&quot; 
-Djeus.log.home=&quot;%JEUS_HOME%\logs&quot; -Djeus.earhome=&quot;%EAR_HOME%&quot; 
-DJEUS_WSDIR=&quot;%JEUS_HOME%\webserver&quot; 
-Djava.naming.factory.initial=jeus.jndi.JNSContextFactory 
-Djava.naming.factory.url.pkgs=jeus.jndi.jns.url 
-Djeus.baseport=&quot;%JEUS_BASEPORT%&quot; -Djeus.tm.checkReg=true 
-Djeus.ejb.classloadingmode=JAR jeus.server.JeusBootstrapper &lt;span style=&quot;background-color: rgb(174, 255, 102);&quot;&gt;-xml -U제우스관리자ID -P제우스관리자비밀번호&lt;/span&gt; 
%*&lt;/p&gt;&lt;/li&gt;&lt;li&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 51, 153);&quot;&gt;-&amp;gt; address=8888은 eclipse에서 리모트 연결할 
포트를 선택해서 설정해준다.&lt;/span&gt;&lt;br&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;
&lt;p&gt;C:\Jeus42\bin\stop_jeus_for_debuggin.bat 작성&lt;/p&gt;
&lt;p&gt;call wsdown -i &lt;span style=&quot;color: rgb(255, 51, 153);&quot;&gt;-&amp;gt; webtob 실행시 
실행중지&lt;/span&gt;&lt;br&gt;jeusadmin &amp;lt;노드명&amp;gt; jeusexit -U제우스관리자ID -P제우스관리자비밀번호&lt;/p&gt;&lt;/li&gt;&lt;li&gt;
&lt;p&gt;Jeus42\config\JEUSMain.xml 수정&lt;/p&gt;
&lt;p&gt;컨테이너 이름을 default로 설정&lt;/p&gt;
&lt;p&gt;&amp;lt;engine-container&amp;gt;&amp;lt;name&amp;gt;&lt;span style=&quot;color: rgb(212, 26, 1);&quot;&gt;&lt;b&gt;default&lt;/b&gt;&lt;/span&gt;&amp;lt;/name&amp;gt;...&amp;lt;/engine-container&amp;gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;
&lt;p&gt;eclipse에서 Run External Tools &amp;gt; Open External Tools Dialog... &amp;gt; Program 
&amp;gt; New&lt;/p&gt;
&lt;p&gt;Main Tab : Location 에 C:\Jeus42\bin\start_jeus_for_debugging.bat 선택&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Working Directory 에 디버깅할 프로젝트 선택(Jeus에서 디버깅할 Web App 
prj.)&lt;/p&gt;
&lt;p&gt;다시 New&lt;/p&gt;
&lt;p&gt;Main Tab : Location 에 C:\Jeus42\bin\stop_jeus_for_debugging.bat 선택&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Working Directory 에 디버깅할 프로젝트 선택(Jeus에서 디버깅할 Web App 
prj.)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;
&lt;p&gt;eclipse에서 Run &amp;gt; Open Debug Dialog... &amp;gt; Remote Java Application&lt;/p&gt;
&lt;p&gt;Connect Tab : Name 에 Jeus Debug 입력&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; Project 에 5.에서 선택한 프로젝트명 선택&lt;/p&gt;&lt;/li&gt;&lt;/ol&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; Connection Type : Standart(Socket Attach)&lt;br&gt;&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; Connection Properties : Host 에 Jeus 서버 주소, Port에 
2.에서 address에 설정해준 포트(8888) 입력&lt;/p&gt;
&lt;h6&gt;&lt;font size=&quot;4&quot;&gt;Debugging&lt;/font&gt;&lt;br&gt;&lt;/h6&gt;
&lt;ol&gt;&lt;li&gt;Run External Tools &amp;gt; Open External Tools Dialog... 에서 
start_jeus_for_debuggin 선택 후 Run 버튼 클릭 -&amp;gt; Consol창에서 Jeus 정상부팅확인(혹은 설정 5에서 설정 
후 Run 버튼 클릭)&lt;br&gt;&lt;/li&gt;&lt;li&gt;Run &amp;gt; Open Debug Dialog... 에서 Remote Java Application &amp;gt; Jeus Debug 선택 
후&amp;nbsp; Debug 버튼 클릭 -&amp;gt; Debug perspective 에서 정상적으로 연결되었는지 확인(혹은 설정 6에서 설정 후 Debug 
버튼 클릭,정상 연결되었을 경우 Jeus Thread 리스트를 Debug View에서 볼 수 있다.)&lt;/li&gt;&lt;li&gt;한번 실행 이후엔 Run History, Debug History에서 간단하게 실행가능&lt;br&gt;&lt;/li&gt;&lt;li&gt;Debugging할 파일에 Break Point 설정 후 Debugging&lt;br&gt;&lt;/li&gt;&lt;/ol&gt;
&lt;h6&gt;&lt;font size=&quot;4&quot;&gt;참고&lt;/font&gt;&lt;br&gt;&lt;/h6&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class=&quot;con_link&quot; title=&quot;http://openframework.or.kr/JSPWiki/Wiki.jsp?page=JeusRemoteDebugging&quot; href=&quot;http://openframework.or.kr/JSPWiki/Wiki.jsp?page=JeusRemoteDebugging&quot; target=&quot;_blank&quot;&gt;http://openframework.or.kr/JSPWiki/Wiki.jsp?page=JeusRemoteDebugging&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>Tools</category>
			<category>eclipse3.3</category>
			<category>Jeus4.2</category>
			<category>RemoteDebugging</category>
			<author>(서경진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/125</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/eclipse-Jeus42-eclipse33-Remote-Debugging-%EC%84%A4%EC%A0%95%EB%B0%A9%EB%B2%95#entry125comment</comments>
			<pubDate>Thu, 10 Jul 2008 09:42:19 +0900</pubDate>
		</item>
		<item>
			<title>좋은 사회를 만드는 기술^^</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%A2%8B%EC%9D%80-%EC%82%AC%ED%9A%8C%EB%A5%BC-%EB%A7%8C%EB%93%9C%EB%8A%94-%EA%B8%B0%EC%88%A0</link>
			<description>요즘 몇몇 똑똑한(?) 대학생들은 자동으로 수강신청을 해주는 프로그램을 &lt;br&gt;만들어서 땀흘리지 않고 수강신청을 하려고 하고&lt;br&gt;이로 인해 서버의 부하가 발생하고 땀 흘려 수강신청하려는 선량한 학생들이&lt;br&gt;피해를 입는다고 합니다.&lt;br&gt;&lt;br&gt;이 문제를 해결할 수 있는 방법은 여려가지가 있겠지만 &lt;br&gt;Struts2&amp;nbsp; 웹프레임워크를사용하는 경우는&lt;br&gt;Token Intercept를 사용하면 쉽게 문제를 해결할 수 있습니다.&lt;br&gt;&lt;a href=&quot;http://struts.apache.org/2.x/docs/token-interceptor.html&quot;  target=&quot;_blank&quot;&gt;http://struts.apache.org/2.x/docs/token &amp;middot;&amp;middot;&amp;middot; tor.html&lt;/a&gt;&lt;br&gt;&amp;nbsp;&lt;br&gt;Back, Refresh 혹은 버튼 더블클릭으로 인한 동일한 폼데이타의 중복전송도&lt;br&gt;방지할 수 있겠네요^^&lt;br&gt;&lt;br&gt;설정방법은 아래와 같습니다. &lt;br&gt;&lt;br&gt;&lt;div style=&quot;padding: 10px; background-color: rgb(250, 255, 169);&quot;&gt;1. Struts 설정파일에 Token Interceptor를 등록한다.&lt;br&gt;&lt;br&gt;&amp;lt;action name=&quot;transfer&quot; class=&quot;...OOOAction&quot;&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;interceptor-ref name=&quot;defaultStack&quot;/&amp;gt;&lt;br&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;&amp;nbsp;&amp;lt;interceptor-ref name=&quot;token&quot;/&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;&amp;lt;result name=&quot;invalid.token&quot;&amp;gt;doublePost.jsp&amp;lt;/result&amp;gt;&lt;br&gt;&amp;nbsp;&amp;lt;result name=&quot;success&quot;&amp;gt;OOOO.jsp&amp;lt;/result&amp;gt;&lt;br&gt;&amp;lt;/action&amp;gt;&lt;br&gt;&lt;br&gt;2. jsp 페이지에 token tag를 추가한다.&lt;br&gt;&lt;br&gt;&amp;lt;s:form action=&quot;OOO&quot;&amp;gt;&lt;br&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;&amp;nbsp;&amp;lt;s:token/&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp;...&lt;br&gt;&amp;nbsp;&amp;lt;s:submit value=&quot;OOOOO&quot;/&amp;gt;&lt;br&gt;&amp;lt;/s:form&amp;gt;&lt;/div&gt;&lt;br&gt;&lt;br&gt;&quot;끝&quot;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<author>(장의진)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/124</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EC%A2%8B%EC%9D%80-%EC%82%AC%ED%9A%8C%EB%A5%BC-%EB%A7%8C%EB%93%9C%EB%8A%94-%EA%B8%B0%EC%88%A0#entry124comment</comments>
			<pubDate>Tue, 01 Jul 2008 15:54:46 +0900</pubDate>
		</item>
		<item>
			<title>간단 팁) Java 1.4에서 Spring TestingFramework 분위기 내기</title>
			<link>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EA%B0%84%EB%8B%A8-%ED%8C%81-Java-14%EC%97%90%EC%84%9C-Spring-TestingFramework-%EB%B6%84%EC%9C%84%EA%B8%B0-%EB%82%B4%EA%B8%B0</link>
			<description>스프링의 테스팅 프레임워크를 사용하게 되면 각종 테스트에 필요한 applicationContext 설정 파일을 테스트 클래스와 동일한 패키지/동일한 이름(-context.xml)으로 기본적으로 지정이 되기 때문에 불필요한 코딩이 좀 줄어드는 편입니다만, 자바 1.4를 주로 쓰다보니 그런 편리한 기능을 두고 매번 getConfigLocations를 만들고 있습니다.&lt;br&gt;&lt;br&gt;뭐, 종종 하는 짓이긴 하지만 또 상속입니다. 다중 상속이 됐으면 한 판에 끝나겠지만 뭐 그냥 DI만 필요한 경우, 트랜젝션 관리도 필요한 경우, jdbcTemplate가 필요한 경우의 클래스들이 따로 따로 있기 때문에 각각 만들어놓고 쓰는 수고를 좀 해야겠지요 -_-&lt;br&gt;&lt;br&gt;자바 1.4에서도 돌아갈 수 있는 스프링의 테스트용 추상 클래스 중에서 한 놈을 뽑아서 거기서 확장을 하겠습니다.&lt;br&gt;거기에 getConfigLocations를 정의해놓고, 생성자에 약간의 세팅만 해 주면 그나마 비슷한 분위기를 낼 수는 있습니다.&lt;br&gt;대강 보시면 아시겠지만 스프링에서 제공하는 ClassUtils 를 이용하였습니다.&lt;br&gt;
&lt;br&gt;&lt;blockquote&gt;public abstract class AbstractTests extends&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; AbstractDependencyInjectionSpringContextTests {&lt;br&gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; public AbstractTests () {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; setDependencyCheck(false);&lt;br&gt;&amp;nbsp; &amp;nbsp; }&lt;br&gt;&amp;nbsp; &amp;nbsp; &lt;br&gt;&amp;nbsp; &amp;nbsp; protected String[] getConfigLocations() {&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return new String[] { ClassUtils.addResourcePathToPackagePath(getClass(), ClassUtils.getShortName(getClass())&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; + &quot;-context.xml&quot;) };&lt;br&gt;&amp;nbsp; &amp;nbsp; }&lt;br&gt;}&lt;/blockquote&gt;&lt;br&gt;&lt;br&gt;이제 이 놈을 상속 받은 테스트 클래스들은 동일한 패키지 내에 &quot;테스트클래스이름-context.xml&quot; 파일을 만들어서 스프링 빈 설정을 하시면 되겠습니다. 애플리케이션 공통으로 쓰는 applicationContext.xml 파일 등등은 import 선언으로 가져와버리면 되겠죠.&lt;br&gt;&lt;br&gt;1.4에서 하나 아쉬운 게 또 있다면 @autowired 를 쓸 수 없기 때문에 set메소드는 일일이 만들어줘야 된다는 점이 있습니다.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;fieldset style=&quot;margin:20px 0px 20px 0px;padding:5px;&quot;&gt;&lt;legend&gt;&lt;span&gt;&lt;strong&gt;크리에이티브 커먼즈 라이센스&lt;/strong&gt;&lt;/span&gt;&lt;/legend&gt;&lt;!--Creative Commons License--&gt;&lt;div style=&quot;float: left; width: 88px; margin-top: 3px;&quot;&gt;&lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;&lt;img alt=&quot;Creative Commons License&quot; style=&quot;border-width: 0&quot; src=&quot;http://i.creativecommons.org/l/by-nc-sa/2.0/kr/88x31.png&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;margin-left: 92px; margin-top: 3px; text-align: justify;&quot;&gt;이 저작물은 &lt;a rel=&quot;license&quot; href=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; target=_blank&gt;크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스&lt;/a&gt;에 따라 이용하실 수 있습니다.
			&lt;!-- Creative Commons License--&gt;
			&lt;!-- &lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
			&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-nc-sa/2.0/kr/&quot; /&gt;
			&lt;/Work&gt;
			&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-nc-sa/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/ShareAlike&quot;/&gt;&lt;prohibits rdf:resource=&quot;http://web.resource.org/cc/CommercialUse&quot;/&gt;&lt;/License&gt;&lt;/rdf:RDF&gt; --&gt;&lt;/div&gt;&lt;/fieldset&gt;</description>
			<category>분류 전체 보기</category>
			<author>(setq)</author>
			<guid>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/123</guid>
			<comments>http://blog.dev.daewoobrenic.co.kr/tc/jcfblog/entry/%EA%B0%84%EB%8B%A8-%ED%8C%81-Java-14%EC%97%90%EC%84%9C-Spring-TestingFramework-%EB%B6%84%EC%9C%84%EA%B8%B0-%EB%82%B4%EA%B8%B0#entry123comment</comments>
			<pubDate>Fri, 27 Jun 2008 16:20:04 +0900</pubDate>
		</item>
	</channel>
</rss>
