﻿<?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-地狱男爵之博客无限-随笔分类-编程语言(c/c++ java python sql ......)</title><link>http://www.blogjava.net/hellboys/category/10569.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 05 Apr 2007 12:21:45 GMT</lastBuildDate><pubDate>Thu, 05 Apr 2007 12:21:45 GMT</pubDate><ttl>60</ttl><item><title>ActiveMQ4.1 +Spring2.0的POJO JMS方案 扩展，以更加实用（基于ss）.二</title><link>http://www.blogjava.net/hellboys/archive/2007/04/05/108737.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Thu, 05 Apr 2007 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2007/04/05/108737.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/108737.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2007/04/05/108737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/108737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/108737.html</trackback:ping><description><![CDATA[<br>一：续一，说明一的可使用性。<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">amq:queue&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="destination.report"</span><span style="COLOR: #ff0000">&nbsp;&nbsp;physicalName</span><span style="COLOR: #0000ff">="active.jms.report"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">amq:queue&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="destination.point"</span><span style="COLOR: #ff0000">&nbsp;&nbsp;physicalName</span><span style="COLOR: #0000ff">="active.jms.point"</span><span style="COLOR: #0000ff">/&gt;</span></div>
<br><font color=#800000>queue&nbsp;: 队列的名字 for 制造者.<br><br>感觉<font color=#0000ff>org.springframework.jms.listener.DefaultMessageListenerContainer 做的不好，如果destination property能做一个可包含多个队列，并且有选择性的messageListener就好了，这样就避免下面的监听的尴尬了。呵呵</font><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;listener&nbsp;container，MDP无需实现接口&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="fluxPerhourListenerContainer"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.jms.listener.DefaultMessageListenerContainer"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="connectionFactory"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="jmsConnectionFactory"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="destination"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="destination.fluxPerhour"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="messageListener"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="messageListener"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="fluxPerDayListenerContainer"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.jms.listener.DefaultMessageListenerContainer"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="connectionFactory"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="jmsConnectionFactory"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="destination"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="destination.fluxPerday"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="messageListener"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="messageListener"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="reportPerdayProducer"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="com.jms.ReportPerdayProducer"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="template"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="jmsTemplate"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="destination"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="destination.report"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="pointProducer"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="com.jms.PointProducer"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="template"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="jmsTemplate"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="destination"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="destination.point"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><span>producer不能重用，因为send到不同destination，所有没办法重用。<font color=#000000>如果能对producer做一个默认统一的封装就好了. 但是DefaultProducer.那么应该注意队列线程安全方面，目前没有什么好的想法，就采用通用一些的办法，不过xml和代码稍多一些.<br></font></span></font><br><br>然后就用到 前面文章一 里面的内容了，非常简便。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;Message&nbsp;Driven&nbsp;POJO&nbsp;(MDP)&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="messageListener"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.jms.listener.adapter.MessageListenerAdapter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;may&nbsp;be&nbsp;other&nbsp;method&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">constructor-arg</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="com..jms.MessageConsumerAdapter"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--业务接口/业务门面--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="transfersManager"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="transfersManager"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">constructor-arg</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;may&nbsp;be&nbsp;other&nbsp;method&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="defaultListenerMethod"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="receive"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;custom&nbsp;MessageConverter&nbsp;define&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="messageConverter"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="messageConverter"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span></div>
</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;Holder&nbsp;Message&nbsp;converter&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="messageConverter"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="com.jms.CoverterHolder"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="defaultMessageConverter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="com.jms.DefaultMessageConverter"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;Spring&nbsp;JmsTemplate&nbsp;config&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="jmsTemplate"</span><span style="COLOR: #ff0000">&nbsp;class</span><span style="COLOR: #0000ff">="org.springframework.jms.core.JmsTemplate"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="connectionFactory"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;lets&nbsp;wrap&nbsp;in&nbsp;a&nbsp;pool&nbsp;to&nbsp;avoid&nbsp;creating&nbsp;a&nbsp;connection&nbsp;per&nbsp;send&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean&nbsp;</span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="org.springframework.jms.connection.SingleConnectionFactory"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="targetConnectionFactory"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="jmsConnectionFactory"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="messageConverter"</span><span style="COLOR: #ff0000">&nbsp;ref</span><span style="COLOR: #0000ff">="messageConverter"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>
&nbsp;<br><br><br>二.单元测试有时加载 activemq的问题<br>1.这个可能和spring版本有关系，请采用比较稳定的版本。例如apache-activemq官方包里面提供的.<br>2.选择 xml解析的问题，例如 <br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">abstract</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;SpringManagerTestCase&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_104_807_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_807_Open_Text.style.display='none'; Codehighlighter1_104_807_Closed_Image.style.display='inline'; Codehighlighter1_104_807_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_104_807_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_807_Closed_Text.style.display='none'; Codehighlighter1_104_807_Open_Image.style.display='inline'; Codehighlighter1_104_807_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbstractTransactionalDataSourceSpringContextTests&nbsp;</span><span id=Codehighlighter1_104_807_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_104_807_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;SpringManagerTestCase()<br><img id=Codehighlighter1_140_547_Open_Image onclick="this.style.display='none'; Codehighlighter1_140_547_Open_Text.style.display='none'; Codehighlighter1_140_547_Closed_Image.style.display='inline'; Codehighlighter1_140_547_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_140_547_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_140_547_Closed_Text.style.display='none'; Codehighlighter1_140_547_Open_Image.style.display='inline'; Codehighlighter1_140_547_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_140_547_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_140_547_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.xml.parsers.DocumentBuilderFactory</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.xml.parsers.SAXParserFactory</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">org.apache.xerces.jaxp.SAXParserFactoryImpl</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.setProperty(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.xml.transform.TransformerFactory</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">org.apache.xalan.processor.TransformerFactoryImpl</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDependencyCheck(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setDefaultRollback(</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">);<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_550_680_Open_Image onclick="this.style.display='none'; Codehighlighter1_550_680_Open_Text.style.display='none'; Codehighlighter1_550_680_Closed_Image.style.display='inline'; Codehighlighter1_550_680_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_550_680_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_550_680_Closed_Text.style.display='none'; Codehighlighter1_550_680_Open_Image.style.display='inline'; Codehighlighter1_550_680_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_550_680_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**&nbsp;*/</span><span id=Codehighlighter1_550_680_Open_Text><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;配置Spring的配置文件的方法。<br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="COLOR: #808080">@see</span><span style="COLOR: #008000">&nbsp;org.springframework.test.AbstractDependencyInjectionSpringContextTests#getConfigLocations()<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_723_804_Open_Image onclick="this.style.display='none'; Codehighlighter1_723_804_Open_Text.style.display='none'; Codehighlighter1_723_804_Closed_Image.style.display='inline'; Codehighlighter1_723_804_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_723_804_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_723_804_Closed_Text.style.display='none'; Codehighlighter1_723_804_Open_Image.style.display='inline'; Codehighlighter1_723_804_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;String[]&nbsp;getConfigLocations()&nbsp;</span><span id=Codehighlighter1_723_804_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_723_804_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_747_800_Open_Image onclick="this.style.display='none'; Codehighlighter1_747_800_Open_Text.style.display='none'; Codehighlighter1_747_800_Closed_Image.style.display='inline'; Codehighlighter1_747_800_Closed_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_747_800_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_747_800_Closed_Text.style.display='none'; Codehighlighter1_747_800_Open_Image.style.display='inline'; Codehighlighter1_747_800_Open_Text.style.display='inline';" src="http://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;String[]&nbsp;</span><span id=Codehighlighter1_747_800_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"></span><span id=Codehighlighter1_747_800_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">classpath:applicationContext-activemq-embedded.xml</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>三.为特殊的应用服务器，如resin ，也要选择特定的xml解析器<br>在web.xml中配置增加
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;In&nbsp;order&nbsp;to&nbsp;be&nbsp;able&nbsp;to&nbsp;compatiable&nbsp;with&nbsp;Resin&nbsp;2.1.x&nbsp;and&nbsp;3.0.x,<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;both&nbsp;XML&nbsp;and&nbsp;XSLT&nbsp;have&nbsp;to&nbsp;be&nbsp;replaced.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;only&nbsp;xalan&nbsp;is&nbsp;included,&nbsp;Resin&nbsp;2.1.x&nbsp;will&nbsp;fail&nbsp;but&nbsp;not&nbsp;3.0.x.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Therefore&nbsp;the&nbsp;best&nbsp;way&nbsp;is&nbsp;to&nbsp;use&nbsp;the&nbsp;compatiable&nbsp;version&nbsp;of&nbsp;the<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XML&nbsp;parser&nbsp;ans&nbsp;XSLT.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Please&nbsp;refere&nbsp;to&nbsp;the&nbsp;following&nbsp;link&nbsp;for&nbsp;more&nbsp;detailed&nbsp;information.<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;http://www.caucho.com/resin-3.0/xml/jaxp.xtp<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;xml&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">system-property&nbsp;</span><span style="COLOR: #ff0000">javax.xml.parsers.DocumentBuilderFactory</span><span style="COLOR: #0000ff">=<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">system-property&nbsp;</span><span style="COLOR: #ff0000">javax.xml.parsers.SAXParserFactory</span><span style="COLOR: #0000ff">=<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"org.apache.xerces.jaxp.SAXParserFactoryImpl"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #008000">&lt;!--</span><span style="COLOR: #008000">&nbsp;&nbsp;xslt&nbsp;</span><span style="COLOR: #008000">--&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">system-property&nbsp;</span><span style="COLOR: #ff0000">javax.xml.transform.TransformerFactory</span><span style="COLOR: #0000ff">=<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"org.apache.xalan.processor.TransformerFactoryImpl"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><img src="http://www.blogjava.net/Images/dot.gif"><img src="http://www.blogjava.net/Images/dot.gif"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">web-app</span><span style="COLOR: #0000ff">&gt;</span></div>
<br><br><br>以上的以全部在实施中测试通过并且运行。大家可以方向使用和理解。如有疑问，相互交流.<br>
<img src ="http://www.blogjava.net/hellboys/aggbug/108737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2007-04-05 16:55 <a href="http://www.blogjava.net/hellboys/archive/2007/04/05/108737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ActiveMQ4.1 +Spring2.0的POJO JMS方案 扩展，以更加实用（基于ss）</title><link>http://www.blogjava.net/hellboys/archive/2007/04/01/107834.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Sun, 01 Apr 2007 13:56:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2007/04/01/107834.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/107834.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2007/04/01/107834.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/107834.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/107834.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; 说明： 本文并非基础说明文章，如无基础，请先参阅：1. http://wiki.springside.org.cn/display/springside/ActiveMQ2. http://wiki.springside.org.cn/display/springside/ActiveMQ-part2仅以springside-2.0-RC1版本扩展由于为每个POJO类实现自己...&nbsp;&nbsp;<a href='http://www.blogjava.net/hellboys/archive/2007/04/01/107834.html'>阅读全文</a><img src ="http://www.blogjava.net/hellboys/aggbug/107834.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2007-04-01 21:56 <a href="http://www.blogjava.net/hellboys/archive/2007/04/01/107834.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>compass 中使用annatation 简化配置</title><link>http://www.blogjava.net/hellboys/archive/2006/06/04/50357.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Sun, 04 Jun 2006 14:44:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2006/06/04/50357.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/50357.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2006/06/04/50357.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/50357.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/50357.html</trackback:ping><description><![CDATA[Compass也提供另一直配置, 使用java5 的annotation 来进行OSEM. <br />下面就是简单的Plain Old Java Object (POJO)类型的搜索类,使用了Compass annotations.在运行时刻, compass抽取对象属性插入和相应源数据索引中. <br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_22_727_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_727_Open_Text.style.display='none'; Codehighlighter1_22_727_Closed_Image.style.display='inline'; Codehighlighter1_22_727_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_22_727_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_727_Closed_Text.style.display='none'; Codehighlighter1_22_727_Open_Image.style.display='inline'; Codehighlighter1_22_727_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Product  </span><span id="Codehighlighter1_22_727_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_22_727_Open_Text"><span style="COLOR: #000000">{     <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    @SearchableId<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Integer id;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Category category;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Integer inventory;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String descn;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Double unitprice;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String status;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String shortDescn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Date createTime;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Date modifyTime;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> User createUser;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> User modifyUser;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    @SearchableProperty(name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_417_449_Open_Image" onclick="this.style.display='none'; Codehighlighter1_417_449_Open_Text.style.display='none'; Codehighlighter1_417_449_Closed_Image.style.display='inline'; Codehighlighter1_417_449_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_417_449_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_417_449_Closed_Text.style.display='none'; Codehighlighter1_417_449_Open_Image.style.display='inline'; Codehighlighter1_417_449_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getName() </span><span id="Codehighlighter1_417_449_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_417_449_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    @SearchableProperty(name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">descn</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_517_550_Open_Image" onclick="this.style.display='none'; Codehighlighter1_517_550_Open_Text.style.display='none'; Codehighlighter1_517_550_Closed_Image.style.display='inline'; Codehighlighter1_517_550_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_517_550_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_517_550_Closed_Text.style.display='none'; Codehighlighter1_517_550_Open_Image.style.display='inline'; Codehighlighter1_517_550_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getDescn() </span><span id="Codehighlighter1_517_550_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_517_550_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.descn;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_582_619_Open_Image" onclick="this.style.display='none'; Codehighlighter1_582_619_Open_Text.style.display='none'; Codehighlighter1_582_619_Closed_Image.style.display='inline'; Codehighlighter1_582_619_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_582_619_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_582_619_Closed_Text.style.display='none'; Codehighlighter1_582_619_Open_Image.style.display='inline'; Codehighlighter1_582_619_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Double getUnitprice() </span><span id="Codehighlighter1_582_619_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_582_619_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.unitprice;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_665_707_Open_Image" onclick="this.style.display='none'; Codehighlighter1_665_707_Open_Text.style.display='none'; Codehighlighter1_665_707_Closed_Image.style.display='inline'; Codehighlighter1_665_707_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_665_707_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_665_707_Closed_Text.style.display='none'; Codehighlighter1_665_707_Open_Image.style.display='inline'; Codehighlighter1_665_707_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setUnitprice(Double unitprice) </span><span id="Codehighlighter1_665_707_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_665_707_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.unitprice </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> unitprice;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    setter</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">getter<img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span></span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">@Searchable(alias </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">book</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_62_778_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_778_Open_Text.style.display='none'; Codehighlighter1_62_778_Closed_Image.style.display='inline'; Codehighlighter1_62_778_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_62_778_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_62_778_Closed_Text.style.display='none'; Codehighlighter1_62_778_Open_Image.style.display='inline'; Codehighlighter1_62_778_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Book </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Product </span><span id="Codehighlighter1_62_778_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_62_778_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String image;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String author;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String publisher;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String publishDate;<br /><img id="Codehighlighter1_182_183_Open_Image" onclick="this.style.display='none'; Codehighlighter1_182_183_Open_Text.style.display='none'; Codehighlighter1_182_183_Closed_Image.style.display='inline'; Codehighlighter1_182_183_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_182_183_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_182_183_Closed_Text.style.display='none'; Codehighlighter1_182_183_Open_Image.style.display='inline'; Codehighlighter1_182_183_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> Book() </span><span id="Codehighlighter1_182_183_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_182_183_Open_Text"><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_211_231_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_231_Open_Text.style.display='none'; Codehighlighter1_211_231_Closed_Image.style.display='inline'; Codehighlighter1_211_231_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_211_231_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_211_231_Closed_Text.style.display='none'; Codehighlighter1_211_231_Open_Image.style.display='inline'; Codehighlighter1_211_231_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getImage() </span><span id="Codehighlighter1_211_231_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_211_231_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> image;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_269_295_Open_Image" onclick="this.style.display='none'; Codehighlighter1_269_295_Open_Text.style.display='none'; Codehighlighter1_269_295_Closed_Image.style.display='inline'; Codehighlighter1_269_295_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_269_295_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_269_295_Closed_Text.style.display='none'; Codehighlighter1_269_295_Open_Image.style.display='inline'; Codehighlighter1_269_295_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setImage(String image) </span><span id="Codehighlighter1_269_295_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_269_295_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.image </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> image;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    @SearchableProperty(name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">author</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_362_383_Open_Image" onclick="this.style.display='none'; Codehighlighter1_362_383_Open_Text.style.display='none'; Codehighlighter1_362_383_Closed_Image.style.display='inline'; Codehighlighter1_362_383_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_362_383_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_362_383_Closed_Text.style.display='none'; Codehighlighter1_362_383_Open_Image.style.display='inline'; Codehighlighter1_362_383_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getAuthor() </span><span id="Codehighlighter1_362_383_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_362_383_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> author;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_423_451_Open_Image" onclick="this.style.display='none'; Codehighlighter1_423_451_Open_Text.style.display='none'; Codehighlighter1_423_451_Closed_Image.style.display='inline'; Codehighlighter1_423_451_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_423_451_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_423_451_Closed_Text.style.display='none'; Codehighlighter1_423_451_Open_Image.style.display='inline'; Codehighlighter1_423_451_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setAuthor(String author) </span><span id="Codehighlighter1_423_451_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_423_451_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.author </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> author;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    @SearchableProperty(name </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">publisher</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)<br /><img id="Codehighlighter1_524_548_Open_Image" onclick="this.style.display='none'; Codehighlighter1_524_548_Open_Text.style.display='none'; Codehighlighter1_524_548_Closed_Image.style.display='inline'; Codehighlighter1_524_548_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_524_548_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_524_548_Closed_Text.style.display='none'; Codehighlighter1_524_548_Open_Image.style.display='inline'; Codehighlighter1_524_548_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getPublisher() </span><span id="Codehighlighter1_524_548_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_524_548_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> publisher;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_594_628_Open_Image" onclick="this.style.display='none'; Codehighlighter1_594_628_Open_Text.style.display='none'; Codehighlighter1_594_628_Closed_Image.style.display='inline'; Codehighlighter1_594_628_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_594_628_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_594_628_Closed_Text.style.display='none'; Codehighlighter1_594_628_Open_Image.style.display='inline'; Codehighlighter1_594_628_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setPublisher(String publisher) </span><span id="Codehighlighter1_594_628_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_594_628_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.publisher </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> publisher;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_662_688_Open_Image" onclick="this.style.display='none'; Codehighlighter1_662_688_Open_Text.style.display='none'; Codehighlighter1_662_688_Closed_Image.style.display='inline'; Codehighlighter1_662_688_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_662_688_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_662_688_Closed_Text.style.display='none'; Codehighlighter1_662_688_Open_Image.style.display='inline'; Codehighlighter1_662_688_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String getPublishDate() </span><span id="Codehighlighter1_662_688_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_662_688_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> publishDate;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_738_776_Open_Image" onclick="this.style.display='none'; Codehighlighter1_738_776_Open_Text.style.display='none'; Codehighlighter1_738_776_Closed_Image.style.display='inline'; Codehighlighter1_738_776_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_738_776_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_738_776_Closed_Text.style.display='none'; Codehighlighter1_738_776_Open_Image.style.display='inline'; Codehighlighter1_738_776_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> setPublishDate(String publishDate) </span><span id="Codehighlighter1_738_776_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_738_776_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.publishDate </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> publishDate;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />注意: 对象必须遵守下面的规则. <br />1. 所有的持久化类必须有默认构造函数(没参数构造方法).<br />2. OSEM要求映射类JavaBean必须有一个或更多的id主建. id属性可以是对象类型,例如java.lang.String or java.util.Date.<br />  并且类注解使用@SearchableClassConverter或者使用定义Converter(通常继承Compass AbstractBasicConverter).<br />3. 使用JavaBean规范, getter/setter. <br /><br />更多:@Searchable,@SearchableId,@SearchableProperty and So On Look: <a href="http://www.opensymphony.com/compass/content/documentation.html">http://www.opensymphony.com/compass/content/documentation.html</a><br /><br /><img src ="http://www.blogjava.net/hellboys/aggbug/50357.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2006-06-04 22:44 <a href="http://www.blogjava.net/hellboys/archive/2006/06/04/50357.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Compass - springside 中的应用</title><link>http://www.blogjava.net/hellboys/archive/2006/05/31/49311.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Wed, 31 May 2006 09:49:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2006/05/31/49311.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/49311.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2006/05/31/49311.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/49311.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/49311.html</trackback:ping><description><![CDATA[
		<h1>Compass </h1>
		<p>作者：<a href="/hellboys/" target="_blank"> 地狱男爵</a></p>
		<h2>1.概述</h2>
		<p>springside 官方网站: <a href="http://www.springside.org.cn">http://www.springside.org.cn</a><br /></p>
		<p>网站: <a href="http://www.compassframework.org/" target="_blank">http://www.compassframework.org/</a><br /><br />Compass是一流的开放源码JAVA搜索引擎框架，对于你的应用修饰，搜索引擎语义更具有能力。依靠顶级的Lucene搜索引擎，Compass 结合了，像 Hibernate和 Sprin的流行的框架，为你的应用提供了从数据模型和数据源同步改变的搜索力.并且添加了2方面的特征,事物管理和快速更新优化. Compass的目标是：把java应用简单集成到搜索引擎中.编码更少，查找数据更便捷 .<br /></p>
		<h2>2.Object/Search Engine Mapping - 配置XML</h2>
		<p>OSEM: 对象搜索引擎影影射(Object Search Engine Mapping),通过xml配置文件,提供了POJO's (Plain Old Java Objects)到搜索引擎. <br /></p>
		<h3>2.1 XML配置</h3>一般都是 *.cpm.xml 形式 . 
<p></p><p>1) package指定了对应java类的包名，<br />2)class为pojo类名.contract为公共部分, 子类被可以extends.Property 对 java类的属性。<br />3)资源的Property引用的Search Engine meta-data. <br />注意: id为类标识. </p><pre> &lt;compass-core-mapping package="org.springside.bookstore.domain"&gt;  <p></p><p> &lt;contract alias="product"&gt;
  &lt;id name="id"/&gt;
  	&lt;property name="name"&gt;
  		&lt;meta-data&gt;${springside.name}&lt;/meta-data&gt;
  	&lt;/property&gt;
  	&lt;property name="descn"&gt;
  		&lt;meta-data&gt;${springside.descn}&lt;/meta-data&gt;
  	&lt;/property&gt;
  &lt;/contract&gt;  </p><p> &lt;class name="Book" alias="${springside.book}" extends="product"&gt;
  	&lt;property name="author"&gt;
  		&lt;meta-data&gt;${springside.author}&lt;/meta-data&gt;
  	&lt;/property&gt;<br />  	&lt;property name="publisher"&gt;
  		&lt;meta-data&gt;${springside.publisher}&lt;/meta-data&gt;
  	&lt;/property&gt;
  &lt;/class&gt;  </p><p>&lt;/compass-core-mapping&gt;  </p></pre><h2>3.Common Meta Data</h2><p>定义Compass配置文件(*.cfg.xml). Compass 自动替换OSEM对应的原数据(Common meta-data)标签的值. ${...} 很像ant.<br />简单的可以理解为alias对应为表,meta-data为column.具体阐述,请见compass reference(Chapter 3. Search Engine)</p><pre>&lt;compass-core-meta-data&gt;  <p> &lt;meta-data-group id="springside" displayName="SpringSide Book Meta Data"&gt;<br />
 &lt;description&gt;SpringSide Meta Data&lt;/description&gt;
  &lt;uri&gt;http://compass/springside&lt;/uri&gt;  </p><p> &lt;alias id="book" displayName="Book"&gt;
  &lt;description&gt;Book alias&lt;/description&gt;
  &lt;uri&gt;http://compass/springside/alias/book&lt;/uri&gt;
  &lt;name&gt;book&lt;/name&gt;
  &lt;/alias&gt;  </p><p> &lt;meta-data id="name" displayName="Name"&gt;
  &lt;uri&gt;http://compass/springside/name&lt;/uri&gt;
  &lt;name&gt;descn&lt;/name&gt;
  &lt;/meta-data&gt;  </p><p> &lt;meta-data id="descn" displayName="Description"&gt;
  &lt;uri&gt;http://compass/springside/descn&lt;/uri&gt;
  &lt;name&gt;descn&lt;/name&gt;
  &lt;/meta-data&gt;  </p><p> &lt;meta-data id="author" displayName="Author"&gt;
  &lt;description&gt;The author of a book&lt;/description&gt;
  &lt;uri&gt;http://compass/springside/author&lt;/uri&gt;
 &lt;name&gt;author&lt;/name&gt;
  &lt;/meta-data&gt;  </p><p> &lt;meta-data id="publisher" displayName="Publisher"&gt;
 &lt;description&gt;The publisher of a book&lt;/description&gt;
  &lt;uri&gt;http://compass/springside/publisher&lt;/uri&gt;
  &lt;name&gt;publisher&lt;/name&gt;
  &lt;/meta-data&gt;
&lt;/meta-data-group&gt;  </p><p>&lt;/compass-core-meta-data&gt; </p></pre><h2>4. 与spring,hibernate集成的实现 </h2><h3>4.1 hibernate 配置</h3>配置通透的pojo,class所应对的hibernate配置hbm.xml,这里就不在熬述.具体可见springside源码. 
<p></p><h3>4.2 spring配置</h3>hiberante中的sessionFactory,transactionManager相比大家也是轻车熟路了.这里还是代过(因为不牵扯稿费的问题吗^_^ ).compass已经对对spring集成做了很好的封装，让我们的使用更加简单,我们可以不为compass编写一行代码,就可以做完搜索引擎的检索.下面谈一下compass在spring中的简明配置. 
<p></p><pre><p>&lt;beans&gt;<br />
&lt;bean id="compass" class="org.compass.spring.LocalCompassBean"&gt;
&lt;property name="<b>resourceLocations</b>"&gt;
&lt;list&gt;
&lt;value&gt;classpath:compass-springside.cmd.xml&lt;/value&gt;
&lt;value&gt;classpath:compass-springside.cpm.xml&lt;/value&gt;
&lt;/list&gt;<br />
&lt;/property&gt;
&lt;property name="compassSettings"&gt;
&lt;props&gt;
&lt;prop key="<b>compass.engine.connection</b>"&gt;file://${user.home}/springside/compass&lt;/prop&gt;
&lt;prop key="compass.transaction.factory"&gt;org.compass.spring.transaction.SpringSyncTransactionFactory&lt;/prop&gt;
&lt;/props&gt;
&lt;/property&gt;<br />
&lt;property name="transactionManager" ref="transactionManager"/&gt;
&lt;/bean&gt;  </p><p> &lt;bean id="<b>hibernateGpsDevice</b>" class="org.compass.spring.device.hibernate.SpringHibernate3GpsDevice"&gt;<br />
  &lt;property name="name"&gt;
  &lt;value&gt;hibernateDevice&lt;/value&gt;
  &lt;/property&gt;
  &lt;property name="sessionFactory" ref="sessionFactory"/&gt;
  &lt;/bean&gt;  </p><p> &lt;bean id="compassGps" class="org.compass.gps.impl.SingleCompassGps" init-method="start" destroy-method="stop"&gt;<br />
  &lt;property name="compass" ref="compass"/&gt;
  &lt;property name="gpsDevices"&gt;
  &lt;list&gt;
  &lt;ref local="hibernateGpsDevice"/&gt;
  &lt;/list&gt;
  &lt;/property&gt;
  &lt;/bean&gt;
  &lt;/beans&gt;</p></pre><p>resourceLocations: 装入compass的配置文件 *.cmd.xml,*.cpm.xml<br />compass.engine.connection: 就是索引做存放的本机文件的路径.搜索引擎也是根据本机文件索引,进行查询.<br />hibernateGpsDevice: 注入sessionFactory. </p><p>The Hibernate Gps Device:用Hibernate 3 事件系统,提高支持<b>Real Time Data Mirroring</b>.经Hiberante的数据改变自动被反射到索引里面.</p><h3>4.3 web中的配置</h3><pre>&lt;bean id="indexBookController" class="org.compass.spring.web.mvc.CompassIndexController"&gt;<br />		&lt;property name="compassGps"&gt;&lt;ref bean="compassGps"/&gt;&lt;/property&gt;<br />		&lt;property name="indexView"&gt;&lt;value&gt;/admin/indexBook.jsp&lt;/value&gt;&lt;/property&gt;<br />		&lt;property name="indexResultsView"&gt;&lt;value&gt;/admin/indexBook.jsp&lt;/value&gt;&lt;/property&gt;<br />    &lt;/bean&gt;<br /><br />    &lt;bean id="searchBookController" class="org.compass.spring.web.mvc.CompassSearchController"&gt;<br />		&lt;property name="compass"&gt;&lt;ref bean="compass"/&gt;&lt;/property&gt;<br />		&lt;property name="searchView"&gt;&lt;value&gt;/home/top.jsp&lt;/value&gt;&lt;/property&gt;<br />		&lt;property name="searchResultsView"&gt;&lt;value&gt;/home/searchBook.jsp&lt;/value&gt;&lt;/property&gt;<br />		&lt;property name="pageSize"&gt;&lt;value&gt;3&lt;/value&gt;&lt;/property&gt;<br />    &lt;/bean&gt;</pre><p>调用到indexBookController,完成索引重建,调用到searchBookController,完成搜索.</p>搜索页面 : <pre>&lt;INPUT type="text" size="20" name="query" class="search" value=""&gt; </pre><br />搜索结果:<pre><p>&lt;div class="left"&gt;&lt;c:if test="${! empty searchResults}"&gt;<br />耗时： &lt;c:out value="${searchResults.searchTime}" /&gt;ms<br />&lt;c:if test="${empty searchResults.hits}"&gt;<br />	，没有找到符合条件的图书，请确保已在管理后台建立索引。<br />&lt;/c:if&gt;<br />	&lt;c:forEach var="hit" items="${searchResults.hits}"&gt;<br />		&lt;c:choose&gt;<br />			&lt;c:when test="${hit.alias == 'book'}"&gt;<br />				&lt;p&gt;&lt;a<br />					href="&lt;c:url value="/bookstore.do?action=bookDetail&amp;id=${hit.data.id}"/&gt;"&gt;<br />				《&lt;c:out value="${hit.data.name}" /&gt;》 &lt;/a&gt; &lt;br /&gt;<br />				作者：&lt;c:out value="${hit.data.author}" /&gt; &amp;nbsp; 出版社： &lt;c:out<br />					value="${hit.data.publisher}" /&gt;&lt;/p&gt;<br />			&lt;/c:when&gt;<br />		&lt;/c:choose&gt;<br />	&lt;/c:forEach&gt;</p></pre><h2>...</h2><script src="foot.js"></script><center><script type="text/javascript"><![CDATA[oogle_ad_client = "pub-2429212051207422";google_ad_width = 728;google_ad_height = 90;google_ad_format = "728x90_as";google_ad_type = "text";google_ad_channel ="";]]&gt;</script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script><div id="footer"><script><![CDATA[ar a253758tf="51la";var a253758pu="";var a253758pf="51la";var a253758su=window.location;var a253758sf=document.referrer;var a253758of="";var a253758op="";var a253758ops=1;var a253758ot=1;var a253758d=new Date();var a253758color="";if (navigator.appName=="Netscape"){a253758color=screen.pixelDepth;} else {a253758color=screen.colorDepth;}]]&gt;</script><script><![CDATA[253758tf=top.document.referrer;]]&gt;</script><script><![CDATA[253758pu =window.parent.location;]]&gt;</script><script><![CDATA[253758pf=window.parent.document.referrer;]]&gt;</script><script><![CDATA[253758ops=document.cookie.match(new RegExp("(^| )AJSTAT_ok_pages=([^;]*)(;|$)"));a253758ops=(a253758ops==null)?1: (parseInt(unescape((a253758ops)[2]))+1);var a253758oe =new Date();a253758oe.setTime(a253758oe.getTime()+60*60*1000);document.cookie="AJSTAT_ok_pages="+a253758ops+ ";expires="+a253758oe.toGMTString();a253758ot=document.cookie.match(new RegExp("(^| )AJSTAT_ok_times=([^;]*)(;|$)"));if(a253758ot==null){a253758ot=1;}else{a253758ot=parseInt(unescape((a253758ot)[2])); a253758ot=(a253758ops==1)?(a253758ot+1):(a253758ot);}a253758oe.setTime(a253758oe.getTime()+365*24*60*60*1000);document.cookie="AJSTAT_ok_times="+a253758ot+";expires="+a253758oe.toGMTString();]]&gt;</script><script><![CDATA[253758of=a253758sf;if(a253758pf!=="51la"){a253758of=a253758pf;}if(a253758tf!=="51la"){a253758of=a253758tf;}a253758op=a253758pu;try{lainframe}catch(e){a253758op=a253758su;}document.write('<img style="display:none" src="http://11.db.51.la/s.asp?id=253758&tpages='+a253758ops+'&ttimes='+a253758ot+'&tzone='+(0-a253758d.getTimezoneOffset()/60)+'&tcolor='+a253758color+'&sSize='+screen.width+','+screen.height+'&referrer='+escape(a253758of)+'&vpage='+escape(a253758op)+'" />');]]&gt;</script></div></center><img src ="http://www.blogjava.net/hellboys/aggbug/49311.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2006-05-31 17:49 <a href="http://www.blogjava.net/hellboys/archive/2006/05/31/49311.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTMLParser属性解析</title><link>http://www.blogjava.net/hellboys/archive/2006/05/22/47507.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Mon, 22 May 2006 09:30:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2006/05/22/47507.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/47507.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2006/05/22/47507.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/47507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/47507.html</trackback:ping><description><![CDATA[HTMLParser 1.6<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">/*<br />html : html内容<br />identifier: 搜索标识<br />*/<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><br /><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> Object[] extractText(String html, String identifier)<br /><img id="Codehighlighter1_81_1114_Open_Image" onclick="this.style.display='none'; Codehighlighter1_81_1114_Open_Text.style.display='none'; Codehighlighter1_81_1114_Closed_Image.style.display='inline'; Codehighlighter1_81_1114_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_81_1114_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_81_1114_Closed_Text.style.display='none'; Codehighlighter1_81_1114_Open_Image.style.display='inline'; Codehighlighter1_81_1114_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">throws</span><span style="COLOR: #000000"> Exception </span><span id="Codehighlighter1_81_1114_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_81_1114_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        List</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> resultTextList </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArrayList</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">String</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Parser parser </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Parser();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        parser.setInputHTML(html);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        NodeFilter filter </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> HasAttributeFilter(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">class</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, identifier);<br /> /* NodeFilter filter 就是要解析的过滤器，实现有好多种，我采用的属性过滤,其他more api*/<br /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        NodeList nodeList </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> parser.extractAllNodesThatMatch(filter);<br />/* <font face="Lucida Console">extractAllNodesThatAre(class)已经不被推荐使用，在1.6版本中，我感到更加体形了灵活性.更好的适用了自定义的tag </font>*/<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (nodeList </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nodeList.size() </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> System.out.println("start ============== ,size = "<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> + nodeList.size());</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="COLOR: #000000">        Node[] nodes </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> nodeList.toNodeArray();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        String line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_600_1076_Open_Image" onclick="this.style.display='none'; Codehighlighter1_600_1076_Open_Text.style.display='none'; Codehighlighter1_600_1076_Closed_Image.style.display='inline'; Codehighlighter1_600_1076_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_600_1076_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_600_1076_Closed_Text.style.display='none'; Codehighlighter1_600_1076_Open_Image.style.display='inline'; Codehighlighter1_600_1076_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000"> nodes.length; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) </span><span id="Codehighlighter1_600_1076_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_600_1076_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            Node node </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> nodes[i];   /*得到所以符合的节点，类型化做对应的标签类*/<br /><img id="Codehighlighter1_656_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_656_733_Open_Text.style.display='none'; Codehighlighter1_656_733_Closed_Image.style.display='inline'; Codehighlighter1_656_733_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_656_733_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_656_733_Closed_Text.style.display='none'; Codehighlighter1_656_733_Open_Image.style.display='inline'; Codehighlighter1_656_733_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (node </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Span) </span><span id="Codehighlighter1_656_733_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_656_733_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                Span spanTag </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Span) node;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> spanTag.toPlainTextString();<br /><img id="Codehighlighter1_773_866_Open_Image" onclick="this.style.display='none'; Codehighlighter1_773_866_Open_Text.style.display='none'; Codehighlighter1_773_866_Closed_Image.style.display='inline'; Codehighlighter1_773_866_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_773_866_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_773_866_Closed_Text.style.display='none'; Codehighlighter1_773_866_Open_Image.style.display='inline'; Codehighlighter1_773_866_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (node </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> TableColumn) </span><span id="Codehighlighter1_773_866_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_773_866_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                TableColumn tableTag </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (TableColumn) node;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> tableTag.toPlainTextString();<br /><img id="Codehighlighter1_898_971_Open_Image" onclick="this.style.display='none'; Codehighlighter1_898_971_Open_Text.style.display='none'; Codehighlighter1_898_971_Closed_Image.style.display='inline'; Codehighlighter1_898_971_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_898_971_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_898_971_Closed_Text.style.display='none'; Codehighlighter1_898_971_Open_Image.style.display='inline'; Codehighlighter1_898_971_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (node </span><span style="COLOR: #0000ff">instanceof</span><span style="COLOR: #000000"> Div) </span><span id="Codehighlighter1_898_971_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_898_971_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                Div divTag </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (Div) node;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                line </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> divTag.toPlainTextString();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_1009_1028_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1009_1028_Open_Text.style.display='none'; Codehighlighter1_1009_1028_Closed_Image.style.display='inline'; Codehighlighter1_1009_1028_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1009_1028_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1009_1028_Closed_Text.style.display='none'; Codehighlighter1_1009_1028_Open_Image.style.display='inline'; Codehighlighter1_1009_1028_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (StringUtil.isTrimEmpty(line))</span><span id="Codehighlighter1_1009_1028_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1009_1028_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_1033_1068_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1033_1068_Open_Text.style.display='none'; Codehighlighter1_1033_1068_Closed_Image.style.display='inline'; Codehighlighter1_1033_1068_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_1033_1068_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1033_1068_Closed_Text.style.display='none'; Codehighlighter1_1033_1068_Open_Image.style.display='inline'; Codehighlighter1_1033_1068_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            }</span></span><span style="COLOR: #0000ff">else</span><span id="Codehighlighter1_1033_1068_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_1033_1068_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                resultTextList.add(line);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> resultTextList.toArray();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><br /><br />StringUtil 常用类<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_0_32_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_32_Open_Text.style.display='none'; Codehighlighter1_0_32_Closed_Image.style.display='inline'; Codehighlighter1_0_32_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_32_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_32_Closed_Text.style.display='none'; Codehighlighter1_0_32_Open_Image.style.display='inline'; Codehighlighter1_0_32_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_32_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_0_32_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 去掉左右空格后字符串是否为空<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> isTrimEmpty(String astr)<br /><img id="Codehighlighter1_89_293_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_293_Open_Text.style.display='none'; Codehighlighter1_89_293_Closed_Image.style.display='inline'; Codehighlighter1_89_293_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_89_293_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_89_293_Closed_Text.style.display='none'; Codehighlighter1_89_293_Open_Image.style.display='inline'; Codehighlighter1_89_293_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_89_293_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_89_293_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> astr) </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> (astr.length() </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))<br /><img id="Codehighlighter1_151_186_Open_Image" onclick="this.style.display='none'; Codehighlighter1_151_186_Open_Text.style.display='none'; Codehighlighter1_151_186_Closed_Image.style.display='inline'; Codehighlighter1_151_186_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_151_186_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_151_186_Closed_Text.style.display='none'; Codehighlighter1_151_186_Open_Image.style.display='inline'; Codehighlighter1_151_186_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_151_186_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_151_186_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (isBlank(astr.trim()))<br /><img id="Codehighlighter1_230_265_Open_Image" onclick="this.style.display='none'; Codehighlighter1_230_265_Open_Text.style.display='none'; Codehighlighter1_230_265_Closed_Image.style.display='inline'; Codehighlighter1_230_265_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_230_265_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_230_265_Closed_Text.style.display='none'; Codehighlighter1_230_265_Open_Image.style.display='inline'; Codehighlighter1_230_265_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_230_265_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_230_265_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_300_337_Open_Image" onclick="this.style.display='none'; Codehighlighter1_300_337_Open_Text.style.display='none'; Codehighlighter1_300_337_Closed_Image.style.display='inline'; Codehighlighter1_300_337_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_300_337_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_300_337_Closed_Text.style.display='none'; Codehighlighter1_300_337_Open_Image.style.display='inline'; Codehighlighter1_300_337_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_300_337_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_300_337_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 字符串是否为空:null或者长度为0.<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> isBlank(String astr)<br /><img id="Codehighlighter1_390_552_Open_Image" onclick="this.style.display='none'; Codehighlighter1_390_552_Open_Text.style.display='none'; Codehighlighter1_390_552_Closed_Image.style.display='inline'; Codehighlighter1_390_552_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_390_552_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_390_552_Closed_Text.style.display='none'; Codehighlighter1_390_552_Open_Image.style.display='inline'; Codehighlighter1_390_552_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_390_552_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_390_552_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> astr) </span><span style="COLOR: #000000">||</span><span style="COLOR: #000000"> (astr.length() </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))<br /><img id="Codehighlighter1_452_487_Open_Image" onclick="this.style.display='none'; Codehighlighter1_452_487_Open_Text.style.display='none'; Codehighlighter1_452_487_Closed_Image.style.display='inline'; Codehighlighter1_452_487_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_452_487_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_452_487_Closed_Text.style.display='none'; Codehighlighter1_452_487_Open_Image.style.display='inline'; Codehighlighter1_452_487_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_452_487_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_452_487_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_510_546_Open_Image" onclick="this.style.display='none'; Codehighlighter1_510_546_Open_Text.style.display='none'; Codehighlighter1_510_546_Closed_Image.style.display='inline'; Codehighlighter1_510_546_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_510_546_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_510_546_Closed_Text.style.display='none'; Codehighlighter1_510_546_Open_Image.style.display='inline'; Codehighlighter1_510_546_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_510_546_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_510_546_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><img src ="http://www.blogjava.net/hellboys/aggbug/47507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2006-05-22 17:30 <a href="http://www.blogjava.net/hellboys/archive/2006/05/22/47507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Lucene建立自己的搜索引擎初步(转)</title><link>http://www.blogjava.net/hellboys/archive/2006/05/15/46290.html</link><dc:creator>地狱男爵(hellboys)</dc:creator><author>地狱男爵(hellboys)</author><pubDate>Mon, 15 May 2006 14:54:00 GMT</pubDate><guid>http://www.blogjava.net/hellboys/archive/2006/05/15/46290.html</guid><wfw:comment>http://www.blogjava.net/hellboys/comments/46290.html</wfw:comment><comments>http://www.blogjava.net/hellboys/archive/2006/05/15/46290.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hellboys/comments/commentRss/46290.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hellboys/services/trackbacks/46290.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转:http://www.zdnet.com.cn/developer/webdevelop/story/0,2000081602,39154640,00.htm用Lucene来建立一个索引给你的Web网站加上搜索的功能是增强用户浏览体验的最简单方式之一，但是在你的应用程序里集成一个搜索引擎并不总是很容易。为了帮助你为自己的Java应用程序提供一个灵活的搜索引擎，我会讲解如何使用Lucene，它是...&nbsp;&nbsp;<a href='http://www.blogjava.net/hellboys/archive/2006/05/15/46290.html'>阅读全文</a><img src ="http://www.blogjava.net/hellboys/aggbug/46290.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hellboys/" target="_blank">地狱男爵(hellboys)</a> 2006-05-15 22:54 <a href="http://www.blogjava.net/hellboys/archive/2006/05/15/46290.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>