﻿<?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-积累,创造,分享!</title><link>http://www.blogjava.net/nighthawk/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 19:28:08 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 19:28:08 GMT</pubDate><ttl>60</ttl><item><title>领域模型，你说的是哪一个？</title><link>http://www.blogjava.net/nighthawk/archive/2008/03/23/187954.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Sat, 22 Mar 2008 16:01:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/archive/2008/03/23/187954.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/187954.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/archive/2008/03/23/187954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/187954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/187954.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关注领域模型有一段时间了，不论是分析阶段的还是设计阶段的。<br>其实领域模型的概念很早就有了,但是其概念非常容易被人混淆，首先我们要明确一下这个词的语境：<br>它在软件开发的分析与设计的两个阶段分别代表不同的含义。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/nighthawk/archive/2008/03/23/187954.html'>阅读全文</a><img src ="http://www.blogjava.net/nighthawk/aggbug/187954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2008-03-23 00:01 <a href="http://www.blogjava.net/nighthawk/archive/2008/03/23/187954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重拾DOCBOOK</title><link>http://www.blogjava.net/nighthawk/archive/2008/03/22/187917.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Sat, 22 Mar 2008 10:21:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/archive/2008/03/22/187917.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/187917.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/archive/2008/03/22/187917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/187917.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/187917.html</trackback:ping><description><![CDATA[<p>至于docbook的好处，我也不多说了，就跟吃菜一样，尝过了就知道到底有几好<br />
趁目前有空，部门内部准备补充一下之前缺乏的技术文档。利用这次机会，我再次收想到了docbook。<br />
记得第一次接触docbook的时候，还是3年前的时候了，可惜那个时候没有坚持使用下来。<br />
当初抛弃它的原因是多方面的，缺乏恒心是一方面，配置烦琐也是一方面，另外还有一个很重要的原因就</p>
<p>是缺乏一个所见即所得的编辑器。而这次，这些烦恼彻底解决。XMLmind XML Editor!第一次发现它的时</p>
<p>候有点相见恨晚的感觉，它让我的文档写的如此轻松。<br />
不过有一点要注意，在官网下载的XMLmind XML Editor个人版是不支持直接将xml生成的html,pdf等格式</p>
<p>的。还好，目前有xsltproc，fop，openjade这些工具支持，有了这些在windows下也可以转换的工具，生</p>
<p>成其他格式也不是什么难事。我目前就使用xsltproc来生成html。</p>
<p>附上XMLmind XML Editor的下载地址http://www.xmlmind.com/xmleditor/persoedition.html<br />
附加上xsltproc的下载地址 http://www.zlatkovic.com/pub/libxml/<br />
再附上docbook的地址http://www.oasis-open.org/docbook/</p>
<p>之前的麻烦统统消失，那么剩下的就是享受它的好处了。</p>
<p>不用word，文档也可以写的这么漂亮。docbook，看第二眼发现你依然还是那么好。<br />
</p><img src ="http://www.blogjava.net/nighthawk/aggbug/187917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2008-03-22 18:21 <a href="http://www.blogjava.net/nighthawk/archive/2008/03/22/187917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谁让事务控制不起作用了?</title><link>http://www.blogjava.net/nighthawk/archive/2007/07/09/128974.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Mon, 09 Jul 2007 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/archive/2007/07/09/128974.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/128974.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/archive/2007/07/09/128974.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/128974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/128974.html</trackback:ping><description><![CDATA[<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">在目前使用的现有框架当中，利用</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">spring</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">的</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">AOP</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">机制来控制事务处理是</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">目前最流行的一种控制事务的方式。</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">但是我们在某种使用场合的过程中，为什么有时事务处理老是不起作用呢？这里,为您道出原因之一,</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">首先请看一段话</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face="Times New Roman" color=red size=3><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red">Spring</span></font><font face=宋体 color=red size=3><span style="FONT-SIZE: 12pt; COLOR: red; FONT-FAMILY: 宋体">的事务实现采用基于</span></font><font color=red size=3><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red">AOP</span></font><font face=宋体 color=red size=3><span style="FONT-SIZE: 12pt; COLOR: red; FONT-FAMILY: 宋体">的拦截器来实现，如果没有在事务配置的时候注明回滚的</span></font><font color=red size=3><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red">checked exception</span></font><font face=宋体 color=red size=3><span style="FONT-SIZE: 12pt; COLOR: red; FONT-FAMILY: 宋体">，那么只有在发生了</span></font><font color=red size=3><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red">unchecked exception</span></font><font face=宋体 color=red size=3><span style="FONT-SIZE: 12pt; COLOR: red; FONT-FAMILY: 宋体">的时候，才会进行事务回滚。</span></font><font color=red size=3><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: red"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">有必要先解释一下</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">checked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">与</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">unchecked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">：</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">先看看</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">EXCEPTION</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">在</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">JDK</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">文档当中的结构</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></span></font></p>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt"><a title="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Object.html&#10;java.lang 中的类" href="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Object.html"><font title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Object.html color=black><span title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Object.html style="COLOR: windowtext">java.lang.Object</span></font></a><o:p></o:p></span></font></pre>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt">&nbsp; <img id=_x0000_i1025 height=14 alt="继承者 " src="cid:image001.gif@01C7BFB5.B1D1C910" width=15 border=0><a title="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Throwable.html&#10;java.lang 中的类" href="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Throwable.html"><font title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Throwable.html color=black><span title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Throwable.html style="COLOR: windowtext">java.lang.Throwable</span></font></a><o:p></o:p></span></font></pre>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img id=_x0000_i1026 height=14 alt="继承者 " src="cid:image001.gif@01C7BFB5.B1D1C910" width=15 border=0><a title="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Exception.html&#10;java.lang 中的类" href="file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Exception.html"><font title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Exception.html color=black><span title=file:///C:/Documents%20and%20Settings/xiangweiwei.NINETOWNS/桌面/Chinese-api/java/lang/Exception.html style="COLOR: windowtext">java.lang.Exception</span></font></a><o:p></o:p></span></font></pre>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img id=_x0000_i1027 height=14 alt="继承者 " src="cid:image001.gif@01C7BFB5.B1D1C910" width=15 border=0>java.lang.RuntimeException<o:p></o:p></span></font></pre>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></span></font></pre>
<pre><span class=postbody><font face=宋体 size=3><span style="FONT-SIZE: 12pt">而<span lang=EN-US>Unchecked exception: </span>这类异常都是<span lang=EN-US>RuntimeException</span>的子类，虽然<span lang=EN-US>RuntimeException</span>同样也是<span lang=EN-US>Exception</span>的子类，但是它们是特殊的。</span></font></span><span lang=EN-US>Exception</span>是作为<span lang=EN-US>checked Exception </span>出现的。<span lang=EN-US><o:p></o:p></span></pre>
<pre><span class=postbody><font face=宋体 size=3><span style="FONT-SIZE: 12pt">所以，除了<span lang=EN-US>Error</span>与<span lang=EN-US>RuntimeException</span>，其他剩下的异常都是你需要关心的，而这些异常类统称为<span lang=EN-US>Checked Exception<o:p></o:p></span></span></font></span></pre>
<pre><font face=宋体 size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></span></font></pre>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">有了以上的基础，看看我们框架当中的事务属性</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&lt;property name="transactionAttributes"&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;props&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="get*"&gt;PROPAGATION_REQUIRED,readOnly &lt;/prop&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="save*"&gt;PROPAGATION_REQUIRED &lt;/prop&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="delete*"&gt;PROPAGATION_REQUIRED&lt;/prop&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;prop key="update*"&gt;PROPAGATION_REQUIRED &lt;/prop&gt;</span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/props&gt; <o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&lt;/property&gt;<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial"><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">此处，我们没有指定任何异常，那么它目前默认处理的就是</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">unchecked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">了，再结合我们自身每个项目的模块，在我们的每个项目当中几乎都定义了自己的异常，这些异常都是继承自</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">Exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">，很不幸的是，我们继承的</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">Exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">包括自己定义的异常，都是</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">checked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">。</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face="Times New Roman" size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p>&nbsp;</o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">所以，在我们的事务处理机制当中，事务不管用了。</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">解决办法有</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">2</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">个：</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt"><o:p></o:p></span></font></p>
<p class=MsoNormal><font face="Times New Roman" size=3><span lang=EN-US style="FONT-SIZE: 12pt">1</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">，在事务属性后面加上需要回滚的</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">checked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">。比如</span></font><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">&lt;prop key="save*"&gt;PROPAGATION_REQUIRED,-XXXXException&lt;/prop&gt;(注意那个"-",对应的是"+")<o:p></o:p></span></font></p>
<p class=MsoNormal><font face=Arial size=3><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: Arial">2, </span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">不改配置文件，将需要事务回滚的异常继承自</span></font><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">unchecked exception</span></font><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">类，也就是</span></font><span class=postbody><font size=3><span lang=EN-US style="FONT-SIZE: 12pt">RuntimeException</span></font></span><span class=postbody><font face=宋体 size=3><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体">。<br><br>(nighthawk)</span></font></span></p><img src ="http://www.blogjava.net/nighthawk/aggbug/128974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2007-07-09 09:32 <a href="http://www.blogjava.net/nighthawk/archive/2007/07/09/128974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初识EJB3.0 ---配置与运行篇</title><link>http://www.blogjava.net/nighthawk/archive/2006/07/28/60603.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Fri, 28 Jul 2006 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/archive/2006/07/28/60603.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/60603.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/archive/2006/07/28/60603.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/60603.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/60603.html</trackback:ping><description><![CDATA[<p>          本文将不涉及EJB3.0的设计以及编码.<br />          主要内容是关于JBOSS下EJB3.0的第一个例子的配置与运行。<br />首先下载JBOSS4，并安装成功。目前JBOSS提供的ejb3有2种版本，一种是Embeddable（可嵌入），一种是直接运行。这些都可以在jboss的官方网站获得。<br />Embeddable版本的主要的好处是可以独立运行，方便测试，甚至无需部署在jboss环境当中，当然这是需要它提供的conf以及lib包里面的几个配置来支撑的。如果是在web应用当中运行，还需要将jboss-EJB-3.0_Embeddable_ALPHA_8\conf 里面的配置文件引入到web-inf\classes下的。<br />lib包里面的3个包也需要放在web-inf\lib下面。然后对web.xml进行修改，加上：<br />   &lt;context-param&gt;<br />      &lt;param-name&gt;jboss-kernel-deployments&lt;/param-name&gt;<br />      &lt;param-value&gt;embedded-jboss-beans.xml, jboss-jms-beans.xml&lt;/param-value&gt;<br />   &lt;/context-param&gt;<br />   &lt;listener&gt;<br />      &lt;listener-class&gt;org.jboss.ejb3.embedded.ServletBootstrapListener&lt;/listener-class&gt;<br />   &lt;/listener&gt;<br />否则会报关于jndi方面的错误。</p>
		<p>          前面提到的另一个版本则是需要基于JBOSS环境的完全版。它的配置相对于Embeddable来说更简单一些。   实际上针对这个版本的web应用当中调用EJB3 是无需任何额外配置的. <br />然而在此之前我走了一段弯路：<br />比如看到网上一些介绍性的文章当中提到需要将{jboss_home}\client 当中的一些包拷到web-inf\lib的下面，然后在初始化InitialContext时需要加上java.naming.factory.initial，java.naming.factory.url.pkgs等等的参数。这样反而会抛出CommunicationException: Receive timed out异常。实际上JBOSS都已经将初始化环境设置好了。<br />以下实例是web环境下调用jboss 下ejb3的客户端：<br /><a href="http://www.myjavaserver.com/~nighthawk/EJBClient.war">http://www.myjavaserver.com/~nighthawk/EJBClient.war</a><br />部署在jboss下的ejb3例子，以上2个客户端都是调用的它：<br /><a href="http://www.myjavaserver.com/~nighthawk/MyEJB.jar">http://www.myjavaserver.com/~nighthawk/MyEJB.jar</a><br />web环境下调用Embeddable ejb的客户端的实例比较大，空间不够，不往上放了。<br />不过配置起来也很简单，只需将Embeddable版本当中的conf与lib包放在war包的classed与lib下即可。<br />以上例子均在jboss-4.0.4.GA下测试过。<br />                                                                                                                              ©2006 nighthawk.All rights reserved</p><img src ="http://www.blogjava.net/nighthawk/aggbug/60603.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2006-07-28 16:21 <a href="http://www.blogjava.net/nighthawk/archive/2006/07/28/60603.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于spring整合Quartz的一点说明</title><link>http://www.blogjava.net/nighthawk/archive/2006/02/28/32827.html</link><dc:creator>nighthawk</dc:creator><author>nighthawk</author><pubDate>Tue, 28 Feb 2006 04:57:00 GMT</pubDate><guid>http://www.blogjava.net/nighthawk/archive/2006/02/28/32827.html</guid><wfw:comment>http://www.blogjava.net/nighthawk/comments/32827.html</wfw:comment><comments>http://www.blogjava.net/nighthawk/archive/2006/02/28/32827.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/nighthawk/comments/commentRss/32827.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/nighthawk/services/trackbacks/32827.html</trackback:ping><description><![CDATA[<P><FONT color=#cc0033 size=2>研究spring不深，但最近在使用spring的过程中，发现它总能给人带来点惊喜。<BR>相信大家在做程序的时候应该会碰到时序调度一类的问题，即希望在指定时刻执行某段程序，在spring之前我的第一反应便是在数据库中加job。然而现在，Spring提供了支持时序调度的整合类Quartz，它把复杂的事情完全简单化了，在此我不想再赘叙关于spring中如何去整合Quartz，具体的spring详细配置请参照<A href="http://www.jactiongroup.net/reference/html/scheduling.html">http://www.jactiongroup.net/reference/html/scheduling.html</A>。使用过程很简单，<BR>关于Quartz的说明参照官网的一段描述<BR>What is Quartz?<BR>Quartz is a full-featured, open source job scheduling system that can be integrated with, or used along side virtually any J2EE or J2SE application - from the smallest stand-alone application to the largest e-commerce system. Quartz can be used to create simple or complex schedules for executing tens, hundreds, or even tens-of-thousands of jobs; jobs whose tasks are defined as standard Java components or EJBs. The Quartz Scheduler includes many enterprise-class features, such as JTA transactions and clustering.<BR>您也可以参考以下链接进行更深入的了解<A href="http://www.opensymphony.com/quartz">http://www.opensymphony.com/quartz</A></FONT></P>
<P><FONT color=#cc0033 size=2>在使用的过程中，需要再对cronExpression的配置解释一下，如果没有使用过unix的cron，这里确实有点让人迷惑，我便在这里迷惑了一把。<BR>Cron表达式是字符串，它由六个或七个子表达式组成，它描述了不同的调度细节。这些子表达式被白色表达式隔开，格式为* * * * * *<BR>以下的表格对表达式做出了解释<BR>域&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 是否必须 允许的值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 允许的字符<BR>Seconds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0-59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;, - * / <BR>Minutes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0-59&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; , - * / <BR>Hours&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0-23&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; , - * / <BR>Day of month YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1-31&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;, - * ? / L W C <BR>Month&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; YES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1-12 or JAN-DEC, - * / <BR>Day of week&nbsp; YES&nbsp;&nbsp;&nbsp;1-7 or <a title="" href="http://cn.sun.com" target="_blank">SUN</a>-SAT , - * ? / L C # <BR>Year&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; empty,1970-2099,&nbsp;&nbsp; - * / </FONT></P>
<P><FONT color=#cc0033 size=2>比如：字符串“0 0 12 ? * WEB 意味着每周三上午12：00。<BR>特殊字符的一些说明：<BR>* 表示的是所有的值，比如在秒的位置上有* 则表示为每一秒种。所以，你在表示每5分钟执行一次的时候便不能写成 * 0/5 * * * ? 而应该是0 0/5 * * * ?<BR>? 表示没有指定特别的值,是允许为月的某一天或者周的某一天字段的。它被用来限定"没有限定值"。这是有用的，当你需要限定一些事情在一个或两个字段中，但不是这里的。<BR>有一个特别需要主意的地方便是*与?的搭配使用。比如在Day of month与Day of week全是* ，那边自相矛盾了。官网中给出的例子没出现过这种情况。<BR>- 表示范围，比如Hours域中10-12，则表示 "the hours 10, 11 and 12". <BR>，表示指定特别的附加值，比如"MON,WED,FRI" 在 day of week 域表示"the days Monday, Wednesday, and Friday"<BR>/ 表示指定的增长范围。比如"0/15" 在秒的区域表示"0, 15, 30, and 45"秒。</FONT></P>
<P><FONT color=#cc0033 size=2>"L"字符是允许用来月某天和周某天字段。这个字符是一个"last"的缩写，但是它有不同的意义在两个字段的其中之一。例如，这个值"L"在月字段的某一天意味着" 这个月的最后一天"，31或者28等等。<BR></FONT></P><img src ="http://www.blogjava.net/nighthawk/aggbug/32827.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/nighthawk/" target="_blank">nighthawk</a> 2006-02-28 12:57 <a href="http://www.blogjava.net/nighthawk/archive/2006/02/28/32827.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>