﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-cuiyi's blog（崔毅 crazycy）-随笔分类-JavaEE技术</title><link>http://www.blogjava.net/crazycy/category/8594.html</link><description>记录点滴 鉴往事之得失 以资于发展 </description><language>zh-cn</language><lastBuildDate>Sat, 04 Oct 2014 11:16:48 GMT</lastBuildDate><pubDate>Sat, 04 Oct 2014 11:16:48 GMT</pubDate><ttl>60</ttl><item><title>SpringMVC+MyBatis - 16 Maven部署Web项目报错webxml attribute is required</title><link>http://www.blogjava.net/crazycy/archive/2014/10/02/418449.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Thu, 02 Oct 2014 09:56:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/10/02/418449.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/418449.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/10/02/418449.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/418449.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/418449.html</trackback:ping><description><![CDATA[Error:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->[ERROR]&nbsp;Failed&nbsp;to&nbsp;execute&nbsp;goal&nbsp;org.apache.maven.plugins:maven-war-plugin:2.4:war&nbsp;(<span style="color: #0000FF; ">default</span>-war)&nbsp;on&nbsp;project&nbsp;TradingLink:&nbsp;Error&nbsp;assembling&nbsp;WAR:&nbsp;webxml&nbsp;attribute&nbsp;is&nbsp;required&nbsp;(or&nbsp;pre-existing&nbsp;WEB-INF/web.xml&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;executing&nbsp;in&nbsp;update&nbsp;mode)</div><br />Cause:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->maven的web项目默认的webroot是在src\main\webapp。如果在此目录下找不到web.xml就抛出以上的异常。</div><br />Solution:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->需要在pom.xml中增加&lt;webResources&gt;配置，如下：<br /><br />&nbsp;&lt;build&gt;&nbsp;&nbsp;<br />&lt;plugins&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.4&lt;/version&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;configuration&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webResources&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;resource&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;directory&gt;WebContent&lt;/directory&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/resource&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/webResources&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/configuration&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/plugin&gt;&nbsp;&nbsp;<br />&lt;/plugins&gt;&nbsp;&nbsp;<br />&lt;/build&gt;&nbsp;&nbsp;<br /><br /><br />或者增加&lt;webXml&gt;配置，如下：<br /><br />&lt;build&gt;&nbsp;&nbsp;<br />&lt;plugins&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;plugin&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;maven-war-plugin&lt;/artifactId&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;2.4&lt;/version&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;configuration&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;webXml&gt;WebContent\WEB-INF\web.xml&lt;/webXml&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/configuration&gt;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/plugin&gt;&nbsp;&nbsp;<br />&lt;/plugins&gt;&nbsp;&nbsp;<br />&lt;/build&gt;&nbsp;&nbsp;</div><img src ="http://www.blogjava.net/crazycy/aggbug/418449.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-10-02 17:56 <a href="http://www.blogjava.net/crazycy/archive/2014/10/02/418449.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 13 回头看spring mvc:annotation-driven对应的消息转换（包含日期处理）-系列12的强化</title><link>http://www.blogjava.net/crazycy/archive/2014/07/16/415864.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Tue, 15 Jul 2014 18:04:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/16/415864.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415864.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/16/415864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415864.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415864.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 当初配置springmvc的时候，因为是第一次使用springmvc，为图快捷，因而大量从网上查找入门信息。遗憾的是，网上的配置真是五花八门，让我彻底凌乱。至今阅读文章不少于300余篇，回头适当整理下这个。spring mvc的mvc:annotation-driven以及日期的处理摘自http://blog.csdn.net/xiejx618/article/details/24745207 &...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/07/16/415864.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/415864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-16 02:04 <a href="http://www.blogjava.net/crazycy/archive/2014/07/16/415864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 12 spring mvc4返回的json日期为Long的解决方案</title><link>http://www.blogjava.net/crazycy/archive/2014/07/15/415839.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Tue, 15 Jul 2014 06:30:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/15/415839.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415839.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/15/415839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415839.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415839.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spring MVC 4.X ResponseBody 日期类型Json 处理摘自http://tramp-zzy.iteye.com/blog/2090330 &nbsp;2014-07-10方法一：全局处理Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/07/15/415839.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/415839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-15 14:30 <a href="http://www.blogjava.net/crazycy/archive/2014/07/15/415839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 11 SiteMash的一个小陷阱</title><link>http://www.blogjava.net/crazycy/archive/2014/07/14/415775.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 14 Jul 2014 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/14/415775.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415775.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/14/415775.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415775.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415775.html</trackback:ping><description><![CDATA[页面什么都不显示，但是查看页面代码却发现什么信息都有。<br /><br />调试到凌晨4点多，今天恍然发现<br /><div>&lt;script type="text/javascript" src="${ctx}/javascript/jquery.min.js"/&gt;<br />的最后&#8220;/"是红色的。<br /><br />然后用能通过的页面比较，唯一的差异是：<br />能显示的页面<br /><span style="font-size: 14px;">&lt;script type="text/javascript" src="${ctx}/javascript/jquery.min.js"&gt;</span><span style="font-size: 14px;">&lt;/script&gt;</span><span style="font-size: 14px;"><br /></span><span style="font-size: 14px;">不能显示的页面</span></div><div>&lt;script type="text/javascript" src="${ctx}/javascript/jquery.min.js"/&gt;<br /><br />所以问题解决了</div><img src ="http://www.blogjava.net/crazycy/aggbug/415775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-14 14:39 <a href="http://www.blogjava.net/crazycy/archive/2014/07/14/415775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 10 I18N标签的使用</title><link>http://www.blogjava.net/crazycy/archive/2014/07/13/415745.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 13 Jul 2014 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/13/415745.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415745.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/13/415745.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415745.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415745.html</trackback:ping><description><![CDATA[SpringMVC可以使用如下两个标签<br />Spring TLD: &lt;spring:message code="{message.key}"/&gt;<br />JSTL TLD: &nbsp; &lt;fmt:message key="{message.key"}/&gt;<br /><br />但是我们会遇到以后的问题：&nbsp;<br />JSTL的标签没有解析成功<br /><br />解决办法有二：<br /><br />其一：&nbsp;<br /><div>&lt;fmt:setBundle basename="{classpath of .propertity file}" var="lang"/&gt;</div><div><span style="font-size: 14px;">&lt;fmt:message key="{message.key"} bundle="lang"/&gt;</span><br /><br /><span style="font-size: 14px;">其二：</span><br /><span style="font-size: 14px;">为什么Spring:message可以</span><br /><span style="font-size: 14px;">因为我们定义了：</span><br /><div>&lt;bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"&gt; &nbsp;</div><div><span style="font-size: 14px; white-space: pre;">		</span><span style="font-size: 14px;">&lt;property name="basenames"&gt;</span></div><div><span style="white-space:pre">			</span>&lt;list&gt;</div><div><span style="white-space:pre">				</span>&lt;value&gt;classpath:org/i18n/message&lt;/value&gt;</div><div><span style="white-space:pre">				</span>&lt;value&gt;classpath:org/i18n/pagelabel&lt;/value&gt;</div><div><span style="white-space:pre">			</span>&lt;/list&gt;</div><div><span style="white-space:pre">		</span>&lt;/property&gt; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp;<span style="white-space:pre">	</span>&lt;property name="defaultEncoding" value="UTF-8"/&gt;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &lt;property name="cacheSeconds" value="0" /&gt; &nbsp;</div><div>&nbsp; &nbsp; &nbsp;<span style="white-space:pre">	</span>&lt;property name="useCodeAsDefaultMessage" value="true" /&gt;&nbsp;</div><div>&lt;/bean&gt; <br />所以我们有理由用同样的方式去为fmt定义<br />&nbsp;&nbsp;<span style="font-size: 14px;">&lt;context-param&gt;</span></div><div><span style="white-space:pre">	</span> &nbsp; &nbsp;&lt;param-name&gt;javax.servlet.jsp.jstl.fmt.localizationContext&lt;/param-name&gt;</div><div><div style="display: inline-block;"><span style="white-space: pre;">	</span>&nbsp;&nbsp; &nbsp;&lt;param-value&gt;org.i18n.message&lt;/param-value&gt;</div></div><span style="white-space: pre;">	</span>&nbsp;&nbsp; &nbsp;&lt;param-value&gt;org.i18n.pagelabel&lt;/param-value&gt;<br /><div></div><div><span style="white-space:pre">	</span>&lt;/context-param&gt;<br />应该问题不大了<br /><br />参考：<span style="font-size: 14px;">http://stackoverflow.com/questions/12470928/jstl-resource-bundle-for-internationalization-and-localization</span><br /></div></div><img src ="http://www.blogjava.net/crazycy/aggbug/415745.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-13 16:35 <a href="http://www.blogjava.net/crazycy/archive/2014/07/13/415745.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 9 Spring的EnCache(Shiro Cache的解决方案是基于这个文章的)</title><link>http://www.blogjava.net/crazycy/archive/2014/07/13/415740.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 12 Jul 2014 16:32:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/13/415740.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415740.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/13/415740.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415740.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415740.html</trackback:ping><description><![CDATA[<span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">If you look around the web for examples of using Spring 3.1&#8217;s built in caching then you&#8217;ll usually bump into Spring&#8217;s</span><a href="http://www.captaindebug.com/2012/09/spring-31-caching-and-config.html" target="new" style="text-decoration: none; color: #d8970a; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;"><tt>SimpleCacheManager</tt></a><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">, which the Guys at Spring say is &#8220;Useful for testing or simple caching declarations&#8221;. I actually prefer to think of</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">SimpleCacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;as lightweight rather than simple; useful in those situations where you want a small in memory cache on a per JVM basis. If the Guys at Spring were running a supermarket then&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">SimpleCacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">would be in their own brand &#8216;basics&#8217; product range.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">If, on the other hand, you need a heavy duty cache, one that&#8217;s scalable, persistent and distributed, then Spring also comes with a built in</span><a href="http://ehcache.org/" target="new" style="text-decoration: none; color: #d8970a; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">ehCache</a><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;wrapper.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">The good news is that swapping between Spring's caching implementations is easy. In theory it&#8217;s all a matter of configuration and, to prove the theory correct, I took the sample code from my&nbsp;</span><a href="http://www.captaindebug.com/2012/09/spring-31-caching-and-cacheable.html" target="new" style="text-decoration: none; color: #d8970a; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">Caching and&nbsp;<tt>@Cacheable</tt></a><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;blog and ran it using an EhCache implementation.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">The configuration steps are similar to those described in my last blog&nbsp;</span><a href="http://www.captaindebug.com/2012/09/spring-31-caching-and-config.html" target="new" style="text-decoration: none; color: #d8970a; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">Caching and Config</a><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;in that you still need to specify:</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><pre style="background-color: #fefeec; margin-top: 0px; margin-bottom: 0px; font-family: courier; border-style: dashed; border-width: thin; font-size: 13px; line-height: 18.200000762939453px;">&lt;cache:annotation-driven /&gt; </pre><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">...in your Spring config file to switch caching on. You also need to define a bean with an id of&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">cacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">, only this time you reference Spring&#8217;s&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">EhCacheCacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;class instead of&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">SimpleCacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><pre style="background-color: #fefeec; margin-top: 0px; margin-bottom: 0px; font-family: courier; border-style: dashed; border-width: thin; font-size: 13px; line-height: 18.200000762939453px;">&lt;bean id="cacheManager"     <br /> class="org.springframework.cache.ehcache.EhCacheCacheManager"    <br /> p:cacheManager-ref="ehcache"/&gt; </pre><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">The example above demonstrates an&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">EhCacheCacheManager</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;configuration. Notice that it references a second bean with an id of '</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">ehcache</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">'. This is configured as follows:</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><pre style="background-color: #fefeec; margin-top: 0px; margin-bottom: 0px; font-family: courier; border-style: dashed; border-width: thin; font-size: 13px; line-height: 18.200000762939453px;">&lt;bean id="ehcache" <br />  class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"     <br />  p:configLocation="ehcache.xml"     <br />  p:shared="true"/&gt; </pre><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">"</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">ehcache</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">" has two properties:&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">configLocation</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;and&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">shared</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">'</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">configLocation</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">' is an optional attribute that&#8217;s used to specify the location of an ehcache configuration file. In my test code I used the following example file:</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />&lt;ehcache&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&nbsp;xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;defaultCache&nbsp;eternal="true"&nbsp;maxElementsInMemory="100"&nbsp;overflowToDisk="false"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;cache&nbsp;name="employee"&nbsp;maxElementsInMemory="10000"&nbsp;eternal="true"&nbsp;overflowToDisk="false"&nbsp;/&gt;<br />&lt;/ehcache&gt;</div><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">...which creates two caches: a default cache and one named &#8220;employee&#8221;.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">If this file is missing then the&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">EhCacheManagerFactoryBean</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;simply picks up a default ehcache config file:&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">ehcache-failsafe.xml</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">, which is located in ehcache&#8217;s&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">ehcache-core</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;jar file.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">The other&nbsp;</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">EhCacheManagerFactoryBean</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;attribute is '</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">shared</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">'. This is supposed to be optional as the documentation states that it defines "whether the EHCache CacheManager should be shared (as a singleton at the VM level) or independent (typically local within the application). Default is 'false', creating an independent instance.&#8221; However, if this is set to false then you&#8217;ll get the following exception:&nbsp;<br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'org.springframework.cache.interceptor.CacheInterceptor#0':&nbsp;Cannot&nbsp;resolve&nbsp;reference&nbsp;to&nbsp;bean&nbsp;'cacheManager'&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;setting&nbsp;bean&nbsp;property&nbsp;'cacheManager';&nbsp;nested&nbsp;exception&nbsp;is&nbsp;org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'cacheManager'&nbsp;defined&nbsp;in&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;path&nbsp;resource&nbsp;[ehcache-example.xml]:&nbsp;Cannot&nbsp;resolve&nbsp;reference&nbsp;to&nbsp;bean&nbsp;'ehcache'&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;setting&nbsp;bean&nbsp;property&nbsp;'cacheManager';&nbsp;nested&nbsp;exception&nbsp;is&nbsp;org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'ehcache'&nbsp;defined&nbsp;in&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;path&nbsp;resource&nbsp;[ehcache-example.xml]:&nbsp;Invocation&nbsp;of&nbsp;init&nbsp;method&nbsp;failed;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;net.sf.ehcache.CacheException:&nbsp;Another&nbsp;unnamed&nbsp;CacheManager&nbsp;already&nbsp;exists&nbsp;in&nbsp;the&nbsp;same&nbsp;VM.&nbsp;Please&nbsp;provide&nbsp;unique&nbsp;names&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;each&nbsp;CacheManager&nbsp;in&nbsp;the&nbsp;config&nbsp;or&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;one&nbsp;of&nbsp;following:<br />1.&nbsp;Use&nbsp;one&nbsp;of&nbsp;the&nbsp;CacheManager.create()&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;factory&nbsp;methods&nbsp;to&nbsp;reuse&nbsp;same&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;or&nbsp;create&nbsp;one&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;necessary<br />2.&nbsp;Shutdown&nbsp;the&nbsp;earlier&nbsp;cacheManager&nbsp;before&nbsp;creating&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;one&nbsp;with&nbsp;same&nbsp;name.<br />The&nbsp;source&nbsp;of&nbsp;the&nbsp;existing&nbsp;CacheManager&nbsp;is:&nbsp;InputStreamConfigurationSource&nbsp;[stream=java.io.BufferedInputStream@424c414]<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1118)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)<br /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;stack&nbsp;trace&nbsp;shortened&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;clarity<br />&nbsp;at&nbsp;org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)<br />&nbsp;at&nbsp;org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)<br />&nbsp;at&nbsp;org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)<br />Caused&nbsp;by:&nbsp;org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'cacheManager'&nbsp;defined&nbsp;in&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;path&nbsp;resource&nbsp;[ehcache-example.xml]:&nbsp;Cannot&nbsp;resolve&nbsp;reference&nbsp;to&nbsp;bean&nbsp;'ehcache'&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;setting&nbsp;bean&nbsp;property&nbsp;'cacheManager';&nbsp;nested&nbsp;exception&nbsp;is&nbsp;org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'ehcache'&nbsp;defined&nbsp;in&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;path&nbsp;resource&nbsp;[ehcache-example.xml]:&nbsp;Invocation&nbsp;of&nbsp;init&nbsp;method&nbsp;failed;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;net.sf.ehcache.CacheException:&nbsp;Another&nbsp;unnamed&nbsp;CacheManager&nbsp;already&nbsp;exists&nbsp;in&nbsp;the&nbsp;same&nbsp;VM.&nbsp;Please&nbsp;provide&nbsp;unique&nbsp;names&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;each&nbsp;CacheManager&nbsp;in&nbsp;the&nbsp;config&nbsp;or&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;one&nbsp;of&nbsp;following:<br />1.&nbsp;Use&nbsp;one&nbsp;of&nbsp;the&nbsp;CacheManager.create()&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;factory&nbsp;methods&nbsp;to&nbsp;reuse&nbsp;same&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;or&nbsp;create&nbsp;one&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;necessary<br />2.&nbsp;Shutdown&nbsp;the&nbsp;earlier&nbsp;cacheManager&nbsp;before&nbsp;creating&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;one&nbsp;with&nbsp;same&nbsp;name.<br />The&nbsp;source&nbsp;of&nbsp;the&nbsp;existing&nbsp;CacheManager&nbsp;is:&nbsp;InputStreamConfigurationSource&nbsp;[stream=java.io.BufferedInputStream@424c414]<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1360)<br /><img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;stack&nbsp;trace&nbsp;shortened&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;clarity<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)<br />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;38&nbsp;more<br />Caused&nbsp;by:&nbsp;org.springframework.beans.factory.BeanCreationException:&nbsp;Error&nbsp;creating&nbsp;bean&nbsp;with&nbsp;name&nbsp;'ehcache'&nbsp;defined&nbsp;in&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;path&nbsp;resource&nbsp;[ehcache-example.xml]:&nbsp;Invocation&nbsp;of&nbsp;init&nbsp;method&nbsp;failed;&nbsp;nested&nbsp;exception&nbsp;is&nbsp;net.sf.ehcache.CacheException:&nbsp;Another&nbsp;unnamed&nbsp;CacheManager&nbsp;already&nbsp;exists&nbsp;in&nbsp;the&nbsp;same&nbsp;VM.&nbsp;Please&nbsp;provide&nbsp;unique&nbsp;names&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;each&nbsp;CacheManager&nbsp;in&nbsp;the&nbsp;config&nbsp;or&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;one&nbsp;of&nbsp;following:<br />1.&nbsp;Use&nbsp;one&nbsp;of&nbsp;the&nbsp;CacheManager.create()&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;factory&nbsp;methods&nbsp;to&nbsp;reuse&nbsp;same&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;or&nbsp;create&nbsp;one&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;necessary<br />2.&nbsp;Shutdown&nbsp;the&nbsp;earlier&nbsp;cacheManager&nbsp;before&nbsp;creating&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;one&nbsp;with&nbsp;same&nbsp;name.<br />The&nbsp;source&nbsp;of&nbsp;the&nbsp;existing&nbsp;CacheManager&nbsp;is:&nbsp;InputStreamConfigurationSource&nbsp;[stream=java.io.BufferedInputStream@424c414]<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)<br />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;48&nbsp;more<br />Caused&nbsp;by:&nbsp;net.sf.ehcache.CacheException:&nbsp;Another&nbsp;unnamed&nbsp;CacheManager&nbsp;already&nbsp;exists&nbsp;in&nbsp;the&nbsp;same&nbsp;VM.&nbsp;Please&nbsp;provide&nbsp;unique&nbsp;names&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;each&nbsp;CacheManager&nbsp;in&nbsp;the&nbsp;config&nbsp;or&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;one&nbsp;of&nbsp;following:<br />1.&nbsp;Use&nbsp;one&nbsp;of&nbsp;the&nbsp;CacheManager.create()&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;factory&nbsp;methods&nbsp;to&nbsp;reuse&nbsp;same&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;or&nbsp;create&nbsp;one&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;necessary<br />2.&nbsp;Shutdown&nbsp;the&nbsp;earlier&nbsp;cacheManager&nbsp;before&nbsp;creating&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;one&nbsp;with&nbsp;same&nbsp;name.<br />The&nbsp;source&nbsp;of&nbsp;the&nbsp;existing&nbsp;CacheManager&nbsp;is:&nbsp;InputStreamConfigurationSource&nbsp;[stream=java.io.BufferedInputStream@424c414]<br />&nbsp;at&nbsp;net.sf.ehcache.CacheManager.assertNoCacheManagerExistsWithSameName(CacheManager.java:521)<br />&nbsp;at&nbsp;net.sf.ehcache.CacheManager.init(CacheManager.java:371)<br />&nbsp;at&nbsp;net.sf.ehcache.CacheManager.(CacheManager.java:339)<br />&nbsp;at&nbsp;org.springframework.cache.ehcache.EhCacheManagerFactoryBean.afterPropertiesSet(EhCacheManagerFactoryBean.java:104)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)<br />&nbsp;at&nbsp;org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)<br />&nbsp;<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;55&nbsp;more</div><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">...when you try to run a bunch of unit tests.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">I think that this comes down to a simple bug Spring&#8217;s the ehcache manager factory as it&#8217;s trying to create multiple cache instances using</span><tt style="color: #757575; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">new()</tt><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">&nbsp;rather than using, as the exception states, &#8220;one of the CacheManager.create() static factory methods" which allows it to reuse same CacheManager with same name. Hence, my first JUnit test works okay, but all others fail.</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><div style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff; clear: both;"><a href="http://3.bp.blogspot.com/-RKSamFir0SU/UGDVAs-SRoI/AAAAAAAAAgo/-mrI7AhzEtQ/s1600/unit%2Btest.png" imageanchor="1" style="text-decoration: none; color: #d8970a; margin-left: 1em; margin-right: 1em;"><img border="0" height="191" width="320" src="http://3.bp.blogspot.com/-RKSamFir0SU/UGDVAs-SRoI/AAAAAAAAAgo/-mrI7AhzEtQ/s320/unit%2Btest.png" style="border: none; position: relative;"  alt="" /></a></div><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">The offending line of code is:</span><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><pre style="color: #0000aa; background-color: #eeeeee; margin-top: 0px; margin-bottom: 0px; font-family: courier; border-style: dashed; border-width: thin; font-size: 13px; line-height: 18.200000762939453px;">this.cacheManager = (this.shared ? CacheManager.create() : new CacheManager()); </pre><br style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;" /><span style="color: #757575; font-family: 'Trebuchet MS', Trebuchet, sans-serif; font-size: 13px; line-height: 18.200000762939453px; background-color: #ffffff;">My full XML config file is listed below for completeness:<br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br />&lt;beans&nbsp;xmlns="http://www.springframework.org/schema/beans"&nbsp;<br />&nbsp;&nbsp;xmlns:p="http://www.springframework.org/schema/p"<br />&nbsp;&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br />&nbsp;&nbsp;xmlns:cache="http://www.springframework.org/schema/cache"&nbsp;<br />&nbsp;&nbsp;xmlns:context="http://www.springframework.org/schema/context"<br />&nbsp;&nbsp;&nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans&nbsp;http://www.springframework.org/schema/beans/spring-beans.xsd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.springframework.org/schema/context&nbsp;</span><span style="color: #008000; text-decoration: underline; ">http://www.springframework.org/schema/context/spring-context-3.1.xsd</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.springframework.org/schema/cache&nbsp;</span><span style="color: #008000; text-decoration: underline; ">http://www.springframework.org/schema/cache/spring-cache.xsd</span><span style="color: #008000; ">"&gt;</span><span style="color: #008000; "><br /></span>&nbsp;<br />&nbsp;&nbsp;&lt;!--&nbsp;Switch&nbsp;on&nbsp;the&nbsp;Caching&nbsp;--&gt;<br />&nbsp;&nbsp;&nbsp;&lt;cache:annotation-driven&nbsp;/&gt;<br /><br />&nbsp;&lt;!--&nbsp;Do&nbsp;the&nbsp;component&nbsp;scan&nbsp;path&nbsp;--&gt;<br />&nbsp;&lt;context:component-scan&nbsp;base-<span style="color: #0000FF; ">package</span>="caching"&nbsp;/&gt;<br /><br />&nbsp;&lt;bean&nbsp;id="cacheManager"&nbsp;<span style="color: #0000FF; ">class</span>="org.springframework.cache.ehcache.EhCacheCacheManager"&nbsp;<br />&nbsp;&nbsp;p:cacheManager-ref="ehcache"/&gt;<br />&nbsp;<br />&nbsp;&lt;bean&nbsp;id="ehcache"&nbsp;<span style="color: #0000FF; ">class</span>="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p:configLocation="ehcache.xml"&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p:shared="true"/&gt;&nbsp;<br />&lt;/beans&gt;</div><div><br />文章摘自&nbsp;<span style="font-size: 14px;">http://www.captaindebug.com/2012/09/spring-31-caching-and-ehcache.html#.U8FilfmSxZW</span></div><img src ="http://www.blogjava.net/crazycy/aggbug/415740.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-13 00:32 <a href="http://www.blogjava.net/crazycy/archive/2014/07/13/415740.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 8 Shiro异常：EhCache initialization exception: Another unnamed CacheManager already exists in the same VM</title><link>http://www.blogjava.net/crazycy/archive/2014/07/13/415739.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 12 Jul 2014 16:07:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/13/415739.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415739.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/13/415739.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415739.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415739.html</trackback:ping><description><![CDATA[异常1：&nbsp;<span style="font-family: monospace; font-size: small; line-height: normal; background-color: #eeeeee;">EhCache initialization exception: Another unnamed CacheManager already exists in the same VM<br /></span>具体错误如下：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Another&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;'cacheManager'&nbsp;already&nbsp;exists&nbsp;in&nbsp;the&nbsp;same&nbsp;VM.&nbsp;Please&nbsp;&gt;&nbsp;provide&nbsp;unique&nbsp;names&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;each&nbsp;CacheManager&nbsp;in&nbsp;the&nbsp;config&nbsp;or&nbsp;<span style="color: #0000FF; ">do</span>&nbsp;one&nbsp;of&nbsp;following:&nbsp;<br />1.&nbsp;Use&nbsp;one&nbsp;of&nbsp;the&nbsp;CacheManager.create()&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;factory&nbsp;methods&nbsp;to&nbsp;reuse&nbsp;same&nbsp;CacheManager&nbsp;with&nbsp;same&nbsp;name&nbsp;or&nbsp;create&nbsp;one&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;necessary&nbsp;<br />2.&nbsp;Shutdown&nbsp;the&nbsp;earlier&nbsp;cacheManager&nbsp;before&nbsp;creating&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;one&nbsp;with&nbsp;same&nbsp;name.&nbsp;The&nbsp;source&nbsp;of&nbsp;the&nbsp;existing&nbsp;CacheManager&nbsp;is:&nbsp;DefaultConfigurationSource&nbsp;[&nbsp;ehcache.xml&nbsp;or&nbsp;ehcache-failsafe.xml&nbsp;]</div><br />一般材料是这样说的：<br /><div>&lt;bean id="ehCacheManager"&nbsp;</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>p:configLocation="classpath:org/tradinglink/cache/echcache-shiro.xml"</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>p:shared="true"/&gt;</div><br />但是经过实践是要这样做的：<br /><div>&lt;bean id="shiroEncacheManager" class="org.apache.shiro.cache.ehcache.EhCacheManager"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="cacheManager" ref="ehCacheManager"/&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div>&lt;bean id="ehCacheManager"&nbsp;</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>p:configLocation="classpath:org/tradinglink/cache/echcache-shiro.xml"</div><div>&nbsp; &nbsp; <span style="white-space:pre">	</span>p:shared="true"/&gt;</div><br /><strong style="font-size: 14pt;">一段关于完整的配置如下</strong><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><div>&lt;bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="securityManager" ref="securityManager" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="loginUrl" value="/login.jsp" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="successUrl" value="/index.jsp" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="unauthorizedUrl" value="/unauthorized.jsp" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="filters"&gt;</div><div><span style="white-space:pre">			</span>&lt;map&gt;</div><div><span style="white-space:pre">				</span>&lt;entry key="authc" value-ref="formAuthenticationFilter"&gt;&lt;/entry&gt;</div><div><span style="white-space:pre">			</span>&lt;/map&gt;</div><div><span style="white-space:pre">		</span>&lt;/property&gt;</div><div><span style="white-space:pre">		</span>&lt;!-- will config in db, and then read into filterChainDefinitionsMap property --&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="filterChainDefinitions"&gt;</div><div><span style="white-space:pre">			</span>&lt;value&gt;</div><div><span style="white-space:pre">				</span>/login = authc</div><div><span style="white-space:pre">				</span>/logout = logout</div><div><span style="white-space:pre">				</span>/resource/** = anon</div><div><span style="white-space:pre">				</span>/images/**= anon</div><div><span style="white-space:pre">				</span>/css/**= anon</div><div><span style="white-space:pre">				</span>/javascript/**= anon</div><div><span style="white-space:pre">				</span>&lt;!-- /welcome = perms[accout:edit] --&gt;</div><div><span style="white-space:pre">				</span>&lt;!-- /security/account/view.do=authc,perms[SECURITY_ACCOUNT_VIEW] --&gt;</div><div><span style="white-space:pre">				</span>/** = anon</div><div><span style="white-space:pre">			</span>&lt;/value&gt;</div><div><span style="white-space:pre">		</span>&lt;/property&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;<br /><br />&lt;!--<span style="font-size: 13.63636302947998px;">一段关于</span><span style="font-size: 13px;">securityManager</span><span style="font-size: 13.63636302947998px;">的完整的配置如下--&gt;<br /></span><span style="font-size: 13px;">&lt;bean&nbsp;id="securityManager"&nbsp;</span><span style="font-size: 13px; color: #0000ff;">class</span><span style="font-size: 13px;">="org.apache.shiro.web.mgt.DefaultWebSecurityManager"&gt;</span></div>&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="realm"&nbsp;ref="myRealm"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="sessionMode"&nbsp;value="native"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="sessionManager"&nbsp;ref="sessionManager"/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="cacheManager"&nbsp;ref="cacheManager"/&gt;<br />&lt;/bean&gt;<br /><br />&lt;bean&nbsp;id="cacheManager"&nbsp;<span style="color: #0000FF; ">class</span>="org.apache.shiro.cache.ehcache.EhCacheManager"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="cacheManager"&nbsp;ref="ehCacheManager"/&gt;<br />&lt;/bean&gt;<br /><br />&lt;bean&nbsp;id="ehCacheManager"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"/&gt;<br /><br />&lt;bean&nbsp;id="sessionManager"<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">class</span>="org.apache.shiro.web.session.mgt.DefaultWebSessionManager"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;property&nbsp;name="sessionDAO"&nbsp;ref="sessionDAO"/&gt;<br />&lt;/bean&gt;<br /><br />&lt;bean&nbsp;id="sessionDAO"&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff;">class</span>="org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO"&gt;<br /><div>&nbsp; &nbsp; &lt;property name="activeSessionsCacheName" value="shiro-activeSessionCache" /&gt;<br />&lt;/bean&gt;<br /></div>&lt;bean&nbsp;id="myRealm"&nbsp;<span style="color: #0000FF; ">class</span>="com.foo.MyRealm"/&gt;</div><img src ="http://www.blogjava.net/crazycy/aggbug/415739.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-13 00:07 <a href="http://www.blogjava.net/crazycy/archive/2014/07/13/415739.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 6 SpringMVC Restful风格下的静态资源</title><link>http://www.blogjava.net/crazycy/archive/2014/07/12/415736.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 12 Jul 2014 15:31:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/12/415736.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415736.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/12/415736.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415736.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415736.html</trackback:ping><description><![CDATA[<p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; 优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源，所以在web.xml中配置DispatcherServlet的请求映射，往往使用 *.do 、 *.xhtml等方式。这就决定了请求URL必须是一个带后缀的URL，而无法采用真正的REST风格的URL。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp;如果将DispatcherServlet请求映射配置为"/"，则Spring MVC将捕获Web容器所有的请求，包括静态资源的请求，Spring MVC会将它们当成一个普通请求处理，因此找不到对应处理器将导致错误。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">&nbsp; &nbsp; 如何让Spring框架能够捕获所有URL的请求，同时又将静态资源的请求转由Web容器处理，是可将DispatcherServlet的请求映射配置为"/"的前提。由于REST是Spring3.0最重要的功能之一，所以Spring团队很看重静态资源处理这项任务，给出了堪称经典的两种解决方案。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">先调整web.xml中的DispatcherServlet的配置，使其可以捕获所有的请求：</p><div style="margin: 5px 0px; font-size: 12px !important;"><div style="margin: 5px 0px 0px;"><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp; &nbsp; &nbsp;&lt;servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;springMVC&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-<span style="color: #0000FF; ">class</span>&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-<span style="color: #0000FF; ">class</span>&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;springMVC&lt;/servlet-name&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/&lt;/url-pattern&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;</div></div></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">通过上面url-pattern的配置，所有URL请求都将被Spring MVC的DispatcherServlet截获。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;"><strong style="margin: 0px; padding: 0px;"><br />采用&lt;mvc:default-servlet-handler /&gt;</strong></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">在springMVC-servlet.xml中配置&lt;mvc:default-servlet-handler /&gt;后，会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler，它会像一个检查员，对进入DispatcherServlet的URL进行筛查，如果发现是静态资源的请求，就将该请求转由Web应用服务器默认的Servlet处理，如果不是静态资源的请求，才由DispatcherServlet继续处理。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">一般Web应用服务器默认的Servlet名称是"default"，因此DefaultServletHttpRequestHandler可以找到它。如果你所有的Web应用服务器的默认Servlet名称不是"default"，则需要通过default-servlet-name属性显示指定：<br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;mvc:resources&nbsp;location="/,classpath:/META-INF/publicResources/"&nbsp;mapping="/resources/**"/&gt;</div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;"><strong style="font-size: 14.399999618530273px; margin: 0px; padding: 0px;"><br />采用&lt;mvc:resources /&gt;</strong></p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">&lt;mvc:default-servlet-handler /&gt;将静态资源的处理经由Spring MVC框架交回Web应用服务器处理。而&lt;mvc:resources /&gt;更进一步，由Spring MVC框架自己处理静态资源，并添加一些有用的附加值功能。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">首先，&lt;mvc:resources /&gt;允许静态资源放在任何地方，如WEB-INF目录下、类路径下等，你甚至可以将JavaScript等静态文件打到JAR包中。通过location属性指定静态资源的位置，由于location属性是Resources类型，因此可以使用诸如"classpath:"等的资源前缀指定资源位置。传统Web容器的静态资源只能放在Web容器的根路径下，&lt;mvc:resources /&gt;完全打破了这个限制。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">其次，&lt;mvc:resources /&gt;依据当前著名的Page Speed、YSlow等浏览器优化原则对静态资源提供优化。你可以通过cacheSeconds属性指定静态资源在浏览器端的缓存时间，一般可将该时间设置为一年，以充分利用浏览器端的缓存。在输出静态资源时，会根据配置设置好响应报文头的Expires 和 Cache-Control值。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">在接收到静态资源的获取请求时，会检查请求头的Last-Modified值，如果静态资源没有发生变化，则直接返回303相应状态码，提示客户端使用浏览器缓存的数据，而非将静态资源的内容输出到客户端，以充分节省带宽，提高程序性能。</p><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">在springMVC-servlet中添加如下配置：<br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;mvc:resources&nbsp;location="/,classpath:/META-INF/publicResources/"&nbsp;mapping="/resources/**"/&gt;</div><div style="margin: 5px 0px; font-size: 12px !important;"><pre style="margin-top: 0px; margin-bottom: 0px; padding: 0px; white-space: pre-wrap; word-wrap: break-word; font-family: 'Courier New' !important; font-size: 12px !important;"><span style="background-color: #ffffff; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px;">以上配置将Web根路径"/"及类路径下 /META-INF/publicResources/ 的目录映射为/resources路径。假设Web根路径下拥有images、js这两个资源目录,在images下面有bg.gif图片，在js下面有test.js文件，则可以通过 /resources/images/bg.gif 和 /resources/js/test.js 访问这二个静态资源。</span></pre></div><p style="margin-top: 10px; margin-bottom: 10px; padding: 0px; color: #333333; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14.399999618530273px; line-height: 20.15999984741211px; background-color: #ffffff;">假设WebRoot还拥有images/bg1.gif 及 js/test1.js，则也可以在网页中通过 /resources/images/bg1.gif 及 /resources/js/test1.js 进行引用。<br /><br /></p><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->摘录于http:<span style="color: #008000; ">//</span><span style="color: #008000; ">www.cnblogs.com/fangqi/archive/2012/10/28/2743100.html</span></div><img src ="http://www.blogjava.net/crazycy/aggbug/415736.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-12 23:31 <a href="http://www.blogjava.net/crazycy/archive/2014/07/12/415736.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 5 Security-Shiro-01</title><link>http://www.blogjava.net/crazycy/archive/2014/07/11/415698.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Fri, 11 Jul 2014 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/11/415698.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415698.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/11/415698.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415698.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415698.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 文章摘录处安全认证框架-APACHE SHIRO研究心得最近因为项目需要，研究了一下Apache Shiro安全认证框架，把心得记录下来。（原创by：西风吹雨）&nbsp;Apache Shrio是一个安全认证框架，和Spring Security相比，在于他使用了和比较简洁易懂的认证和授权方式。其提供的native-session（即把用户认证后的授权信息保存在其自身提供Session中）机制，...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/07/11/415698.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/415698.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-11 09:38 <a href="http://www.blogjava.net/crazycy/archive/2014/07/11/415698.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 4 Spring请求参数</title><link>http://www.blogjava.net/crazycy/archive/2014/07/09/415630.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Wed, 09 Jul 2014 08:32:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/09/415630.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415630.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/09/415630.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415630.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415630.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;form&gt;<br />&nbsp;&nbsp;&nbsp;username:&lt;input&nbsp;type="text"&nbsp;name="userNAME"&gt;<br />&nbsp;&nbsp;&nbsp;password:&lt;input&nbsp;type="text"&nbsp;name="pasWD"&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;input&nbsp;type="button"&nbsp;value="submit"&gt; <br />&lt;/form&gt;</div><br />最基本的：依靠<strong style="color: red;">HttpServletRequest.getParameter</strong><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #0000FF; ">@RequestMapping("/add")<br />public</span>&nbsp;<font color="#0000ff">String</font>&nbsp;addUser(HttpServletRequest&nbsp;req)&nbsp;{<br />&nbsp;&nbsp;&nbsp;String&nbsp;username&nbsp;=&nbsp;req.getParameter("userNAME");<br />&nbsp;&nbsp;&nbsp;String&nbsp;passwd&nbsp;=&nbsp;req.getParameter("pasWD");<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br />最基本的轻松一变，可以变成lightweight， 通过<strong style="color: red;">@<span style="font-size: 13px; background-color: #eeeeee;">RequestParam</span></strong><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@RequestMapping("/add")<br /><span style="color: #0000FF; ">public</span>&nbsp;<font color="#0000ff">String</font>&nbsp;addUser(@RequestParam(value="userNAME", required=false)&nbsp;String&nbsp;username,&nbsp;@RequestParam(value="pasWD")&nbsp;String&nbsp;password)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic,&nbsp;directly&nbsp;use</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br />其实吧，@<span style="font-size: 13px; background-color: #eeeeee;">RequestParam是可以省掉的，就变成了 </span><span style="font-size: 14pt; background-color: #eeeeee; color: red;"><strong>要点是变量名字的变化</strong></span><span style="font-size: 13px; background-color: #eeeeee; color: red;"></span><span style="font-size: 13px; background-color: #eeeeee;"><br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@RequestMapping("/add")<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000ff;">String&nbsp;</span>&nbsp;addUser(String&nbsp;userNAME,&nbsp;String&nbsp;pasWD)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic,&nbsp;directly&nbsp;use</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br />还有一种路径法<strong style="color: red;">@PathViable</strong><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@RequestMapping("/add/{userName}")<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000ff;">String&nbsp;</span>addUser(@PathVariable(value="userName") String&nbsp;username)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}<br /><br />使用.../add/zhangsan</div><br />暴力点的<span style="color: red;"><strong>@ModelAttribute<br /></strong></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Class&nbsp;User&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userNAME;<br />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;pasWD<br />}<br /><br />@RequestMapping(method=RequestMethod.POST)<br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000ff;">String&nbsp;</span>addUser(@ModelAttribute(value="user")&nbsp;User&nbsp;user)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br /><br />其实吧，@<strong style="color: #ff0000;">ModelAttribute</strong><span style="font-size: 13px; background-color: #eeeeee;">是可以省掉的，就变成了<br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Class&nbsp;User&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;userNAME;<br />&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;pasWD<br />}<br /><br />@RequestMapping("/add")<br /><span style="color: #0000FF; ">public</span>&nbsp;<font color="#0000ff">String&nbsp;</font>addUser(User&nbsp;user)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br /><br />接下来就是两种AJAX相关的：<br />- <span style="color: red;"><strong>JSON</strong></span><br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->var&nbsp;name&nbsp;=&nbsp;$("#userNAME").val();<br />var&nbsp;pass&nbsp;=&nbsp;$("#pasWD").val();<br />var&nbsp;user&nbsp;=&nbsp;{userName:name, password:pass};<br />$.ajax({<br />&nbsp;&nbsp;&nbsp;type:"POST",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:"${pageContext.request.contextPath}/user/addUser",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:user,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("成功");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:function(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("出错："+e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br /><br />@RequestMapping("/add")<br /><span style="color: #0000ff;">public</span>&nbsp;<font color="#0000ff">String&nbsp;</font>addUser(User&nbsp;user)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">save&nbsp;logic&nbsp;</span><span style="color: #008000;"><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000ff;">return</span>&nbsp;"user/userinfo";<br />}</div><br />-&nbsp;<strong><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13.333333015441895px; line-height: 13px; background-color: #ffffff; color: red;">jQuery&nbsp;</span><span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13.333333015441895px; line-height: 13px; background-color: #ffffff; color: red;">serializeArray()<br /></span></strong><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #008000; ">//</span><span style="color: #008000; ">序列化表单元素，返回json数据</span><span style="color: #008000; "><br /></span>&nbsp;var&nbsp;params&nbsp;=&nbsp;$("#userForm").serializeArray();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="color: #008000; ">//</span><span style="color: #008000; ">也可以把表单之外的元素按照name&nbsp;value的格式存进来<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">params.push({name:"hello",value:"man"});</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$.ajax({<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type:"POST",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;url:"${pageContext.request.contextPath}/user/addUser",<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data:params,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;success:function(data){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("成功");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;error:function(e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("出错："+e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />@RequestMapping("/add")<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;addUser(User&nbsp;user)&nbsp;{<br />&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">save&nbsp;logic&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;"user/userinfo";<br />}</div><br /><br />下面摘录一段学习笔记 <a href="http://hanchaohan.blog.51cto.com/2996417/1335834" title="出处">出处</a><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->@RequestMapping("/somepath/{userName}")&nbsp;<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;register(@PathVariable(value&nbsp;=&nbsp;"userName")&nbsp;String&nbsp;userName)&nbsp;{&nbsp;<br />&nbsp; &nbsp;ModelAndView&nbsp;mav&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;ModelAndView();&nbsp;<br /><span style="color: #0000FF; ">&nbsp; &nbsp;return</span>&nbsp;"user/createSuccess";&nbsp;<br />}&nbsp;<br />在springmvc注解的@RequestMapping("/somepath/{userName}")如何处理默认值的情况,比如我在发送请求的时候,userName有时候是没有的，所以导到了不能匹配这个action&nbsp;<br />http:<span style="color: #008000; ">//</span><span style="color: #008000; ">localhost:8080/spc/movie/somepath/就不能匹配上面的请求:&nbsp;</span><span style="color: #008000; "><br /></span>http:<span style="color: #008000; ">//</span><span style="color: #008000; ">localhost:8080/spc/movie/somepath/tom而这个才可以匹配。&nbsp;</span><span style="color: #008000; "><br /></span><br /><br /><strong style="color: #0000ff; font-size: 12pt;">@PathVariable</strong>&nbsp;会将url中的参数解析到对应的方法参数上，需要在@RequestMapping()指定匹配模式&nbsp;<br />@RequestMapping("somepath/{userName}")&nbsp;<br />这时你访问地址"somepath/Tom"就能把"Tom"解析到方法参数userName上&nbsp;<br /><br /><br /><strong style="color: #0000ff; font-size: 12pt;">@RequestParam</strong>用于将请求参数区数据映射到功能处理方法的参数上&nbsp;<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam2(@RequestParam("username")&nbsp;String&nbsp;username)&nbsp;<br />请求中包含username参数（如/requestparam1?username=zhang），则自动传入。&nbsp;<br /><br /><br />接下来我们看一下@RequestParam注解主要有哪些参数：&nbsp;<br /><br /><strong style="color: #ff6600;">value</strong>：参数名字，即入参的请求参数名字，如username表示请求的参数区中的名字为username的参数的值将传入；<br /><br /><span style="color: #ff6600;"><strong>required</strong></span>：是否必须，默认是true，表示请求中一定要有相应的参数，否则将报404错误码；&nbsp;<br /><br />defaultValue：默认值，表示如果请求中没有同名参数时的默认值，默认值可以是SpEL表达式，如&#8220;#{systemProperties['java.vm.version']}&#8221;。&nbsp;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam4(@RequestParam(value="username",required=<span style="color: #0000FF; ">false</span>)&nbsp;String&nbsp;username)&nbsp;<br />表示请求中可以没有名字为username的参数，如果没有默认为null，此处需要注意如下几点：&nbsp;<br />&nbsp; &nbsp; 原子类型：必须有值，否则抛出异常，如果允许空值请使用包装类代替。&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;Boolean包装类型类型：默认Boolean.FALSE，其他引用类型默认为null。&nbsp;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam5(@RequestParam(value="username",&nbsp;required=<span style="color: #0000FF; ">true</span>,&nbsp;defaultValue="zhang")&nbsp;String&nbsp;username)&nbsp;<br />表示如果请求中没有名字为username的参数，默认值为&#8220;zhang&#8221;。&nbsp;<br /><br /><br />如果请求中有多个同名的应该如何接收呢？如给用户授权时，可能授予多个权限，首先看下如下代码：&nbsp;<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam7(@RequestParam(value="role")&nbsp;String&nbsp;roleList)如果请求参数类似于url?role=admin&amp;rule=user，则实际roleList参数入参的数据为&#8220;admin,user&#8221;，即多个数据之间使用&#8220;，&#8221;分割；我们应该使用如下方式来接收多个请求参数：&nbsp;<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam7(@RequestParam(value="role")&nbsp;String[]&nbsp;roleList)&nbsp;&nbsp;<br />或&nbsp;<br /><span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;requestparam8(@RequestParam(value="list")&nbsp;List&lt;String&gt;&nbsp;list) &nbsp;</div><br /><br /><br /><img src ="http://www.blogjava.net/crazycy/aggbug/415630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-09 16:32 <a href="http://www.blogjava.net/crazycy/archive/2014/07/09/415630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC+MyBatis - 1 mybatisGenerator 代码自动生成报错 Result Maps collection already contains value for BaseResultMap</title><link>http://www.blogjava.net/crazycy/archive/2014/07/07/415522.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 07 Jul 2014 02:01:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/07/07/415522.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/415522.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/07/07/415522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/415522.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/415522.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->java&nbsp;-jar&nbsp;mybatis-generator-core-1.3.2.jar&nbsp;-configfile&nbsp;&nbsp;{path}\generator\mybatis\generatorConfig.xml&nbsp;-overwrite&nbsp;</div>第一次运行后，程序运行良好<br /><br />再次执行此命令后，程序出现异常：Error parsing Mapper XML. Cause: java.lang.IllegalArgumentException: Result Maps collection already contains value<br /><br />逐个文件排查，终于在xxMapper.xml发现了问题：<br /><div><strong><u>-overwrite参数只对java文件起作用，而xml则是部分追加的意思。所以打开xml文件后会发现下面一段有些重复。</u></strong></div><div></div><div>所以再要重新生成代码的时候，要把生成的xml删除掉，再运行这个命令。</div><img src ="http://www.blogjava.net/crazycy/aggbug/415522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-07-07 10:01 <a href="http://www.blogjava.net/crazycy/archive/2014/07/07/415522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UI Experience - 01 JQuery cannot get actual window Size</title><link>http://www.blogjava.net/crazycy/archive/2014/05/14/413648.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Wed, 14 May 2014 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/05/14/413648.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/413648.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/05/14/413648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/413648.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/413648.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->alert("window&nbsp;height:&nbsp;"&nbsp;+&nbsp;$(window).height());</div>每次获得的尺寸都不一样；<br />高度怀疑是JQuery的bug<br /><br />当我在jsp/html开头增加了这么一句<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&lt;!DOCTYPE&nbsp;html&gt;</div>事情搞定<br /><br />分析下来原因是这样的：<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;">If document&nbsp;is&nbsp;running&nbsp;in&nbsp;Quirks&nbsp;Mode&nbsp;and&nbsp;jQuery&nbsp;can't&nbsp;calculate&nbsp;correct&nbsp;window&nbsp;dimensions</div><img src ="http://www.blogjava.net/crazycy/aggbug/413648.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-05-14 11:58 <a href="http://www.blogjava.net/crazycy/archive/2014/05/14/413648.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss AS突然发现不熟悉了</title><link>http://www.blogjava.net/crazycy/archive/2014/03/13/410985.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Thu, 13 Mar 2014 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/03/13/410985.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/410985.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/03/13/410985.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/410985.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/410985.html</trackback:ping><description><![CDATA[<p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff;">The EAP binaries have their own release cycle. The EAP 6.1 release cycle had a Alpha, a Beta which ultimately led to the 6.1 GA.</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff; min-height: 8pt; height: 8pt;">&nbsp;</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff;">The&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">6.1 Alpha binary&nbsp;</strong>is made available for free (both for development&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">and&nbsp;</strong>production use) to the entire community. This allows community users who have been using the community server JBoss AS (now renamed to WildFly) a chance to get the bug fixes and possibly other features which had been added while the productization work was in progress.</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff; min-height: 8pt; height: 8pt;">&nbsp;</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff;">The&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">6.1 Beta binary</strong><span style="margin: 0px; padding: 0px; border: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline;">&nbsp;is made available under the zero-dollar developer subscription scheme (the terms and conditions are here</span><a href="http://www.jboss.org/developer-program/termsandconditions" target="_blank" style="margin: 0px; padding: 0px; border: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline; color: #355491; text-decoration: none;">http://www.jboss.org/developer-program/termsandconditions</a><span style="margin: 0px; padding: 0px; border: 0px; font-weight: inherit; font-style: inherit; font-family: inherit; vertical-align: baseline;">). This zero dollar subscription allows users to use the binray in development environments but&nbsp;</span><strong style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">not&nbsp;</strong>in production, unless of course the user additionally is also a paid subscriber/customer of EAP.</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff; min-height: 8pt; height: 8pt;">&nbsp;</p><p style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; vertical-align: baseline; color: #3d3d3d; line-height: 19px; background-color: #ffffff;">The&nbsp;<strong style="margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-family: inherit; vertical-align: baseline;">6.1 GA binary</strong>&nbsp;is available for production use only for paid subscribers/customers. Zero-dollar subscribers can use it only for development purposes. In other words, the usage terms are the same as 6.1 Beta binary.</p><img src ="http://www.blogjava.net/crazycy/aggbug/410985.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-03-13 16:38 <a href="http://www.blogjava.net/crazycy/archive/2014/03/13/410985.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant: failed to create task or type if</title><link>http://www.blogjava.net/crazycy/archive/2014/03/12/410924.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Wed, 12 Mar 2014 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/03/12/410924.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/410924.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/03/12/410924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/410924.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/410924.html</trackback:ping><description><![CDATA[<div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->&nbsp;&lt;target&nbsp;name="compile-cxcdata-dao"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #0000FF; ">if</span>&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;equals&nbsp;arg1="${dummyDAO}"&nbsp;arg2="true"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;then&gt;<br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&lt;ant&nbsp;antfile="${data.dir}/data_build.xml"&nbsp;target="compile-data"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mkdir&nbsp;dir="${apps.jar.dir}"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;jarfile="${apps.jar.dir}/data.jar"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;fileset&nbsp;dir="${data.classes.dir}"&nbsp;includes="**/*"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/jar&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/then&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<span style="color: #0000FF; ">else</span>&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;copy&nbsp;todir="${apps.jar.dir}"&nbsp;overwrite="true"&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;fileset&nbsp;dir="${data.dir}"&nbsp;includes="**/*.jar"&nbsp;/&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/copy&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #0000FF; ">else</span>&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/<span style="color: #0000FF; ">if</span>&gt;<br />&nbsp;&nbsp;&lt;/target&gt;</div><br />BUILD FAILED</div><div>D:\__workspace_svn\apps\build.xml:18: The following error occurred while executing this line:</div><div>D:\__workspace_svn\apps\apps_build.xml:145: The following error occurred while executing this line:</div><div>D:\__workspace_svn\apps\apps_build.xml:100: The following error occurred while executing this line:</div><div>D:\__workspace_svn\apps\apps_build.xml:71: Problem: failed to create task or type if</div><div>Cause: The name is undefined.</div><div>Action: Check the spelling.</div><div>Action: Check that any custom tasks/types have been declared.</div><div>Action: Check that any &lt;presetdef&gt;/&lt;macrodef&gt; declarations have taken place.<br /><br />Solution:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->It&nbsp;is&nbsp;a&nbsp;compatibility&nbsp;issue.<br />1.&nbsp;<br />Right&nbsp;click&nbsp;on&nbsp;build.xml.<br /><br />2.<br />Go&nbsp;to&nbsp;"Run&nbsp;As"&nbsp;--&gt;&nbsp;2&nbsp;Ant<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;Select&nbsp;Classpath&nbsp;tab&nbsp;check&nbsp;Ant&nbsp;Home&nbsp;version&nbsp;(Sometimes&nbsp;eclipse&nbsp;selects&nbsp;<span style="color: #0000FF; ">default</span>&nbsp;ant&nbsp;version).<br />If&nbsp;the&nbsp;version&nbsp;listed&nbsp;is&nbsp;different,&nbsp;then&nbsp;change&nbsp;Ant&nbsp;Home&nbsp;Classpath&nbsp;to&nbsp;C:\XXXX\ant\X.X.X.<br /><br />3.<br />Finally&nbsp;click&nbsp;on&nbsp;the&nbsp;Classpath&nbsp;tab&nbsp;--&gt;&nbsp;Add&nbsp;External&nbsp;JARS..--&gt;&nbsp;add&nbsp;ant-contrib.x.x.jar&nbsp;from&nbsp;C:\XXXX\ant\X.X.X\ant-contrib\&nbsp;directory.</div></div><img src ="http://www.blogjava.net/crazycy/aggbug/410924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-03-12 11:03 <a href="http://www.blogjava.net/crazycy/archive/2014/03/12/410924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL学习（九）﻿ 2014年八大最热门的大数据工作</title><link>http://www.blogjava.net/crazycy/archive/2014/01/19/409098.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 18 Jan 2014 18:20:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/19/409098.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/409098.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/19/409098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/409098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/409098.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->2014年八大最热门的大数据工作<br />作者：张霖&nbsp;1月&nbsp;16,&nbsp;2014<br />http://www.ctocio.com/ccnews/14565.html<br /><a href="http://www.ctocio.com/ccnews/14565.html" title="2014年八大最热门的大数据工作" style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">原文链接</a>： 文章来自<a href="http://www.ctocio.com/" title="IT经理网" style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">IT经理网</a></div><p style="font-family: 'Microsoft Yahei', Arial, 'Trebuchet MS', Verdana, Tahoma; outline: 0px; padding: 0px; margin: 0px 0px 10px; border: 0px; vertical-align: baseline; line-height: 1.8em; color: #555555; background-color: #ffffff;">大数据时代，数据过剩，人才短缺，越来越多的IT专业人士希望能够进入充满机遇的大数据领域，但是，到底哪些具体的大数据专业岗位和人才最为吃香呢？人力资源公司Kforce近日发布了一份报告根据<a href="http://www.kforce.com/salary-guide-request-form/2014/technology-infographic.aspx" style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">IT职业薪酬水平</a>给出了2014年最热门的十大大数据工作职位（年薪）：</p><p style="font-family: 'Microsoft Yahei', Arial, 'Trebuchet MS', Verdana, Tahoma; outline: 0px; padding: 0px; margin: 0px 0px 10px; border: 0px; vertical-align: baseline; line-height: 1.8em; color: #555555; background-color: #ffffff;">一、ETL开发者（11-13万美元）<br /><span style="line-height: 1.8em;">随着数据种类的不断增加，企业对数据整合专业人才的需求越来越旺盛。ETL开发者与不同的数据来源和组织打交道，从不同的源头抽取数据，转换并导入数据仓库以满足企业的需要。</span></p><p style="font-family: 'Microsoft Yahei', Arial, 'Trebuchet MS', Verdana, Tahoma; outline: 0px; padding: 0px; margin: 0px 0px 10px; border: 0px; vertical-align: baseline; line-height: 1.8em; color: #555555; background-color: #ffffff;">ETL软件行业相对成熟，相关岗位的工作生命周期比较长，通常由内部员工和外包合同商之间通力完成。ETL人才在大数据时代炙手可热的原因之一是：在企业大数据应用的早期阶段，<a href="http://www.ctocio.com/ccnews/12345.html" style="font-size: 1em; outline: 0px; padding: 0px; margin: 0px; border: 0px; text-decoration: none; vertical-align: baseline; color: #004276;">Hadoop只是穷人的ETL</a>。<br /><br /><span style="line-height: 1.8em;">二、Hadoop开发者（15-17.5万美元）<br /></span><span style="line-height: 1.8em;">Hadoop是基于Java的开源框架，随着数据集规模不断增大，而传统BI的数据处理成本过高，企业对</span><strong style="line-height: 1.8em; color: red;">Hadoop及相关的廉价数据处理技术如Hive、HBase、MapReduce、Pig等的需求将持续增长</strong><span style="line-height: 1.8em;">。如今具备Hadoop框架经验的技术人员是最抢手的大数据人才。<br /><br /></span><span style="line-height: 1.8em;">三、大数据可视化工具开发者（15-17.5万美元）<br /></span><span style="line-height: 1.8em;">海量数据的分析是个大挑战，而</span><strong style="line-height: 1.8em; color: red;">新型数据可视化工具如Spotifre，Qlikview和Tableau可以直观高效地展示数据</strong><span style="line-height: 1.8em;">。过去，数据可视化属于商业智能开发者类别，但是随着Hadoop的崛起，数据可视化已经成了一项独立的专业技能和岗位。<br /><br /></span><span style="line-height: 1.8em;">四、数据科学家（12-14万美元）<br /></span><span style="line-height: 1.8em;">过去也称数据架构师，数据科学家是一个全新的工种，能够将企业的数据和技术转化为企业的商业价值。数据科学家首先应当具备优秀的沟通技能，能够同时将数据分析结果解释给IT部门和业务部门领导。</span></p><p style="font-family: 'Microsoft Yahei', Arial, 'Trebuchet MS', Verdana, Tahoma; outline: 0px; padding: 0px; margin: 0px 0px 10px; border: 0px; vertical-align: baseline; line-height: 1.8em; color: #555555; background-color: #ffffff;">总的来说，数据科学家是分析师、艺术家的合体，需要具备多种交叉科学和商业技能。<br /><br /><span style="line-height: 1.8em;">五、OLAP开发者（9.8-11.6万美元）<br /></span><span style="line-height: 1.8em;">OLAP在线联机分析开发者，<strong>负责将数据从关系型或非关系型数据源中抽取出来建立模型，然后创建数据访问的用户界面，提供高性能的预定义查询功能。</strong><br /><br /></span><span style="line-height: 1.8em;">六、数据仓库一体机专家（9.8-12.4万美元）<br /></span><span style="line-height: 1.8em;">此类专家</span><strong style="line-height: 1.8em;">熟悉Teradata、Neteeza和Exadata等公司的大数据一体机</strong><span style="line-height: 1.8em;">。能够在这些一体机上完成数据集成、管理和性能优化等工作。<br /><br /></span><span style="line-height: 1.8em;">七、预测分析开发者（10-13万美元）<br /></span><span style="line-height: 1.8em;">营销部门经常使用预测分析预测用户行为或锁定目标用户。预测分析开发者有些场景看上有有些类似数据科学家，即在企业历史数据的基础上通过假设来测试阈值并预测未来的表现。<br /><br /></span><span style="line-height: 1.8em;">八、信息架构师（11.4-13.5万美元）<br /></span><span style="line-height: 1.8em;">大数据重新激发了主数据管理的热潮。充分开发利用企业数据并支持决策需要非常专业的技能。信息架构师必须了解如何定义和存档关键元素，确保以最有效的方式进行数据管理和利用。信息架构师的关键技能包括主数据管理、业务知识和数据建模等。</span></p><img src ="http://www.blogjava.net/crazycy/aggbug/409098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-19 02:20 <a href="http://www.blogjava.net/crazycy/archive/2014/01/19/409098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL学习（八）﻿ 大数据要“落地”，还缺些什么？</title><link>http://www.blogjava.net/crazycy/archive/2014/01/19/409097.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 18 Jan 2014 17:59:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/19/409097.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/409097.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/19/409097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/409097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/409097.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->大数据要&#8220;落地&#8221;，还缺些什么<br />http://www.pingwest.com/bigdata2/</div><p style="margin:0in;margin-bottom:.0001pt;background:white;vertical-align: baseline"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">&#8220;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">大数据</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">&#8221;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">是在</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">2013</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">年被用滥了的词汇，但实际上，</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">由于数据量缺失、大数据清洗和分析能力不足，以及数据可视化瓶颈等问题</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">，</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">&#8220;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">大数据</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">&#8221;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">一直未能迟迟落地。伴随着基础设施的发展，意味着大数据的发展又走到新的一个新的临界点。系统软件供应商</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">Software AG</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">的</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">Gagan Mehra</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">，在</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F"><a href="http://venturebeat.com/2013/12/28/big-data-2-0-the-next-generation-of-big-data/" style="font-size:inherit;font-style:inherit;font-variant:inherit;font-weight: inherit;line-height:inherit;transition: 0.1s;-webkit-transition: 0.1s"><span style="color:#F36119;border:none windowtext 1.0pt; padding:0in;text-decoration:none;text-underline:none">Venturebeat</span></a></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">网站阐述了他对于大数据接下来发展的认识，他认为更快地数据处理、更可靠的数据质量，以及更加细分的应用市场，是大数据</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">2.0</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">时代的重要特征。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="font-size:inherit;font-style:inherit; font-variant:inherit;line-height:inherit"><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F;border:none windowtext 1.0pt; padding:0in">更快的数据处理速度</span></strong></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">由于数据量指数型增长，使得</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;"><strong>对于数据的快速分析的需要</strong></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">已经变得比以往任何时候都要迫切。几乎每家大数据厂商，都想要兜售比别家处理速度更快的产品。</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">Hadoop</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">发布的新品</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">Hadoop 2.0 / YARN</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">，几乎能实时分析数据。而下一代大数据的计算牵引框架</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">Apache Spark</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">，它的速度比</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">Hadoop</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">快</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">100</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">倍。</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">硅谷风险投资机构</span><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F">Andreessen Horowitz</span><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F">，已经以</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">1400</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">万美元的价格，领投了一家以</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">Apache Spark</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">为业务核心的初创企业</span><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F">Databricks</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">。不久前，</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">亚马逊也</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F"><a href="http://www.pingwest.com/amazon-kinesis/" target="_blank" style="font-size:inherit;font-style:inherit;font-variant:inherit;font-weight: inherit;line-height:inherit;transition: 0.1s;-webkit-transition: 0.1s"><span style="color: #0000ff; border: 1pt none windowtext; padding: 0in; text-decoration: none;">上线了实时流数据服务</span><span style="color: #0000ff; border: 1pt none windowtext; padding: 0in; text-decoration: none;">Kinesis</span></a></span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">，来帮助没有数据处理能力的公司解决这一问题。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;"><strong>许多分析供应商都已经认识到了数据处理速度的重要性</strong></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">，并建立了能够每秒处理</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">TB</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">数据的产品。</span><span style="font-size: 12pt; font-family: 宋体; color: #ff0000;"><strong>传感器数据分析、物联网在工业和消费级市场快速发展的势头，驱动了这次变革。</strong></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">比如</span><strong><span style="font-size: 11pt; font-family: 宋体; color: #800000;">一家企业的传感器，能够每秒产生出数百次的事件，实时处理这些数据难度很高。特别是当实时处理的传感器数据，激增到一天</span><span style="font-size: 11pt; font-family: 宋体; color: #800000;">5TB</span><span style="font-size: 11pt; font-family: 宋体; color: #800000;">的时候，速度，就成了尤为关键的指标。</span></strong></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F"><br />同时，尽管数据存储成本已经累年下降，但数据存储的费用还是不小的一笔支出。部分商家相比存储完整数据流而言，更倾向于保存过滤掉噪音的数据。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="font-size:inherit;font-style:inherit; font-variant:inherit;line-height:inherit"><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F;border:none windowtext 1.0pt; padding:0in">智能清洗</span></strong><strong><span style="font-size:11.0pt; font-family:宋体;color:#3F484F;border:none windowtext 1.0pt;padding:0in">&#8220;</span></strong><strong><span style="font-size:11.0pt;font-family:宋体;color:#3F484F;border:none windowtext 1.0pt;padding:0in">垃圾数据</span></strong><strong><span style="font-size:11.0pt;font-family:宋体; color:#3F484F;border:none windowtext 1.0pt; padding:0in">&#8221;</span></strong></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">在本就难以计数的数据量继续以指数模型激增时，对于数据质量的强化，便摆上了许多数据供应商的议程。</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">换句话说，在庞大数据面前，即使计算机能够高效的处理它们，但大量无用的</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">&#8220;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">垃圾</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F">&#8221;</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">数据，只会给系统带来负担，并增添存储、主机等设备成本。</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">这就需要数据处理过程中，根据特定的规则和参数，对涌进数据流进行</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">&#8220;</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">清洗</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">&#8221;</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;">和分析，并自动决策该去处理哪些数据，这一切不再需要人工去干预。</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F"><br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">在这样的环境下，如果选择了一个坏的数据，就会像病毒一样，可能引发连续的错误决策，甚至让企业蒙受经济损失。</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;"><strong>一个例子就是利用算法去进行股票交易，以毫秒计数股票市场中，任何一点小的差错，都有可能引发无法巨大的损失。</strong></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F"><br /></span><span style="font-size: 11pt; font-family: 宋体; color: #3f484f;"><br />所以，数据质量已成为服务级别协议（</span><span style="font-size: 11pt; font-family: 宋体; color: #3f484f;">service level agreements</span><span style="font-size: 11pt; font-family: 宋体; color: #3f484f;">）最重要的参数之一。无法屏蔽劣质的数据的供应商，会因此被列入行业的黑名单，以及面临严重的经济处罚。</span><span style="font-size: 11pt; font-family: 宋体; color: #3f484f;">B2B</span><span style="font-size: 11pt; font-family: 宋体; color: #3f484f;">行业为早期数据质量的入局者，他们非常重视数据的质量，来保持商业运作时的稳定性。甚至，许多企业计划为数据质量部署实时的警告系统，这些警告会被发送于负责相应问题的专员，由他们提供问题的解决方案。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">机器学习是另一项需要保证数据质量的领域。机器学习系统部署在一个闭环的生态中，通过模式分析与其他的数据分析技术，细化原来的数据质量规则。而高质量的数据，能够保证机器进行正确的行为模式分析。</span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="font-size:inherit;font-style:inherit; font-variant:inherit;line-height:inherit"><span style="font-size: 11.0pt;font-family:宋体; color:#3F484F;border:none windowtext 1.0pt; padding:0in"><br />越来越多的基础应用</span></strong></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">大数据带来的变革，使得每一个人都想要利用它，但技术上门槛又让许多人不得已只能充当一个看客。而应用将有助于人们去克服这一困难。在接下来的几年中，我们将会看到成千上万的解决</span><span style="font-size: 11pt; font-family: 宋体; color: #0000ff;"><strong>某一垂直领域的专业应用</strong></span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">，以应对来自各行各业的大数据挑战。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">目前，已经小有成就的数据分析公司包括</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">eHarmony</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">、</span><span style="font-size:11.0pt; font-family:宋体;color:#3F484F"> Roambi</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">、</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F"> Climate Corporation</span><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">等等。未来，甚至许多小企业，既不用依赖特定基础设备，也不要雇佣专业的数据科学家，就能受益于对大数据分析利用。<br /><br /></span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:11.0pt;font-family:宋体;color:#3F484F">比如，一些应用将从各种渠道，收集关联的客户数据，以更好地了解客户的需求。从而企业能够为特定的目标客户，提供特定需求的产品，更有针对性地赚到钱。当这些应用走进人们日常的吃喝玩乐、医疗保健等领域，生活也会因此而更美好。</span></p>  <p style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal">&nbsp;</p><img src ="http://www.blogjava.net/crazycy/aggbug/409097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-19 01:59 <a href="http://www.blogjava.net/crazycy/archive/2014/01/19/409097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL学习（七）Hadoop是数据仓库的终结者吗?</title><link>http://www.blogjava.net/crazycy/archive/2014/01/19/409096.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 18 Jan 2014 17:27:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/19/409096.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/409096.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/19/409096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/409096.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/409096.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Hadoop是数据仓库的终结者吗?<br />2014年01月13日　|　作者：邹铮编译　|　来源：网界网<br />http://news.cnw.com.cn/news-international/htm2014/20140113_289451.shtml<p style="margin:0in;margin-bottom:.0001pt;text-indent:21.0pt;line-height:19.5pt; background:white"><strong><span style="font-size:10.5pt;font-family: 宋体;color:#313131">【</span></strong><strong><span style="font-size:10.5pt; font-family:宋体;color:#313131">CNW.com.cn独家译稿】</span></strong><span style="font-size:10.5pt;font-family:宋体;color:#313131">在过去三年，</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">Hadoop生态系统已经大范围扩展，很多主要IT供应商都推出了Hadoop连接器，以增强Hadoop的顶层架构或是供应商自己使用的Hadoop发行版。鉴于Hadoop的部署率呈指数级的增长，以及其生态系统不断地深入而广泛地发展，我们很想知道Hadoop的崛起是否会导致传统数据仓库解决方案的终结呢。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体; color:#313131">我们也可以将这个问题放到一个更大的环境中去讨论：在何种程度上，大数据会改变传统数据分析的环境</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">?</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体; color:#313131">数据仓库是技术和软件套件，它能够从操作系统收集数据，并将这些数据整合，并统一到中央数据库中，然后对数据仪表盘上指标进行分析、可视化和追踪关键性能处理。</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><strong><span style="font-size:10.5pt; font-family:宋体;color:red">数据仓库和</span></strong><strong><span style="font-size:10.5pt;font-family:宋体;color:red">Hadoop之间的主要区别是：数据仓库通常部署在单个关系数据库中，而这个数据库则起到中央存储的作用。相比之下，Hadoop及其Hadoop文件系统是跨多个机器，并用来处理海量数据的，而这是任何单台机器都达不到的能力。</span></strong></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体; color:#313131">此外，</span><strong><span style="font-size:10.5pt;font-family:宋体;color:red">Hadoop生态系统包括构建在Hadoop核心之上的数据仓库层/服务，而Hadoop上层服务包括SQL(Presto)、SQL-Like(Hive)和NoSQL(Hbase)类型的数据存储</span></strong><span style="font-size:10.5pt;font-family:宋体;color:#313131">。相比之下，<strong>在过去的十年中，大型数据仓库转移到使用自定义多处理器设备来扩展数据量</strong>，像</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">Netezza(被IBM收购)和Teradata所提供的数据仓库。然而，这些设备都非常昂贵，大多数中小企业都负担不起。</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">在这种背景下，我们很自然地要问：</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">Hadoop是否是数据仓库的终结者?</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">为了回答这个问题，我们需要将数据仓库技术与数据仓库部署分开来看。</span><strong><span style="font-size:10.5pt;font-family: 宋体;color:#313131">Hadoop(和NoSQL数据库的出现)将预示着数据仓库设备和传统数据仓库单一数据库部署的消亡</span></strong><span style="font-size:10.5pt;font-family:宋体;color:#313131">。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体; color:#313131">而在这方面就有过实例。</span><span style="font-size:10.5pt;font-family: 宋体;color:#313131">Hadoop供应商Cloudera将其平台作为&#8220;企业数据枢纽&#8221;，这在本质上将传统数据管理解决方案的纳入了需求。ReadWrite.com在最近发表的一篇题为&#8220;为什么专有大数据技术没有希望与Hadoop竞争&#8221;的文章中也发表了类似的看法。同样地，最近一篇华尔街日报文章描述了Hadoop如何挑战甲骨文和Teradata。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">Hadoop或NoSQL生态系统仍将继续发展。很多大数据环境开始选择NoSQL、SQL甚至是NewSQL数据仓库的混合方法。此外，<strong>MapReduce并行处理引擎也有变化和改进，例如Apache的Spark项目</strong>。虽然这个故事还远远没有结束，<strong>但可以说，传统的单一服务器关系型数据库或数据库设备并不是大数据或数据仓储的未来</strong>。</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">另一方面，数据仓库技术</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">(包括提取&#8212;转换&#8212;和&#8212;加载、三维建模和商业智能)将会应用到新的Hadoop/NoSQL环境。此外，这些技术也将变身来支持更多的混合环境。主要原则是因为并不是所有数据都是平等的，所以IT经理们应该选择数据存储和访问机制来适应数据的使用。混合环境将包括关键价值存储、关系型数据库、图形存储、文档存储、柱状存储、XML数据库、元数据目录等等。</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">正如你所看到的，这并不是一个简单的问题，也不可能简单地得出一个答案。然而，一般情况下，虽然大数据在未来五年内将会改变数据仓库的部署，但它不会导致数据仓库的概念和做法过时。</span></p>  <p style="margin: 0in 0in 11.25pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体;color:#313131">对于向数据仓库投入巨资的联邦政府这意味着什么呢</span><span style="font-size:10.5pt;font-family:宋体;color:#313131">?</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 21pt; line-height: 19.5pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.5pt;font-family:宋体; color:#313131">首先，当现有数据仓库的容量不够时，数据仓库将被转移到基于</span><span style="font-size:10.5pt; font-family:宋体;color:#313131">Hadoop、多机器或云托管的解决方案。其次，企业并不会选择&#8220;放之四海而皆准&#8221;的做法，而会将目光转向适合其企业内部数据容量的混合存储方法。（邹铮编译）</span></p>  <p>&nbsp;</p></div><img src ="http://www.blogjava.net/crazycy/aggbug/409096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-19 01:27 <a href="http://www.blogjava.net/crazycy/archive/2014/01/19/409096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL学习（六）﻿ 2014年大数据分析趋势展望(转)</title><link>http://www.blogjava.net/crazycy/archive/2014/01/18/409091.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 18 Jan 2014 13:51:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/18/409091.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/409091.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/18/409091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/409091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/409091.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all">2014年大数据分析趋势展望<br />Posted&nbsp;on&nbsp;2014年01月8日&nbsp;by&nbsp;DinK&nbsp;in&nbsp;行业资讯&nbsp;<br />http://www.199it.com/archives/185758.html</div><br /><p style="margin-top:0in;margin-right:0in;margin-bottom:.25in;margin-left:0in; text-indent:24.0pt;background:white;vertical-align:baseline"><span style="font-size:10.0pt;font-family:宋体; color:#333333">市场研究公司</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">IDC预测，2015年大数据市场规模将从2010年的32亿美元增长到170亿美元，复合年增长率为40%。大数据是一个庞大的新的领域，其中的数据集可以增长的非常庞大，以至于使用传统的数据库管理工具也很难处理。处理这种问题所需要的新工具、框架、硬件、软件和服务是一个巨大的市场机会。随着企业用户越来越多地需要连续不断地访问数据，好的大数据工具集将以最低的成本和接近实时的速度提供可伸缩的、高性能的分析。通过分析这种数据，企业可得到更大的智能以及竞争优势。下面是Hadoop和大数据专业厂商MapR共同创始人和首席执行官约翰&#183;施罗德（John&nbsp;Schroeder）对2014大数据市场的预测。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">1.&nbsp;SQL拥有大数据的最大潜力</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">用于</span><span style="font-size:10.0pt;font-family:宋体;color:#333333"> Hadoop（分布式计算）的SQL的发展能够让商业分析师利用自己的技能和选择的SQL工具执行大数据项目。开发人员可以选择Hive、Drill和 Impala等Apache项目，以及选择Hadapt、HAWQ和Splice&nbsp;Machine等公司的专有技术。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">2.&nbsp;尽管如此&nbsp;SQL还面临挑战</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">SQL需要数据结构。而集中的结构化数据可引起延迟并且需要人工管理。SQL还限制分析类型。过分强调SQL将延迟机构全面利用其数据价值的努力和延迟反应。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">3.&nbsp;身份识别是主要的数据安全问题</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">随着</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Hadoop（分布式计算）中提供的接入控制能力的猛烈攻击，机构迅速认识到线路级身份识别是必要的基础。没有充分的身份识别，任何更高级的控制都很容易被绕过，妨碍预定的安全计划。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">4.&nbsp;数据错误变成学习机会</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">2014年机构将出现许多数据错误。数据错误将表明基础的来源系统的问题吗？数据错误是在下游分析中出现偏差导致的数据提取问题吗？数据错误将表明定义差异或者缺少跨部门和业务部门的一致性吗？2014年将看到解决数据异常问题。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">5.&nbsp;出现可运行的Hadoop</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">2014年将看到Hadoop在各个行业中的生产部署显著增加。这将显示出Hadoop在运营中的实力。在那里，生产应用与分析结合在一起能够提供可以衡量的商业优势，如在客户化零售建议、诈骗检测和试验传感器数据进行规范的维护等应用中提供这些优势。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">6.&nbsp;更多的数据仓库将部署企业数据中心</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">数据中心把数据提取处理和数据从企业数据仓库卸载到</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Hadoop。作为一个核心的中心企业中心，数据中心要便宜10倍，能够对额外的处理或者新的应用进行更多的分析。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">7.&nbsp;新的以数据为中心的应用将成为强制性的</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">利用大数据的能力将在</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2014年成为竞争的武器。更多的公司将使用大数据和Hadoop准确地针对个人消费者的偏爱追逐赚钱的追加销售和交叉销售的机会，更好地缓解风险以及减少生产和开销成本。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">8.&nbsp;数据成为数据中心的核心</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">机构将从开发者过渡到大数据计划中。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">IT部门将越来越多地担负定义支持多种应用的数据基础设施的任务，把重点集中在部署、处理和保护一个机构的核心资产所需要的基础设施方面。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">9.&nbsp;搜索将成为非结构化的查询语言</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">2013年有大量的用于Hadoop的SQL计划。2014年将是这种非结构化查询语言成为重点的一年。把搜索集成到Hadoop将为查找重要信息的企业用户提供一种简单和直观的方法。搜索引擎还是包括推荐引擎在内的许多发现和分析应用的核心。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">10.&nbsp;Hadoop将获得地位</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">Hadoop将继续取代其它IT开支，颠覆企业数据仓库和企业存储。例如，甲骨文的主要营收目标在过去的10个季度里有5个季度没有实现。Teradata在过去的5个季度有4个季度没有实现营收和利润目标。</span></p>  <p style="margin: 0in 0in 0.0001pt; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><strong style="color:inherit"><span style="font-size:10.0pt; font-family:宋体;color:#333333;border:none windowtext 1.0pt;padding:0in">11.&nbsp;Hadoop仍需要帮助才能成为主流应用</span></strong></p>  <p style="margin: 0in 0in 0.25in; text-indent: 24pt; background-color: white; vertical-align: baseline; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体; color:#333333">更多的机构认识到</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Apache&nbsp;Hadoop本身还没有准备好在企业应用。Apache&nbsp;Hadoop不是为系统管理或者灾难恢复等统一企业IT流程设计的。企业将继续推进混合的解决方案，把架构技术创新与Apache&nbsp;Hadoop的开源软件结合在一起。</span></p>  <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->英文http://www.cio.com.au/slideshow/534054/pictures_12_big_data_predictions_2014/?image=3<br /><br />译文http://www.csdn.net/article/2013-12-25/2817926-pictures-12-big-data-predictions-2014<br />2014的12个大数据趋势：Hadoop继续升温，R将进入主流</div><p style="margin:0in;margin-bottom:.0001pt;background:white"><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">当下，</span><span style="font-size:10.0pt;
font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-fareast;mso-bidi-font-family:Helvetica;color:#333333">&#8220;</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">大数据</span><span style="font-size:10.0pt;
font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-fareast;mso-bidi-font-family:Helvetica;color:#333333">&#8221;</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">已成为</span><span style="font-size:10.0pt;
font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-fareast;mso-bidi-font-family:Helvetica;color:#333333">2013</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">年最火的技术词汇之一；而在过去一年，这个市场的增速和改变也不可谓不大。同时，我们还看到了</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:Helvetica;color:#333333">Hadoop</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">及其生态系统的使用门槛从顶尖技术人才到数据科学家的改变。越来越多的企业拥抱大数据技术，并将其运用到生产环境中。那么，在</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:Helvetica;color:#333333">2014</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">年大数据的发展趋势又会如何，这里不妨看一下来自</span><span style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:Helvetica;color:#333333">CIO</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">的</span><span style="font-size:10.0pt;
font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-fareast;mso-bidi-font-family:Helvetica;color:#333333">12</span><span lang="ZH-CN" style="font-size:10.0pt;font-family:宋体;mso-ascii-theme-font:minor-fareast;
mso-fareast-theme-font:minor-fareast;mso-hansi-theme-font:minor-fareast;
mso-bidi-font-family:宋体;color:#333333">项预测：</span><span style="font-size:10.0pt;
font-family:宋体;mso-ascii-theme-font:minor-fareast;mso-fareast-theme-font:minor-fareast;
mso-hansi-theme-font:minor-fareast;mso-bidi-font-family:Helvetica;color:#333333"><o:p></o:p></span></p><p style="line-height:normal"><strong style="line-height: 21px;"><span style="font-size:10.0pt;font-family:宋体;color:#333333">1. </span></strong><strong style="line-height: 21px;"><span style="font-size:10.0pt;font-family:宋体;color:#333333">人们不再止步于大数据的谈论</span></strong><span style="line-height: 21px; font-size: 10pt; font-family: 宋体; color: #333333;"><a href="http://cms.csdnimg.cn/article/201312/25/52ba972c8dcfc.jpg" target="_blank">&nbsp;</a></span></p><p style="margin: 0in 0in 0.0001pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><span style="font-size:10.0pt;font-family:宋体;color:#333333"> 2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，大数据止于说的情况将发生改变，人们将致力于从中获益，所有大数据的炒作也将</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">烟消云散</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8221;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">。从</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Gainsight</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">了解到，大数据本身也将成为桌面上的筹码，</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Gainsight</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">在其</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">IaaS</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">平台中利用大数据分析被其称之为</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8220;customer success management&#8221;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">的服务。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Gainsight</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">认为，在</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，每家云应用程序提供商都将会让其后端基础设施支持大数据。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />2. Hadoop</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">将成为企业的关键组件</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">将普及，大数据也不会再继续止步于云服务。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Alteryx</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">认为，</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">的适用场景将超越批处理和存储，将成为企业数据架构中通用的核心组件，这意味着数据分析将继续成为大数据的首要用例。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />3. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">企业将更加钟情于用户数据</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> </span><span style="font-size:10.0pt;font-family:宋体;color:#333333">从</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Gainsight</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">了解到，各个机构将对用户数据充满热情，企业将充分利用客户与其在线产品或服务交互产生的数据，并从中获取价值。为了实现这点，数据分析能力将比</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">BI</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">团队更受重视，为企业提供更多的价值。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />4. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">大数据玩转市场决策</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> Alteryx</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">认为，在</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，大数据将首次正式登陆市场营销，用于市场营销的大数据技术将在这一年扮演重要角色</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8212;&#8212;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">影响着广告、产品推销和消费者行为，</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">World Cup</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">及</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Winter Olympics</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">将是其最大的舞台。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />5. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">海量的数据将超越数据科学家的意识</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> lteryx</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">认为，新型的数据分析需求将超越人力可为，有些情况下大数据技术将堪比成千上万的数据科学家。该公司预测，这将会毫无疑问的拉低数据科学家薪酬。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />6. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">物联网将进军网络</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> IEEE</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">的专业协会认为，</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">2014</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">年，可识别事物将无缝的连接到信息网络，实现真正意义上的</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Web of Things</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">The Web of Things</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">将会充分利用移动设备和传感器的监控能力，增强现实世界中的物体与</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Web</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">副本之间的协同性。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><span style="font-size:10.0pt;font-family:宋体;color:#333333">The Web of Things</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">将会生成大量与现实世界相关的数据，因而会需求智能化的解决方案在现实世界与相对应的数字世界资源之间赋予连接性、网际互连和相关性。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />7. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">从大数据到海量数据</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> </span><span style="font-size:10.0pt;font-family:宋体;color:#333333">数据的体积、速度和类型（</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">volume</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">、</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">velocity</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">和</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">variety</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">）在</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年将会继续呈指数级增长，因此需要更简单的分析工具来驾驭这些</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">数据洪流</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8221;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333"><br /> <br /> IEEE</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">称，</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">不止是</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">3</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">个</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">V</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">让大数据成了非常难以制服的老虎，数据科学家及行业所需简单工具也是个难题，许多行业尚无独立提取数据价值的能力。当前已出现的海量数据时代更需求数据管理和分析上新的范式和实践。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，这个领域将上演群雄争霸。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />8. R</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">语言将取代传统</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">SAS</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">解决方案</span></strong><span style="font-size: 10.0pt;font-family:宋体; color:#333333"><br /> Alteryx</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">认为，基于</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">R</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">编程语言的分析将数据科学家</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">御用</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8221;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">模式，这种分析在</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">2014</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">年将成为主流，将替代传统的</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">SAS</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">及</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">SPSS</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">模式。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Alteryx</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">说道：</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">超过</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">200</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">万用户和</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">300</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">万的分析师都在寻找更好的解决方案，</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">R</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">恰逢其时。</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />9. Hadoop</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">将增加实时特性</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> SQL-on-Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">供应商</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Splice Machine</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">共同创始人兼</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">CEO Monte Zweben</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">指出，未来</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">1</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年建立在</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">平台上的交互式应用程序将呈爆发式增长，其中包括</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Web</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">应用、移动应用和社交应用，人们可以与之进行实时的交互。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><span style="font-size:10.0pt;font-family:宋体;color:#333333">Zweben</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">说道：</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">将带来实时大数据应用程序平台，企业将不会只能像当下一样分析历史数据，你将有能力分析</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">5</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">分钟，甚至是</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">1</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">分钟之内的数据；企业将拥有交互式应用程序，以便实时的制定决策。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />10. Hadoop</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">将得到企业级强化</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> Splice Machine</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">的</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Zweben</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">说：</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">毋庸置疑，</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">是个了不起的平台，但是仍然有许多工作要做。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><span style="font-size:10.0pt;font-family:宋体;color:#333333">他认为，在</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">，你将看到</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">向安全、运营管理、资源管理及多站点响应方向发展。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Zweben</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">补充道：</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">你将看到所有的企业级需求，我认为这些将是未来主要的焦点。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />11. &nbsp;2014</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">年底，至少有一家</span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">NoSQL IPO</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> </span><span style="font-size:10.0pt;font-family:宋体;color:#333333">大数据及云环境安全解决方案</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Gazzang</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">董事长兼</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">CEO Larry Warnock</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">预测，在</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">，至少有一家</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">Hadoop</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">或者</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">NoSQL</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">供应商会</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">IPO</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">，这标志着大数据平台已被广泛认可。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;background:white"><span style="font-size:10.0pt;font-family:宋体;color:#333333">Warnock</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">说道：</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">&#8220;</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">我不会去预测哪家会</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">IPO</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">，但是至少会有一家</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">Hadoop</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">或</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">NoSQL</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">供应商</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">IPO</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">。通过</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">Wikibon</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">了解到，在</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">2012</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，</span><span style="font-size:10.0pt; font-family:宋体;color:#333333">NoSQL</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">软件和服务创造了</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">2.86</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">亿美元的税收，而在</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2017</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，这个数据被预测为</span><span style="font-size: 10.0pt;font-family:宋体; color:#333333">18.25</span><span style="font-size:10.0pt;font-family: 宋体;color:#333333">亿。商场被不断增长的企业需求推动，他们需要灵活、可扩展及负担得起的数据管理解决方案，为新时代的云及大数据设计。</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">&#8221;</span></p>  <p style="margin: 0in 0in 0.0001pt; background-color: white; background-position: initial initial; background-repeat: initial initial;"><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br />12. </span></strong><strong><span style="font-size:10.0pt;font-family:宋体;color:#333333">一个新的分析堆栈将诞生</span></strong><span style="font-size:10.0pt;font-family:宋体;color:#333333"><br /> Alteryx </span><span style="font-size:10.0pt;font-family:宋体;color:#333333">预测，</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">2014</span><span style="font-size:10.0pt;font-family:宋体;color:#333333">年，将出现一个新的数据及分析堆栈，为数据库、分析、可视化提供新的解决方案，这将直接威胁到传统的供应商巨头，而这些供应商也会在匆忙中推出新的解决方案。</span></p>  <p style="margin-bottom:0in;margin-bottom:.0001pt;line-height: normal">&nbsp;</p><img src ="http://www.blogjava.net/crazycy/aggbug/409091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-18 21:51 <a href="http://www.blogjava.net/crazycy/archive/2014/01/18/409091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL学习（五）Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Neo4j vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison</title><link>http://www.blogjava.net/crazycy/archive/2014/01/14/408883.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 17:34:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/14/408883.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408883.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/14/408883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408883.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Cassandra&nbsp;vs&nbsp;MongoDB&nbsp;vs&nbsp;CouchDB&nbsp;vs&nbsp;Redis&nbsp;vs&nbsp;Riak&nbsp;vsHBase&nbsp;vs&nbsp;Couchbase&nbsp;vs&nbsp;Neo4j&nbsp;vs&nbsp;Hypertable&nbsp;vsElasticSearch&nbsp;vs&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/01/14/408883.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/408883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-14 01:34 <a href="http://www.blogjava.net/crazycy/archive/2014/01/14/408883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL非关系型数据库学习（四）这样对比下HBase, Memcached, MongoDB, Redis和Solr</title><link>http://www.blogjava.net/crazycy/archive/2014/01/14/408880.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 16:27:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/14/408880.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408880.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/14/408880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408880.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Sourcehttp://db-engines.com/en/system/HBase%3BMemcached%3BRedis%3BSolr     Name      HBase&nbsp;&nbsp;       Memcached&nbsp;       MongoDB&nbsp;&nbsp;       Redis&nbsp;&n...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/01/14/408880.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/408880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-14 00:27 <a href="http://www.blogjava.net/crazycy/archive/2014/01/14/408880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Failed to load the JNI shared library "C:/JDK/bin/client/jvm.dll"</title><link>http://www.blogjava.net/crazycy/archive/2014/01/13/408875.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 11:47:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/13/408875.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408875.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/13/408875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408875.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408875.html</trackback:ping><description><![CDATA[Encounter this error during using a new SOAP mock client tool: C:/JDK/bin/client/jvm.dll<br /><br />The solution to resolve it is to make sure the version are all 64 bits<ul style="margin: 0px 0px 1em 30px; padding: 0px; border: 0px; vertical-align: baseline; background-color: #ffffff; list-style-position: initial; list-style-image: initial; font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px;"><li style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">64-bit Java</li><li style="margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: transparent;">64-bit {tool}</li></ul><br /><img src ="http://www.blogjava.net/crazycy/aggbug/408875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-13 19:47 <a href="http://www.blogjava.net/crazycy/archive/2014/01/13/408875.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL非关系型数据库学习（三）NoSQL与RDBMS：何时使用，何时不使用</title><link>http://www.blogjava.net/crazycy/archive/2014/01/13/408845.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 04:12:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/13/408845.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408845.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/13/408845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408845.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: NoSQL数据库面临的挑战NoSQL vs RDBMS: Why and why not to use NoSQL over RDBMS?&nbsp;  Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Naresh&nbsp;Kumar3&nbsp;J...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/01/13/408845.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/408845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-13 12:12 <a href="http://www.blogjava.net/crazycy/archive/2014/01/13/408845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL非关系型数据库学习（二）</title><link>http://www.blogjava.net/crazycy/archive/2014/01/13/408844.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 04:03:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/13/408844.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408844.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/13/408844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408844.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408844.html</trackback:ping><description><![CDATA[<p style="margin:0in;margin-bottom:.0001pt;line-height:18.75pt;background:white"><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">Gartner</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">分析师</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">Merv Adrian</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">在</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">Twitter</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">上</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">RT</span><span style="font-size: 11.0pt;font-family:宋体;Times New Roman&quot;;">了一条关于</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">NoSQL</span><span style="font-size: 11.0pt;font-family:宋体;Times New Roman&quot;;">数据库评选的消息，他认为这就像是在对比你更喜欢苹果、鸡尾酒还是西兰花，它们都有不同的应用场景，对比</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">NoSQL</span><span style="font-size: 11.0pt;font-family:宋体;Times New Roman&quot;;">产品是没有意义的。比如</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">MongoDB</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">和</span><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">Cassandra</span><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">就没有什么可比性，<strong>它们的共同点只是都叫做</strong></span><strong><span style="font-size:11.0pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;">NoSQL</span></strong><strong><span style="font-size:11.0pt;font-family:宋体;Times New Roman&quot;;">数据库而已，它们的应用场景非常不同。</span></strong><strong></strong></p>  <p style="margin:0in;margin-bottom:.0001pt;line-height:18.75pt;background:white"><strong>&nbsp;</strong></p>  <p><span style="font-family:宋体;">下面还是根据学习，对现在比较热门的MangoDB和Memcached以及Redis做个简单的学习：</span></p>  <p><strong>MangoDB<span style="font-family:宋体;">是</span>(document database, <span style="font-family:宋体;">硬盘型</span>)</strong><br /> a.&nbsp;<span style="font-family:宋体;">基于磁盘的数据库，只是缓存热点数据在内存中。</span><br /> b. <span style="font-family:宋体;">文档型的非关系型数据库，</span><br /> &nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">优势是查询功能强大，可存储海量数据。</span><br /> c. <span style="font-family:宋体;">可替换</span>MySQL<span style="font-family:宋体;">等关系型数据库</span>; <br /> &nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">在内存足够的情况下，读写性能不错，可省去</span>Cache<span style="font-family:宋体;">这一层<br /><br /></span></p>  <p><strong>Memcached<span style="font-family:宋体;">和</span>Redis<span style="font-family:宋体;">是</span>(key value store, <span style="font-family:宋体;">内存型</span>)</strong><br /> a.<span style="font-family:宋体;">内存型数据库，数据保存在内存中，通过</span>TCP<span style="font-family:宋体;">直接存取；</span> <span style="font-family:宋体;">或者说是全内存</span>Cache<span style="font-family:宋体;">。</span><br /> &nbsp;&nbsp; <span style="font-family: 宋体;">优势是速度快，并发高，缺点是数据类型有限，查询功能不强，一般做缓存。</span><br /> b. Key Value Store<br /> c. 全内存<br /><br /></p>  <p><strong>Memcached vs Redis</strong><br /> a. 都是Key Vale, Memory Cache<br /> b. Memecahced是 multiple-thread; <span style="font-family:宋体;">适合多核</span>CPU<span style="font-family:宋体;">的应用。</span><br /> &nbsp;&nbsp;&nbsp; Redis是 single-thread.<br /> &nbsp;&nbsp;&nbsp; <span style="font-family: 宋体;">如果再多数据结构基础上支持多线程，加锁可能是个问题</span><span style="font-family: 宋体; color: red;"><strong>（待深入学习验证）</strong></span>。<br /> c. Redis<span style="font-family:宋体;">具有持久化机制，可以定期将内存的数据持久化到硬盘上</span> <br /> d. Redis<span style="font-family:宋体;">支持的数据类型更多</span><br /> e. Redis <span style="font-family:宋体;">具备</span>binlog<span style="font-family:宋体;">功能，将所有操作写入日志，以便</span>redis<span style="font-family:宋体;">出现故障时，可通过</span>binlog<span style="font-family:宋体;">进行恢复。</span><br /> f. Redis<span style="font-family:宋体;">支持</span>Virtual Memory<span style="font-family:宋体;">，可限定内存大小，当数据超出阀值，就通过类似</span>LRU<span style="font-family:宋体;">的算法将最不常用的数据保存到硬盘的页面问题中。</span></p>  <p style="margin:0in;margin-bottom:.0001pt;line-height:18.75pt;background:white">&nbsp;</p><img src ="http://www.blogjava.net/crazycy/aggbug/408844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-13 12:03 <a href="http://www.blogjava.net/crazycy/archive/2014/01/13/408844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NoSQL非关系型数据库学习（一）</title><link>http://www.blogjava.net/crazycy/archive/2014/01/13/408842.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 13 Jan 2014 03:53:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/13/408842.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408842.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/13/408842.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408842.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408842.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在2008年的时候，我还是只知道DB2,Oracle, MS SQLServer, Sybase, MySQL, PostgreSQL,&nbsp; Firebird等主流商业或者开源数据库。当汲取知识于网络之际，突然发现很多新的名词鱼跃而出，什么 SQLite, Memcached,&nbsp; FastDB, MongoDB,Solr, Redis, HBase, &nbsp;Cass...&nbsp;&nbsp;<a href='http://www.blogjava.net/crazycy/archive/2014/01/13/408842.html'>阅读全文</a><img src ="http://www.blogjava.net/crazycy/aggbug/408842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-13 11:53 <a href="http://www.blogjava.net/crazycy/archive/2014/01/13/408842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Download of Spring Framework </title><link>http://www.blogjava.net/crazycy/archive/2014/01/06/408589.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Mon, 06 Jan 2014 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2014/01/06/408589.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/408589.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2014/01/06/408589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/408589.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/408589.html</trackback:ping><description><![CDATA[Spring has upgrade their website as&nbsp;<a href="http://spring.io/" title="spring.io"><span style="color: #008000;">spring.io</span></a><br /><br />And the download of zip files has become a bit confusion.<br />Base on&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->You&nbsp;now&nbsp;have&nbsp;to&nbsp;download&nbsp;the&nbsp;zip&nbsp;files&nbsp;form&nbsp;their&nbsp;repository,&nbsp;as&nbsp;stated&nbsp;here:&nbsp;<br /><span style="color: #008000;">https:</span><span style="color: #008000;">//</span><span style="color: #008000;">github.com/spring-projects/spring-framework/wiki/Downloading-Spring-artifacts&nbsp;<br />(statement&nbsp;at&nbsp;the&nbsp;bottom&nbsp;of&nbsp;the&nbsp;page).</span></div><br />Download cannot proceed without account/login, so I decide to the below page and download jar by jar.<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">mvnrepository.com/artifact/org.springframework</span></div><br />When come to "spring-security-core", I question myself that how I can get all dependent jar files.<br />With this question, I find the direct link to download the whole zip file:<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">http:</span><span style="color: #008000;">//</span><span style="color: #008000;">repo.spring.io/release/org/springframework/spring<br />or<br /></span><span style="color: #008000;">https://github.com/spring-projects/spring-framework/releases</span></div><br />Also, there is another DIY solution from Spring website&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000;">https:</span><span style="color: #008000;">//</span><span style="color: #008000; ">github.com/spring-projects/spring-framework/wiki/Downloading-Spring-artifacts<br /></span><span style="color: #008000;">(statement&nbsp;at&nbsp;the&nbsp;bottom&nbsp;of&nbsp;the&nbsp;page).</span></div>Also, some folks are already provided the detailed steps:<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;">The&nbsp;solution&nbsp;I&nbsp;prefer&nbsp;is&nbsp;using&nbsp;Maven,&nbsp;it&nbsp;is&nbsp;easy&nbsp;and&nbsp;you&nbsp;don't&nbsp;have&nbsp;to&nbsp;download&nbsp;each&nbsp;jar&nbsp;alone.&nbsp;you&nbsp;can&nbsp;do&nbsp;it&nbsp;with&nbsp;the&nbsp;following&nbsp;steps:<br /><br />1.&nbsp;Create&nbsp;an&nbsp;empty&nbsp;folder&nbsp;in&nbsp;anywhere&nbsp;with&nbsp;any&nbsp;name&nbsp;you&nbsp;prefer,&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;example&nbsp;spring-source<br />2.&nbsp;Create&nbsp;a&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;file&nbsp;named&nbsp;pom.xml<br />3.&nbsp;Copy&nbsp;the&nbsp;following&nbsp;in&nbsp;<span style="color: #0000FF; ">this</span>&nbsp;file<br />4.&nbsp;Open&nbsp;the&nbsp;spring-source&nbsp;folder&nbsp;in&nbsp;your&nbsp;console<br />5.&nbsp;Run&nbsp;mvn&nbsp;install<br />6.&nbsp;After&nbsp;download&nbsp;finished,&nbsp;you'll&nbsp;find&nbsp;spring&nbsp;jars&nbsp;in&nbsp;/spring-source/target/dependencies</div>Configuration is as below:<br /><div style="background-color: #eeeeee; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><div><span style="font-size: 10pt;">&lt;project&gt;</span></div><div>&nbsp;&nbsp;<span style="font-size: 10pt;">&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;groupId&gt;spring-source-download&lt;/groupId&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;artifactId&gt;SpringDependencies&lt;/artifactId&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;version&gt;1.0&lt;/version&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;properties&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;/properties&gt;</span></div><div></div><div><span style="font-size: 10pt;">&nbsp; &lt;repositories&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;repository&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;id&gt;repository.spring.release&lt;/id&gt;</span></div><div><span style="white-space: pre;">&nbsp;     </span><span style="font-size: 10pt;">&lt;name&gt;<strong>Spring GA Repository</strong>&lt;/name&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;url&gt;http://repo.spring.io/release&lt;/url&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;snapshots&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;enabled&gt;false&lt;/enabled&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;/snapshots&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;/repository&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;/repositories&gt;</span></div><div></div><div><span style="font-size: 10pt;">&nbsp; &lt;dependencies&gt;<br />&nbsp; &nbsp; &lt;!--<span style="color: #ff0000;"><strong>each dependency refer to <br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;corresponding project under&nbsp;</strong></span></span><span style="color: #008000; font-size: 10pt;"><strong>http://spring.io/projects</strong></span><span style="font-size: 10pt;">--&gt;</span></div><div><span style="white-space: pre;">&nbsp;   </span><span style="font-size: 10pt;">&lt;!--<strong>spring-framework</strong>--&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; </span><span style="font-size: 10pt; color: #008000;">&lt;dependency&gt;</span></div><div><span style="font-size: 10pt; color: #008000;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;groupId&gt;org.springframework&lt;/groupId&gt;</span></div><div><span style="font-size: 10pt; color: #008000;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;artifactId&gt;spring-context&lt;/artifactId&gt;</span></div><div><span style="font-size: 10pt; color: #008000;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;version&gt;4.0.0.RELEASE&lt;/version&gt;</span></div><div><span style="font-size: 10pt; color: #008000;">&nbsp; &nbsp; &lt;/dependency&gt;</span></div><div></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;!--<strong>spring-security</strong>--&gt;</span></div><div><span style="white-space: pre;">&nbsp;   </span><span style="font-size: 10pt;">&lt;!--</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;dependency&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;groupId&gt;org.springframework.security&lt;/groupId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;artifactId&gt;spring-security-web&lt;/artifactId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;version&gt;3.2.0.RELEASE&lt;/version&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;/dependency&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;dependency&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;groupId&gt;org.springframework.security&lt;/groupId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;artifactId&gt;spring-security-config&lt;/artifactId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;version&gt;3.2.0.RELEASE&lt;/version&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;/dependency&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">--&gt;</span></div><div></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;!--<strong>spring-webflow</strong>--&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;!--</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;dependency&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;groupId&gt;org.springframework.webflow&lt;/groupId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;artifactId&gt;spring-webflow&lt;/artifactId&gt;</span></div><div><span style="white-space:pre">		</span><span style="font-size: 10pt;">&lt;version&gt;2.3.2.RELEASE&lt;/version&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;/dependency&gt;</span></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">--&gt;</span></div><div></div><div><span style="white-space:pre">	</span><span style="font-size: 10pt;">&lt;/dependencies&gt;</span></div><div></div><div><span style="font-size: 10pt;">&nbsp; &lt;build&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;plugins&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;plugin&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;artifactId&gt;maven-dependency-plugin&lt;/artifactId&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;version&gt;2.8&lt;/version&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;executions&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;execution&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;id&gt;download-dependencies&lt;/id&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;phase&gt;generate-resources&lt;/phase&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;goals&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;goal&gt;copy-dependencies&lt;/goal&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/goals&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;configuration&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;outputDirectory&gt; ${project.build.directory}/dependencies &lt;/outputDirectory&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/configuration&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/execution&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/executions&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &nbsp; &lt;/plugin&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &nbsp; &lt;/plugins&gt;</span></div><div><span style="font-size: 10pt;">&nbsp; &lt;/build&gt;</span></div><div><span style="font-size: 10pt;">&lt;/project&gt;</span></div></div>Furthermore,&nbsp;<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Also,&nbsp;if&nbsp;you&nbsp;need&nbsp;to&nbsp;download&nbsp;any&nbsp;other&nbsp;spring&nbsp;project,&nbsp;just&nbsp;copy&nbsp;the&nbsp;dependency&nbsp;configuration&nbsp;from&nbsp;its&nbsp;corresponding&nbsp;web&nbsp;page<br /><br />For&nbsp;example,&nbsp;if&nbsp;you&nbsp;want&nbsp;to&nbsp;download&nbsp;Spring&nbsp;Web&nbsp;Flow&nbsp;jars,&nbsp;go&nbsp;to&nbsp;its&nbsp;web&nbsp;page,&nbsp;and&nbsp;add&nbsp;its&nbsp;dependency&nbsp;configuration&nbsp;to&nbsp;the&nbsp;pom.xml&nbsp;dependencies,&nbsp;then&nbsp;run&nbsp;mvn&nbsp;install&nbsp;again.<br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span>org.springframework.webflow<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">groupId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span>spring-webflow<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">artifactId</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span>2.3.2.RELEASE<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">version</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">dependency</span><span style="color: #0000FF; ">&gt;</span></div><br /><br /><h3><span style="font-weight: normal;">引用一个文章：</span><a href="http://xiangtui.iteye.com/blog/675637" style="color: #108ac6;">如何在项目中引入Spring框架(<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 12px; font-weight: normal; line-height: 18px; background-color: #ffffff;">2010-05-26</span>)</a></h3><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><h3><a href="http://xiangtui.iteye.com/blog/675637" style="color: #108ac6;"><span style="font-size: 13px;">spring的jar包说明如下：</span></a></h3><strong style="color: #0000ff;">&gt;&gt;spring.jar</strong>&nbsp;<br />是包含有完整发布模块的单个jar&nbsp;包。<br />但是不包括mock.jar,&nbsp;aspects.jar,&nbsp;spring-portlet.jar,&nbsp;and&nbsp;spring-hibernate2.jar。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><strong>spring-src.zip就是所有的源代码压缩包。</strong><br /><br /><strong>除了spring.jar&nbsp;文件，Spring&nbsp;还包括有其它21&nbsp;个独立的jar&nbsp;包，各自包含着对应的Spring组件，用户可以根据自己的需要来选择组合自己的jar&nbsp;包，而不必引入整个spring.jar&nbsp;的所有类文件。</strong><br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-core.jar</strong><br />这个jar&nbsp;文件包含Spring&nbsp;框架基本的核心工具类。Spring&nbsp;其它组件要都要使用到这个包里的类，是其它组件的基本核心，当然你也可以在自己的应用系统中使用这些工具类。<br /><br />外部依赖Commons&nbsp;Logging，&nbsp;(Log4J)。<br /><br /><span style="color: #0000ff;"><strong>&gt;&gt;spring-beans.jar</strong></span><br />这个jar&nbsp;文件是所有应用都要用到的，它包含访问配置文件、创建和管理bean&nbsp;以及进行Inversion&nbsp;of&nbsp;Control&nbsp;/&nbsp;Dependency&nbsp;Injection（IoC/DI）操作相关的所有类。如果应用只需基本的IoC/DI&nbsp;支持，引入spring-core.jar&nbsp;及spring-beans.jar&nbsp;文件就可以了。<br /><br />外部依赖spring-core，(CGLIB)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-aop.jar</strong><br />这个jar&nbsp;文件包含在应用中使用Spring的AOP&nbsp;特性时所需的类和源码级元数据支持。使用基于AOP&nbsp;的Spring特性，如声明型事务管理（Declarative&nbsp;Transaction&nbsp;Management），也要在应用里包含这个jar包。<br /><br />外部依赖spring-core，&nbsp;(spring-beans，AOP&nbsp;Alliance，&nbsp;CGLIB，Commons&nbsp;Attributes)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-context.jar</strong><br />这个jar&nbsp;文件为Spring核心提供了大量扩展。可以找到使用Spring&nbsp;ApplicationContext特性时所需的全部类，JDNI&nbsp;所需的全部类，instrumentation组件以及校验Validation&nbsp;方面的相关类。<br /><br />外部依赖spring-beans,&nbsp;(spring-aop)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-dao.jar</strong><br />这个jar&nbsp;文件包含Spring&nbsp;DAO、Spring&nbsp;Transaction&nbsp;进行数据访问的所有类。为了使用声明型事务支持，还需在自己的应用里包含spring-aop.jar。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />外部依赖spring-core，(spring-aop，&nbsp;spring-context，&nbsp;JTA&nbsp;API)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jdbc.jar</strong><br />这个jar&nbsp;文件包含对Spring&nbsp;对JDBC&nbsp;数据访问进行封装的所有类。<br /><br />外部依赖spring-beans，spring-dao。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-support.jar</strong><br />这个jar&nbsp;文件包含支持UI模版（Velocity，FreeMarker，JasperReports），邮件服务，脚本服务(JRuby)，缓存Cache（EHCache），任务计划Scheduling（uartz）方面的类。<br /><br />外部依赖spring-context,&nbsp;(spring-jdbc,&nbsp;Velocity,&nbsp;FreeMarker,&nbsp;JasperReports,&nbsp;BSH,&nbsp;Groovy,&nbsp;JRuby,&nbsp;Quartz,&nbsp;EHCache)<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-web.jar</strong><br />这个jar&nbsp;文件包含Web&nbsp;应用开发时，用到Spring&nbsp;框架时所需的核心类，包括自动载入Web&nbsp;Application&nbsp;Context&nbsp;特性的类、Struts&nbsp;与JSF&nbsp;集成类、文件上传的支持类、Filter&nbsp;类和大量工具辅助类。<br /><br />外部依赖spring-context,&nbsp;Servlet&nbsp;API,&nbsp;(JSP&nbsp;API,&nbsp;JSTL,&nbsp;Commons&nbsp;FileUpload,&nbsp;COS)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-webmvc.jar</strong><br />这个jar&nbsp;文件包含Spring&nbsp;MVC&nbsp;框架相关的所有类。包括框架的Servlets，Web&nbsp;MVC框架，控制器和视图支持。当然，如果你的应用使用了独立的MVC&nbsp;框架，则无需这个JAR&nbsp;文件里的任何类。<br /><br />外部依赖spring-web,&nbsp;(spring-support，Tiles，iText，POI)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-portlet.jar</strong><br />spring自己实现的一个类似Spring&nbsp;MVC的框架。包括一个MVC框架和控制器。<br /><br />外部依赖spring-web，&nbsp;Portlet&nbsp;API，(spring-webmvc)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-struts.jar</strong><br />Struts框架支持，可以更方便更容易的集成Struts框架。<br /><br />外部依赖spring-web，Struts。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-remoting.jar</strong><br />这个jar&nbsp;文件包含支持EJB、远程调用Remoting（RMI、Hessian、Burlap、Http&nbsp;Invoker、JAX-RPC）方面的类。<br /><br />外部依赖spring-aop，&nbsp;(spring-context，spring-web，Hessian，Burlap，JAX-RPC，EJB&nbsp;API)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jmx.jar</strong><br />这个jar包提供了对JMX&nbsp;1.0/1.2的支持类。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />外部依赖spring-beans，spring-aop，&nbsp;JMX&nbsp;API。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jms.jar</strong><br />这个jar包提供了对JMS&nbsp;1.0.2/1.1的支持类。<br /><br />外部依赖spring-beans，spring-dao，JMS&nbsp;API。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jca.jar</strong><br />对JCA&nbsp;1.0的支持。<br /><br />外部依赖spring-beans，spring-dao，&nbsp;JCA&nbsp;API。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jdo.jar</strong><br />对JDO&nbsp;1.0/2.0的支持。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />外部依赖spring-jdbc，&nbsp;JDO&nbsp;API，&nbsp;(spring-web)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-jpa.jar</strong><br />对JPA&nbsp;1.0的支持。<br /><br />外部依赖spring-jdbc，&nbsp;JPA&nbsp;API，&nbsp;(spring-web)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-hibernate2.jar</strong><br />对Hibernate&nbsp;2.1的支持，已经不建议使用。<br /><br />外部依赖spring-jdbc，Hibernate2，(spring-web)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-hibernate3.jar</strong><br />对Hibernate&nbsp;3.0/3.1/3.2的支持。<br /><br />外部依赖spring-jdbc，Hibernate3，(spring-web)。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-toplink.jar</strong><br />对TopLink框架的支持。<br /><br />外部依赖spring-jdbc，TopLink。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-ibatis.jar</strong><br />对iBATIS&nbsp;SQL&nbsp;Maps的支持。<br /><br />外部依赖spring-jdbc，iBATIS&nbsp;SQL&nbsp;Maps。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-mock.jar</strong><br />这个jar&nbsp;文件包含Spring&nbsp;一整套mock&nbsp;类来辅助应用的测试。Spring&nbsp;测试套件使用了其中大量mock&nbsp;类，这样测试就更加简单。模拟HttpServletRequest&nbsp;和HttpServletResponse&nbsp;类在Web&nbsp;应用单元测试是很方便的。并且提供了对JUnit的支持。<br /><br />外部依赖spring-core。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-aspects.jar</strong><br />提供对AspectJ的支持，以便可以方便的将面向方面的功能集成进IDE中，比如Eclipse&nbsp;AJDT。<br /><br />外部依赖。<br /><br /><br /><strong>WEAVER&nbsp;JARS&nbsp;(dist/weavers)说明:<br /><br /></strong><strong style="color: #0000ff;">&gt;&gt;spring-agent.jar</strong><br />Spring的InstrumentationSavingAgent&nbsp;(为InstrumentationLoadTimeWeaver)，一个设备代理包，可以参考JDK1.5的Instrumentation功能获得更多信息。<br /><br />外部依赖none&nbsp;(for&nbsp;use&nbsp;at&nbsp;JVM&nbsp;startup:&nbsp;"-javaagent:spring-agent.jar")。<br /><br /><strong style="color: #0000ff;">&gt;&gt;spring-tomcat-weaver.jar</strong><br />扩展Tomcat的ClassLoader，使其可以使用instrumentation（设备）类。<br /><br />外部依赖none&nbsp;(for&nbsp;deployment&nbsp;into&nbsp;Tomcat's&nbsp;"server/lib"&nbsp;directory)。<br /><br /><strong>如果需要使用JSP语言作为Spring's&nbsp;web&nbsp;MVC&nbsp;tags的参数，则需要JSP&nbsp;2.0的支持。或者选择Jakarta的JSTL&nbsp;(standard.jar)。</strong></div><br /><img src ="http://www.blogjava.net/crazycy/aggbug/408589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2014-01-06 19:08 <a href="http://www.blogjava.net/crazycy/archive/2014/01/06/408589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss5 for Java5 vs JBoss for Java6</title><link>http://www.blogjava.net/crazycy/archive/2013/07/12/401501.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Fri, 12 Jul 2013 06:59:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2013/07/12/401501.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/401501.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2013/07/12/401501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/401501.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/401501.html</trackback:ping><description><![CDATA[最近在客户服务器上遇到了不少麻烦事，环境是JBoss5 + Java6;<br /><br />第一个事情是，2个数据库的写操作在同一个事务(Transaction)中，本地开发环境和公司的集成测试环境运转都很好；但是在客户机器上：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br />2013-05-06&nbsp;19:10:49,957&nbsp;<strong>WARN&nbsp;&nbsp;[org.jboss.tm.usertx.UserTransactionRegistry]&nbsp;(http-0.0.0.0-8380-1)&nbsp;Error&nbsp;notifying&nbsp;listener&nbsp;org.jboss.resource.connectionmanager.CachedConnectionManager@1187172&nbsp;of&nbsp;userTransactionStarted<br /><br />java.lang.IllegalStateException:&nbsp;Trying&nbsp;to&nbsp;change&nbsp;transaction&nbsp;TransactionImple&nbsp;&lt;&nbsp;ac,&nbsp;BasicAction:&nbsp;-53e5e9f0:e87f:51878ef5:b3c&nbsp;status:&nbsp;ActionStatus.RUNNING&nbsp;&gt;&nbsp;in&nbsp;enlist!</strong><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.resource.connectionmanager.TxConnectionManager$TxConnectionEventListener.enlist(TxConnectionManager.java:623)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.resource.connectionmanager.TxConnectionManager.transactionStarted(TxConnectionManager.java:394)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.resource.connectionmanager.CachedConnectionManager.userTransactionStarted(CachedConnectionManager.java:350)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.tm.usertx.UserTransactionRegistry.userTransactionStarted(UserTransactionRegistry.java:119)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.tm.usertx.client.ServerVMClientUserTransaction.begin(ServerVMClientUserTransaction.java:141)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.jta.JtaTransactionManager.doJtaBegin(JtaTransactionManager.java:863)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.jta.JtaTransactionManager.doBegin(JtaTransactionManager.java:820)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.support.AbstractPlatformTransactionManager.handleExistingTransaction(AbstractPlatformTransactionManager.java:423)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:347)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:335)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:105)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.aop.framework.adapter.ThrowsAdviceInterceptor.invoke(ThrowsAdviceInterceptor.java:124)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.jc.cxc.ws.ax.process.CxCAXWsSendingProcessorR1$$EnhancerByCGLIB$$4481d594.saveDBI_IntegrationQueueCcxc2axSmry(&lt;generated&gt;)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.jc.cxc.ws.ax.process.CxCAXWsSendingProcessorR1.documentProcess(CxCAXWsSendingProcessorR1.java:1022)</div><br />第二个事情是依然是类似的，在本地机和集成测试机上工作很好，在客户服务器上就提示错误：<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->java.lang.reflect.InvocationTargetException<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke0(Native&nbsp;Method)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.reflect.Method.invoke(Method.java:597)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:280)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:216)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;javax.servlet.http.HttpServlet.service(HttpServlet.java:637)<br /><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; at&nbsp;javax.servlet.http.HttpServlet.service(HttpServlet.java:</span><span style="font-size: 13px;">717</span><span style="font-size: 13px;">)</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br /><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; at&nbsp;org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:</span><span style="font-size: 13px;">206</span><span style="font-size: 13px;">)</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.jc.cxc.web.filter.SessionManageProcessingFilter.doFilter(SessionManageProcessingFilter.java:100)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.justcommodity.cxc.servlets.filters.CxcUsernamePasswordAuthenticationFilter.doFilter(CxcUsernamePasswordAuthenticationFilter.java:42)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br /><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; at&nbsp;com.justcommodity.cxc.servlets.filters.GeneralFilter.doFilter(GeneralFilter.java:</span><span style="font-size: 13px;">66</span><span style="font-size: 13px;">)</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)<br /><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; at&nbsp;org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:</span><span style="font-size: 13px;">126</span><span style="font-size: 13px;">)</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;java.lang.Thread.run(Thread.java:662)<br /><span style="font-size: 13px;">Caused&nbsp;by:<strong>&nbsp;java.lang.AbstractMethodError:&nbsp;org.jboss.resource.adapter.jdbc.jdk5.WrappedStatementJDK5.isClosed()Z</strong></span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.justcommodity.security.AutoAuthentication.initAuthenticationInfo(AutoAuthentication.java:75)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.jc.springframework.security.context.CxcAuthentication.autoAuthenticationInfo(CxcAuthentication.java:28)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.jc.cxc.ws.transrisk.service.CxcTransriskSenderR1.sendTransRiskData(CxcTransriskSenderR1.java:456)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;at&nbsp;com.justcommodity.cxc.jsp.admin.integration.transrisk.TransactionAction.sentTRData(TransactionAction.java:138)<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<img src="http://www.blogjava.net/Images/dot.gif" alt="" />&nbsp;50&nbsp;more</div><br /><br />最终发现了是用Jboss for Java5的version在Java6环境中。<br />检查的方式是：<br /><br /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">To know if which JBoss 5 installed, check boot.log</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">- For jboss-5.1.0.GA-jdk6.zip file, the log will show date=200905221634</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">e.g</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">&nbsp;&nbsp;&nbsp; 20:34:31,522 INFO [ServerImpl] Release ID: JBoss [The Oracle]&nbsp;</span><a href="http://5.1.0.ga/" target="_blank" style="color: #1155cc; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">5.1.0.GA</a><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">&nbsp;(build: SVNTag=JBoss_5_1_0_GA date=200905221634)</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" />&nbsp;<br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">- For JDK5 compiled version you would see date=200905221053:</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">e.g&nbsp;</span><br style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;" /><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">&nbsp;&nbsp;&nbsp; 21:48:35,141 INFO&nbsp; [ServerImpl] Release ID: JBoss [The Oracle]&nbsp;</span><a href="http://5.1.0.ga/" target="_blank" style="color: #1155cc; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">5.1.0.GA</a><span style="color: #222222; font-family: arial, sans-serif; font-size: 13px; line-height: normal; background-color: #ffffff;">&nbsp;(build: SVNTag=JBoss_5_1_0_GA date=200905221053)</span><img src ="http://www.blogjava.net/crazycy/aggbug/401501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2013-07-12 14:59 <a href="http://www.blogjava.net/crazycy/archive/2013/07/12/401501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz Cron表达式</title><link>http://www.blogjava.net/crazycy/archive/2013/06/06/400287.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Thu, 06 Jun 2013 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2013/06/06/400287.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/400287.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2013/06/06/400287.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/400287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/400287.html</trackback:ping><description><![CDATA[每次使用Quartz Cron的时候都要去查<a href="http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger">manual document</a>;<br />（URI:<span style="font-size: 14px;">http://quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger)<br /><br />对于第四个day of month 和 第六个 day of week常常需要花时间，这里做个简单总结<br /></span><div style="padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; width: 876.1221313476563px; word-break: break-all;">* &nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;*&nbsp; &nbsp; &nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&nbsp;&nbsp;(year&nbsp;optional)<br />&#9516; &nbsp; &#9516;&nbsp;&nbsp;&nbsp;&nbsp;&#9516; &nbsp; &nbsp;&#9516;&nbsp;&nbsp;&nbsp;&nbsp;&#9516;&nbsp;&nbsp;&nbsp;&nbsp;&#9516;<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&nbsp;day&nbsp;of&nbsp;week&nbsp;(0&nbsp;-&nbsp;7)&nbsp;(0&nbsp;or&nbsp;7&nbsp;is&nbsp;Sun,&nbsp;or&nbsp;use&nbsp;names)<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&nbsp;month&nbsp;(1&nbsp;-&nbsp;12)<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&nbsp;day&nbsp;of&nbsp;month&nbsp;(1&nbsp;-&nbsp;31)<br />&#9474;&nbsp;&nbsp;&nbsp;&#9474;&nbsp;&nbsp;&nbsp;&nbsp;&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&nbsp;hour&nbsp;(0&nbsp;-&nbsp;23)<br />&#9474;&nbsp;&nbsp;&nbsp;&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&nbsp;min&nbsp;(0&nbsp;-&nbsp;59)<br />&#9492;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472;&#9472; &nbsp; &nbsp; &nbsp;seconds<br />Wild-cards&nbsp;(the&nbsp;*&nbsp;character)&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;say&nbsp;"every"&nbsp;possible&nbsp;value&nbsp;of&nbsp;<span style="color: #0000ff;">this</span>&nbsp;field.&nbsp;<br />Therefore&nbsp;the&nbsp;*&nbsp;character&nbsp;in&nbsp;the&nbsp;"Month"&nbsp;field simply&nbsp;means&nbsp;"every&nbsp;month".&nbsp;<br />A&nbsp;'*'&nbsp;in&nbsp;the&nbsp;Day-Of-Week&nbsp;field&nbsp;would&nbsp;therefore&nbsp;obviously&nbsp;mean&nbsp;"every&nbsp;day&nbsp;of&nbsp;the&nbsp;week".<br /><br />The&nbsp;'?'&nbsp;character&nbsp;is&nbsp;allowed&nbsp;<span style="color: #0000ff;">for</span>&nbsp;the&nbsp;day-of-month&nbsp;and&nbsp;day-of-week&nbsp;fields.&nbsp;<br />It&nbsp;is&nbsp;used&nbsp;to&nbsp;specify&nbsp;"no&nbsp;specific&nbsp;value".&nbsp;This&nbsp;is&nbsp;useful&nbsp;when&nbsp;you&nbsp;need&nbsp;to&nbsp;specify&nbsp;something&nbsp;in&nbsp;one&nbsp;of&nbsp;the&nbsp;two&nbsp;fields,&nbsp;but&nbsp;not&nbsp;the&nbsp;other.</div><br />为了解释清楚&#8220;?"字符的使用，再来一段<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Field&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;Mandatory&nbsp;&nbsp;&nbsp;&nbsp;Allowed&nbsp;Values&nbsp;&nbsp;&nbsp;&nbsp;Allowed&nbsp;Special&nbsp;Characters<br />Seconds &nbsp; &nbsp; &nbsp; &nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0-59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;-&nbsp;*&nbsp;/<br />Minutes &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0-59&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;-&nbsp;*&nbsp;/<br />Hours &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0-23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;-&nbsp;*&nbsp;/<br />Day&nbsp;of&nbsp;month &nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1-31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;-&nbsp;*&nbsp;?&nbsp;/&nbsp;L&nbsp;W<br />Month &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1-12&nbsp;or&nbsp;JAN-DEC &nbsp; &nbsp; &nbsp;,&nbsp;-&nbsp;*&nbsp;/<br />Day&nbsp;of&nbsp;week&nbsp;&nbsp;&nbsp;&nbsp;YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1-7&nbsp;or&nbsp;SUN-SAT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;,&nbsp;-&nbsp;*&nbsp;?&nbsp;/&nbsp;L&nbsp;#<br />Year&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;empty,&nbsp;1970-2099&nbsp; &nbsp; &nbsp;,&nbsp;-&nbsp;*&nbsp;/<br /><br />可以看到只有第四、六两个位置允许使用"?"<br />这就说明这2个位置是相互依赖的<br /><tt style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; line-height: 1; font-family: inherit; color: #555555; background-color: #f9f9f9;"><strong style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; line-height: inherit; font-family: inherit;">?</strong></tt><span style="color: #555555; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px; background-color: #f9f9f9;">&nbsp;(</span><em style="margin: 0px; padding: 0px; border: 0px; font-size: 13px; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; color: #555555; background-color: #f9f9f9;">"no specific value"</em><span style="color: #555555; font-family: HelveticaNeue, 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; font-size: 13px; background-color: #f9f9f9;">) - useful when you need to specify something in one of the two fields in which the character is allowed, but not the other. For example, if I want my trigger to fire on a particular day of the month (say, the 10th), but don't care what day of the week that happens to be, I would put "10" in the day-of-month field, and "?" in the day-of-week field. See the examples below for clarification.</span><br /><br />所以一旦用了"?"，就说明这个字段不起作用了，对应的另一个字段起作用；</div><br />所以：<br />1. 配置一个任务在每天凌晨2点运行做出截止到当日的报表，但是周末因为没人值班所以不需要生成报表，这个表达式就是<br />&nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px;">0</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">0</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;2&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">?</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">*</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;MON</span><span style="background-color: #eeeeee; font-size: 13px;">-FRI</span><br />2. 配置一个任务在每个月的最后一天夜里11点运行<br />&nbsp; &nbsp;&nbsp;<span style="background-color: #eeeeee; font-size: 13px;">0</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">0</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">23</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;L&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">*</span><span style="background-color: #eeeeee; font-size: 13px;">&nbsp;</span><span style="background-color: #eeeeee; font-size: 13px;">?<br /><br /><br /><br />如果想用数据库驱动这个时间怎么办呢？请问下面大虾的做法：<br /></span><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->Dec&nbsp;22nd,&nbsp;2008,&nbsp;01:53&nbsp;AM&nbsp;#2&nbsp;Siva&nbsp;Krishna&nbsp;&nbsp;<br /><span style="font-size: 13px;">Hello,</span><br /><br />I&nbsp;got&nbsp;almost&nbsp;similar&nbsp;requirement,&nbsp;<strong style="color: #ff0000;">making&nbsp;the&nbsp;schedulers&nbsp;as&nbsp;DB&nbsp;driven</strong>,&nbsp;and&nbsp;handled&nbsp;it&nbsp;in&nbsp;the&nbsp;following&nbsp;way.<br /><br />I&nbsp;created&nbsp;a&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;UI&nbsp;that&nbsp;takes&nbsp;start&nbsp;time&nbsp;&amp;&nbsp;interval&nbsp;time&nbsp;and&nbsp;saves&nbsp;them&nbsp;in&nbsp;DB.&nbsp;Then<strong style="color: #ff0000;">&nbsp;a&nbsp;method&nbsp;is&nbsp;called&nbsp;to&nbsp;refresh&nbsp;the&nbsp;given&nbsp;jobs/schedulers</strong>.&nbsp;<br /><br />Here&nbsp;is&nbsp;the&nbsp;snippet.<br /><br />Code:<br /><span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;scheduler&nbsp;=&nbsp;(StdScheduler)&nbsp;context.getBean(schedulerVO.getSchedulerName());<br />&nbsp;&nbsp;&nbsp;&nbsp;triggerNames&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;String[]&nbsp;{};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(scheduler&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;throws&nbsp;SchedulerException</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triggerNames&nbsp;=&nbsp;scheduler.getTriggerNames("DEFAULT");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;triggerName&nbsp;=&nbsp;triggerNames.length&nbsp;&gt;&nbsp;0&nbsp;?&nbsp;triggerNames[0]&nbsp;:&nbsp;"";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trigger&nbsp;=&nbsp;(CronTrigger)&nbsp;scheduler.getTrigger(triggerName,&nbsp;"DEFAULT");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(trigger&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)&nbsp;{<br /><span style="font-size: 13px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span><span style="font-size: 13px; color: #008000;">//</span><span style="font-size: 13px; color: #008000;">&nbsp;throws&nbsp;ParseException &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trigger.<strong style="color: #000080;">setCronExpression</strong>(getCronExpression(schedulerVO.getStartTime(),&nbsp;schedulerVO.getInterval()));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;throws&nbsp;SchedulerException</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scheduler.<strong style="color: #000080;">rescheduleJob</strong>(triggerName,&nbsp;"DEFAULT",trigger);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(SchedulerException&nbsp;e)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.error(e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(ParseException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;logger.error(e);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(NoSuchBeanDefinitionException&nbsp;e)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;logger.error(e);<br />}<br /><br /><br />Computing&nbsp;the&nbsp;cronExpression&nbsp;with&nbsp;<span style="color: #0000FF; ">this</span>&nbsp;method.<br /><br />Code:<br /><span style="color: #0000FF; ">private</span>&nbsp;String&nbsp;getCronExpression(String&nbsp;startTime,&nbsp;String&nbsp;interval)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><span style="font-size: 13px;">&nbsp; &nbsp; String&nbsp;cronExpression&nbsp;</span><span style="font-size: 13px;">=</span><span style="font-size: 13px;">&nbsp;</span><span style="font-size: 13px;">""</span><span style="font-size: 13px;">;</span><br /><span style="font-size: 13px;">&nbsp; &nbsp;&nbsp;</span><span style="font-size: 13px; color: #0000ff;">if</span><span style="font-size: 13px;">&nbsp;(</span><span style="font-size: 13px;">"</span><span style="font-size: 13px;">0</span><span style="font-size: 13px;">"</span><span style="font-size: 13px;">.equals(startTime)&nbsp;</span><span style="font-size: 13px;">||</span><span style="font-size: 13px;">&nbsp;</span><span style="font-size: 13px;">"</span><span style="font-size: 13px;">0</span><span style="font-size: 13px;">"</span><span style="font-size: 13px;">.equals(interval))&nbsp;{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;default&nbsp;trigger&nbsp;runs&nbsp;at&nbsp;10AM&nbsp;&amp;&nbsp;10PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cronExpression&nbsp;=&nbsp;"0&nbsp;0&nbsp;10/12&nbsp;*&nbsp;*&nbsp;?";<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cronExpression&nbsp;=&nbsp;"0&nbsp;0&nbsp;"&nbsp;+&nbsp;startTime&nbsp;+&nbsp;"/"&nbsp;+&nbsp;interval&nbsp;+&nbsp;"&nbsp;*&nbsp;*&nbsp;?";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;cronExpression;<br />}<br />As&nbsp;I&nbsp;need&nbsp;to&nbsp;run&nbsp;the&nbsp;job&nbsp;every&nbsp;day&nbsp;and&nbsp;not&nbsp;concerned&nbsp;about&nbsp;minutes&nbsp;the&nbsp;above&nbsp;approach&nbsp;worked&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;me.<br /><br />Hope&nbsp;<span style="color: #0000FF; ">this</span>&nbsp;gives&nbsp;an&nbsp;idea&nbsp;to&nbsp;you.<br /><br />Regards<br />Siva&nbsp;Krishna.</div><img src ="http://www.blogjava.net/crazycy/aggbug/400287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2013-06-06 11:35 <a href="http://www.blogjava.net/crazycy/archive/2013/06/06/400287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ant脚本的javac怎么检测源码文件夹是否存在 ant javac check folder exists or not</title><link>http://www.blogjava.net/crazycy/archive/2013/04/16/397918.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Tue, 16 Apr 2013 06:52:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2013/04/16/397918.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/397918.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2013/04/16/397918.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/397918.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/397918.html</trackback:ping><description><![CDATA[遇到了问题，编译的时候，有一些目录，比如<br />tr\src<br />tr\src_x1 for prj X1<br />tr\src_x2 for prj X2<br />_______ &nbsp;for prj X3, X3中没有，怎么设置ant脚本呢？<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="compile-tr"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mkdir&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tr.classes.dir}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javac&nbsp;</span><span style="color: #FF0000; ">destdir</span><span style="color: #0000FF; ">="${tr.classes.dir}"</span><span style="color: #FF0000; ">&nbsp;debug</span><span style="color: #0000FF; ">="${compiler.debug}"</span><span style="color: #FF0000; ">&nbsp;optimize</span><span style="color: #0000FF; ">="${compiler.optimize}"</span><span style="color: #FF0000; ">&nbsp;source</span><span style="color: #0000FF; ">="${compiler.source}"</span><span style="color: #FF0000; ">&nbsp;target</span><span style="color: #0000FF; ">="${compiler.target}"</span><span style="color: #FF0000; ">&nbsp;deprecation</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">classpath</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">path&nbsp;</span><span style="color: #FF0000; ">refid</span><span style="color: #0000FF; ">="devel.lib"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">classpath</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">src&nbsp;</span><span style="color: #FF0000; ">path</span><span style="color: #0000FF; ">="${tr.src.dir}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">src&nbsp;</span><span style="color: #FF0000; ">path</span><span style="color: #0000FF; ">="${tr.src.dir}_${project.code}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">javac</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span></div><br />在编译X3的时候，这肯定是失败的。<br /><br />怎么办呢？ 通过Condition和Avaliable来实现。（贴一个粗糙的示范实现）<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="compile-3tr"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="dir.check"</span><span style="color: #FF0000; ">&nbsp;if</span><span style="color: #0000FF; ">="dir.exists"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mkdir&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tr.classes.dir}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">javac&nbsp;</span><span style="color: #FF0000; ">destdir</span><span style="color: #0000FF; ">="${tr.classes.dir}"</span><span style="color: #FF0000; ">&nbsp;debug</span><span style="color: #0000FF; ">="${compiler.debug}"</span><span style="color: #FF0000; ">&nbsp;optimize</span><span style="color: #0000FF; ">="${compiler.optimize}"</span><span style="color: #FF0000; ">&nbsp;source</span><span style="color: #0000FF; ">="${compiler.source}"</span><span style="color: #FF0000; ">&nbsp;target</span><span style="color: #0000FF; ">="${compiler.target}"</span><span style="color: #FF0000; ">&nbsp;deprecation</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">classpath</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">path&nbsp;</span><span style="color: #FF0000; ">refid</span><span style="color: #0000FF; ">="devel.lib"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">classpath</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">src&nbsp;</span><span style="color: #FF0000; ">path</span><span style="color: #0000FF; ">="${tr.src.dir}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">src&nbsp;</span><span style="color: #FF0000; ">path</span><span style="color: #0000FF; ">="${tr.src.dir}_${project.code}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">javac</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="dir.check"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">condition&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="dir.exists"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="${tr.src.dir}_${project.code}"</span><span style="color: #FF0000; ">&nbsp;type</span><span style="color: #0000FF; ">="dir"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">condition</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">mkdir&nbsp;</span><span style="color: #FF0000; ">dir</span><span style="color: #0000FF; ">="${tr.classes.dir}"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span></div><br />居然在网上找到一个更赞的招<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="go"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="file-checks,&nbsp;do-something-with-first-file,&nbsp;do-something-with-second-file"</span><span style="color: #0000FF; ">/&gt;</span><br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="file-checks"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="/home/doc/somefile"</span><span style="color: #FF0000; ">&nbsp;&nbsp;property</span><span style="color: #0000FF; ">="first.file.found"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="/usr/local/somefile"</span><span style="color: #FF0000; ">&nbsp;property</span><span style="color: #0000FF; ">="second.file.found"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="do-something-with-first-file"</span><span style="color: #FF0000; ">&nbsp;if</span><span style="color: #0000FF; ">="first.file.found"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;???<br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="do-something-with-second-file"</span><span style="color: #FF0000; ">&nbsp;if</span><span style="color: #0000FF; ">="second.file.found"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;???<br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span></div><br />原来if....then....else需要<span style="font-family: Arial, 'Liberation Sans', 'DejaVu Sans', sans-serif; line-height: 18px; background-color: #ffffff;">ant-contrib的支持，怪不得我一直失败<br /></span><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->ant-contrib<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">if</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="file1"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">then</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">then</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">else</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">if</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="file2"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">then</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">copy&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="file2"</span><span style="color: #FF0000; ">&nbsp;tofile</span><span style="color: #0000FF; ">="file1"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="true"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">then</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">if</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">else</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">if</span><span style="color: #0000FF; ">&gt;</span></div><br />最后我很生气的找到了apache本身的技术文档&nbsp;<h2><a name="if+unless">If/Unless Attributes<br /></a></h2><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->http://ant.apache.org/manual/properties.html#if+unless<br /><br />If/Unless&nbsp;Attributes<br /><br />The&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span>&nbsp;element&nbsp;and&nbsp;various&nbsp;tasks&nbsp;(such&nbsp;as&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">fail</span><span style="color: #0000FF; ">&gt;</span>)&nbsp;and&nbsp;task&nbsp;elements&nbsp;(such&nbsp;as&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">test</span><span style="color: #0000FF; ">&gt;</span>&nbsp;in&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">junit</span><span style="color: #0000FF; ">&gt;</span>)&nbsp;support&nbsp;if&nbsp;and&nbsp;unless&nbsp;attributes&nbsp;which&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;control&nbsp;whether&nbsp;the&nbsp;item&nbsp;is&nbsp;run&nbsp;or&nbsp;otherwise&nbsp;takes&nbsp;effect.<br /><br />In&nbsp;Ant&nbsp;1.7.1&nbsp;and&nbsp;earlier,&nbsp;these&nbsp;attributes&nbsp;could&nbsp;only&nbsp;be&nbsp;property&nbsp;names.&nbsp;The&nbsp;item&nbsp;was&nbsp;enabled&nbsp;if&nbsp;a&nbsp;property&nbsp;with&nbsp;that&nbsp;name&nbsp;was&nbsp;defined&nbsp;-&nbsp;even&nbsp;to&nbsp;be&nbsp;the&nbsp;empty&nbsp;string&nbsp;or&nbsp;false&nbsp;-&nbsp;and&nbsp;disabled&nbsp;if&nbsp;the&nbsp;property&nbsp;was&nbsp;not&nbsp;defined.&nbsp;For&nbsp;example,&nbsp;the&nbsp;following&nbsp;works&nbsp;but&nbsp;there&nbsp;is&nbsp;no&nbsp;way&nbsp;to&nbsp;override&nbsp;the&nbsp;file&nbsp;existence&nbsp;check&nbsp;negatively&nbsp;(only&nbsp;positively):<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="-check-use-file"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #FF0000; ">&nbsp;file</span><span style="color: #0000FF; ">="some-file"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="use-file"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="-check-use-file"</span><span style="color: #FF0000; ">&nbsp;if</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;do&nbsp;something&nbsp;requiring&nbsp;that&nbsp;file<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;</span><span style="color: #008000; ">--&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="lots-of-stuff"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="use-file,other-unconditional-stuff"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;<br />As&nbsp;of&nbsp;Ant&nbsp;1.8.0,&nbsp;you&nbsp;may&nbsp;instead&nbsp;use&nbsp;property&nbsp;expansion;&nbsp;a&nbsp;value&nbsp;of&nbsp;true&nbsp;(or&nbsp;on&nbsp;or&nbsp;yes)&nbsp;will&nbsp;enable&nbsp;the&nbsp;item,&nbsp;while&nbsp;false&nbsp;(or&nbsp;off&nbsp;or&nbsp;no)&nbsp;will&nbsp;disable&nbsp;it.&nbsp;Other&nbsp;values&nbsp;are&nbsp;still&nbsp;assumed&nbsp;to&nbsp;be&nbsp;property&nbsp;names&nbsp;and&nbsp;so&nbsp;the&nbsp;item&nbsp;is&nbsp;enabled&nbsp;only&nbsp;if&nbsp;the&nbsp;named&nbsp;property&nbsp;is&nbsp;defined.<br /><br />Compared&nbsp;to&nbsp;the&nbsp;older&nbsp;style,&nbsp;this&nbsp;gives&nbsp;you&nbsp;additional&nbsp;flexibility,&nbsp;because&nbsp;you&nbsp;can&nbsp;override&nbsp;the&nbsp;condition&nbsp;from&nbsp;the&nbsp;command&nbsp;line&nbsp;or&nbsp;parent&nbsp;scripts:<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="-check-use-file"</span><span style="color: #FF0000; ">&nbsp;unless</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">available&nbsp;</span><span style="color: #FF0000; ">property</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #FF0000; ">&nbsp;file</span><span style="color: #0000FF; ">="some-file"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="use-file"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="-check-use-file"</span><span style="color: #FF0000; ">&nbsp;if</span><span style="color: #0000FF; ">="${file.exists}"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">&lt;!--</span><span style="color: #008000; ">&nbsp;do&nbsp;something&nbsp;requiring&nbsp;that&nbsp;file<img src="http://www.blogjava.net/Images/dot.gif"  alt="" />&nbsp;</span><span style="color: #008000; ">--&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="lots-of-stuff"</span><span style="color: #FF0000; ">&nbsp;depends</span><span style="color: #0000FF; ">="use-file,other-unconditional-stuff"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;<br />Now&nbsp;ant&nbsp;-Dfile.exists=false&nbsp;lots-of-stuff&nbsp;will&nbsp;run&nbsp;other-unconditional-stuff&nbsp;but&nbsp;not&nbsp;use-file,&nbsp;as&nbsp;you&nbsp;might&nbsp;expect,&nbsp;and&nbsp;you&nbsp;can&nbsp;disable&nbsp;the&nbsp;condition&nbsp;from&nbsp;another&nbsp;script&nbsp;too:<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">antcall&nbsp;</span><span style="color: #FF0000; ">target</span><span style="color: #0000FF; ">="lots-of-stuff"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">param&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="file.exists"</span><span style="color: #FF0000; ">&nbsp;value</span><span style="color: #0000FF; ">="false"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">antcall</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;<br />Similarly,&nbsp;an&nbsp;unless&nbsp;attribute&nbsp;disables&nbsp;the&nbsp;item&nbsp;if&nbsp;it&nbsp;is&nbsp;either&nbsp;the&nbsp;name&nbsp;of&nbsp;property&nbsp;which&nbsp;is&nbsp;defined,&nbsp;or&nbsp;if&nbsp;it&nbsp;evaluates&nbsp;to&nbsp;a&nbsp;true-like&nbsp;value.&nbsp;For&nbsp;example,&nbsp;the&nbsp;following&nbsp;allows&nbsp;you&nbsp;to&nbsp;define&nbsp;skip.printing.message=true&nbsp;in&nbsp;my-prefs.properties&nbsp;with&nbsp;the&nbsp;results&nbsp;you&nbsp;might&nbsp;expect:<br /><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">file</span><span style="color: #0000FF; ">="my-prefs.properties"</span><span style="color: #0000FF; ">/&gt;</span><br /><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">target&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="print-message"</span><span style="color: #FF0000; ">&nbsp;unless</span><span style="color: #0000FF; ">="${skip.printing.message}"</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span>hello!<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">echo</span><span style="color: #0000FF; ">&gt;</span><br /><span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">target</span><span style="color: #0000FF; ">&gt;</span></div><br /><img src ="http://www.blogjava.net/crazycy/aggbug/397918.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2013-04-16 14:52 <a href="http://www.blogjava.net/crazycy/archive/2013/04/16/397918.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring-系统启动时初始化数据库的数据/系统启动时操作数据库</title><link>http://www.blogjava.net/crazycy/archive/2013/03/17/396562.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sun, 17 Mar 2013 11:55:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2013/03/17/396562.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/396562.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2013/03/17/396562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/396562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/396562.html</trackback:ping><description><![CDATA[需求：在系统启动的时候把数据库的数据进行重置（或者插入数据，或者取出一系列的数据缓存起来）<br /><br />摸索：SBean可以IoC注入需要的资源比如DataSource;<br /><br />Spring Bean Config<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="idPoolsInitilizedProcessor"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="utils.IDPoolsInitilizedListener"</span><span style="color: #FF0000; ">&nbsp;scope</span><span style="color: #0000FF; ">="singleton"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="datasource"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="dataDS"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span></div><br />Spring Bean Code<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000ff;">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;JcIDPoolsInitilizedListener&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;DataSource&nbsp;datasource&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;JcIDPoolsInitilizedBean()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("%%%%%%%%%%%%%%");&nbsp; &nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//initilize&nbsp;</span><span style="color: #008000; ">msgid</span><span style="color: #008000; "><br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;refName&nbsp;=&nbsp;CxcConstants.REFCOUNTER_MSGID;&nbsp;<br />&nbsp; &nbsp; &nbsp; String&nbsp;sql&nbsp;=&nbsp;"update refcounter&nbsp;set&nbsp;nextnumber=(select&nbsp;max(msgid)+1&nbsp;from&nbsp;msg)&nbsp;where&nbsp;refcounterid=?";<br />&nbsp; &nbsp; &nbsp; update(sql,&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;Object[]{refName});&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;update(String&nbsp;anSql,&nbsp;Object[]&nbsp;args)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;affactRows&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;con&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement&nbsp;stmt&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con&nbsp;=&nbsp;datasource.getConnection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt&nbsp;=&nbsp;con.prepareStatement(anSql);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setSQLParams(stmt,&nbsp;args);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;affactRows&nbsp;=&nbsp;stmt.executeUpdate();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;affactRows;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">finally</span>&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">try</span>{&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(<span style="color: #0000FF; ">null</span>&nbsp;!=&nbsp;stmt)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(<span style="color: #0000FF; ">null</span>&nbsp;!=&nbsp;con)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<span style="color: #0000FF; ">catch</span>&nbsp;(Exception&nbsp;ex)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ex.printStackTrace();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setSQLParams(PreparedStatement&nbsp;stmt,&nbsp;Object[]&nbsp;args)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;Exception&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(<span style="color: #0000FF; ">null</span>&nbsp;!=&nbsp;args&nbsp;&amp;&amp;&nbsp;0&nbsp;&lt;&nbsp;args.length)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0,&nbsp;n&nbsp;=&nbsp;args.length;&nbsp;i&nbsp;&lt;&nbsp;n;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stmt.setObject(i&nbsp;+&nbsp;1,&nbsp;args[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;DataSource&nbsp;getDatasource()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;datasource;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setDatasource(DataSource&nbsp;datasource)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.datasource&nbsp;=&nbsp;datasource;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}</div><br />结果：程序启动的时候会抛出NullPointException，因为<span style="font-size: 13px; background-color: #eeeeee;">datasource</span>并没有初始化好。<br /><br />摸索：Spring的事件机制：实现ApplicationListener，在onApplicationEvent的方法进行数据初始化操作，只要容器启动，就会执行这里的代码。<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;JcIDPoolsInitilizedListener&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;ApplicationListener&nbsp;{<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;DataSource&nbsp;datasource&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onApplicationEvent(ApplicationEvent&nbsp;argo)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">todo:&nbsp;code&nbsp;is&nbsp;same&nbsp;as&nbsp;previous&nbsp;</span><span style="color: #008000; "><br /></span>&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000; ">todo:&nbsp;all&nbsp;the&nbsp;other&nbsp;part&nbsp;is&nbsp;same&nbsp;as&nbsp;previous</span><span style="color: #008000; "><br /></span>}</div><br />成功。<br /><br />然后的然后呢？会发现程序中这个初始化被多次调用。<br />为什么呢？ 原因是Listener定义不到位。<br />为什么呢？ 只要是ApplicationEvent都会触发，默认的事件是org.springframework.security.access.event.PublicInvocationEvent，肯定触发的。<br /><br />怎么办呢？<br />好吧，既然是Listener，总得告诉它Listen什么Event吧。<br />第一 定义Listener<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;JcIDPoolsInitilizedListener&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;ApplicationListener&nbsp;{<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;DataSource&nbsp;datasource&nbsp;=&nbsp;<span style="color: #0000FF; ">null</span>;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;onApplicationEvent(ApplicationEvent&nbsp;argo)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><span style="color: #0000ff; background-color: #ffcc00;">if</span></strong><strong style="background-color: #ffcc00;">&nbsp;(argo&nbsp;<span style="color: #0000FF; ">instanceof</span>&nbsp;IDPoolsInitilizedEvent)&nbsp;{</strong><br />&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<span style="color: #008000;">//</span><span style="color: #008000;">todo:&nbsp;code&nbsp;is&nbsp;same&nbsp;as&nbsp;previous&nbsp;</span><br /><span style="color: #008000; ">&nbsp; &nbsp; &nbsp;</span><strong style="background-color: #ffcc00;">}</strong><br />&nbsp; &nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">//</span><span style="color: #008000;">todo:&nbsp;all&nbsp;the&nbsp;other&nbsp;part&nbsp;is&nbsp;same&nbsp;as&nbsp;previous</span><span style="color: #008000; "><br /></span>}</div><br />第二 定义Event<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;IDPoolsInitilizedEvent&nbsp;<span style="color: #0000FF; ">extends</span>&nbsp;ApplicationEvent{<br />&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">final</span>&nbsp;<span style="color: #0000FF; ">long</span>&nbsp;serialVersionUID&nbsp;=&nbsp;646140097162842368L;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;IDPoolsInitilizedEvent(Object&nbsp;source){<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">super</span>(source);<br />&nbsp;&nbsp;}<br />}</div><br />第三 定义Event抛出点<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;IDPoolsInitilizedBean&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;ApplicationContextAware{<br />&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;ApplicationContext&nbsp;applicationContext;<br />&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;setApplicationContext(ApplicationContext&nbsp;applicationContext)&nbsp;<span style="color: #0000FF; ">throws</span>&nbsp;BeansException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.applicationContext&nbsp;=&nbsp;applicationContext;<br />&nbsp;&nbsp;&nbsp;&nbsp;IDPoolsInitilizedEvent&nbsp;event&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;IDPoolsInitilizedEvent("IDPoolsInitilized");<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.applicationContext.publishEvent(event);<br />&nbsp;&nbsp;}<br />}</div><br />第四 定义配置文件<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="idPoolsInitilizedListenerProcessor"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="utils.IDPoolsInitilizedListenerBean"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope</span><span style="color: #0000FF; ">="singleton"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">property&nbsp;</span><span style="color: #FF0000; ">name</span><span style="color: #0000FF; ">="datasource"</span><span style="color: #FF0000; ">&nbsp;ref</span><span style="color: #0000FF; ">="dataDS"</span><span style="color: #0000FF; ">/&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;/</span><span style="color: #800000; ">bean</span><span style="color: #0000FF; ">&gt;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">&lt;</span><span style="color: #800000; ">bean&nbsp;</span><span style="color: #FF0000; ">id</span><span style="color: #0000FF; ">="idPoolsInitilizedProcessor"</span><span style="color: #FF0000; ">&nbsp;class</span><span style="color: #0000FF; ">="utils.IDPoolsInitilizedBean"</span><span style="color: #FF0000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scope</span><span style="color: #0000FF; ">="singleton"</span><span style="color: #FF0000; ">&nbsp;</span><span style="color: #0000FF; ">/&gt;</span></div><img src ="http://www.blogjava.net/crazycy/aggbug/396562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2013-03-17 19:55 <a href="http://www.blogjava.net/crazycy/archive/2013/03/17/396562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse高亮选中的变量失效的方法 eclipse highlight occurrences not working</title><link>http://www.blogjava.net/crazycy/archive/2013/01/26/394802.html</link><dc:creator>crazycy</dc:creator><author>crazycy</author><pubDate>Sat, 26 Jan 2013 08:48:00 GMT</pubDate><guid>http://www.blogjava.net/crazycy/archive/2013/01/26/394802.html</guid><wfw:comment>http://www.blogjava.net/crazycy/comments/394802.html</wfw:comment><comments>http://www.blogjava.net/crazycy/archive/2013/01/26/394802.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/crazycy/comments/commentRss/394802.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/crazycy/services/trackbacks/394802.html</trackback:ping><description><![CDATA[<div>1. 要显示哪些类型</div><div>windows-&gt;preferences-&gt;java-&gt;Editor-&gt; Mark Occurrences</div><div></div><div>2. 高亮显示的颜色</div><div>Window-&gt;Preferences-&gt;General-&gt;Editors-&gt;Text Editors-&gt;Annotations-&gt;Occurrences</div><div></div><div>3. 或者使用快捷键&nbsp;</div><div>Alt + Shift + o</div><div></div><div>4.还不行？<br />要检查工程中的build path看看是不是有library缺少或者是不是JDK配置错误</div><img src ="http://www.blogjava.net/crazycy/aggbug/394802.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/crazycy/" target="_blank">crazycy</a> 2013-01-26 16:48 <a href="http://www.blogjava.net/crazycy/archive/2013/01/26/394802.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>