﻿<?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-J2EE之巅-随笔分类-Java EE</title><link>http://www.blogjava.net/chaocai/category/19716.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 27 May 2008 09:18:44 GMT</lastBuildDate><pubDate>Tue, 27 May 2008 09:18:44 GMT</pubDate><ttl>60</ttl><item><title>自己实现IoC,AOP容器  源码下载</title><link>http://www.blogjava.net/chaocai/archive/2008/05/27/203261.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Tue, 27 May 2008 08:54:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/05/27/203261.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/203261.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/05/27/203261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/203261.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/203261.html</trackback:ping><description><![CDATA[上一篇相关内容<br />
http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html<br />
源码下载<br />
http://www.blogjava.net/Files/chaocai/mini-container-beta0.9-src.rar<br />
希望对大家有帮z，也期待大家的反馈！ 
<img src ="http://www.blogjava.net/chaocai/aggbug/203261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-05-27 16:54 <a href="http://www.blogjava.net/chaocai/archive/2008/05/27/203261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自己实现IoC,AOP容器</title><link>http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 26 May 2008 12:21:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/203020.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/203020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/203020.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;Mini-Container 开发者手册(Mini-Container Beta 0.9,下载地址：http://www.blogjava.net/Files/chaocai/mini-container-beta-0.9.rar)蔡超软件架构师软件架构咨询顾问Chaocai2001@yahoo.com.cn序Mini-Container...&nbsp;&nbsp;<a href='http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html'>阅读全文</a><img src ="http://www.blogjava.net/chaocai/aggbug/203020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-05-26 20:21 <a href="http://www.blogjava.net/chaocai/archive/2008/05/26/203020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>过细粒度的Bundle是成功实现OSGi应用的大敌</title><link>http://www.blogjava.net/chaocai/archive/2008/04/15/193219.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Tue, 15 Apr 2008 13:43:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/04/15/193219.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/193219.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/04/15/193219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/193219.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/193219.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-family: 宋体">近期做了几个使用</span>OSGi<span style="font-family: 宋体">开发的应用，发现使用过细粒度的</span>Bundle<span style="font-family: 宋体">不会给项目带来任何好处，而很多设计人员实际都会在使用</span>OSGi<span style="font-family: 宋体">平台时陷入这个陷阱。</span></p>
<p><span style="font-family: 宋体">首先我们分析</span>OSGi<span style="font-family: 宋体">的特点及可以给我们应用带来的好处</span></p>
<p>1 <span style="font-family: 宋体">良好的动态特性</span></p>
<p>2 <span style="font-family: 宋体">更细粒度的类装载控制，多个版本组件在同一运行环境中共同运行</span></p>
<p>3 <span style="font-family: 宋体">在</span>JVM<span style="font-family: 宋体">内部实现</span>SOA<span style="font-family: 宋体">（我个人倒是认为</span>OSGi<span style="font-family: 宋体">所涉及的仅仅是</span>SOA<span style="font-family: 宋体">思想的一小部分）</span></p>
<p>4 DS<span style="font-family: 宋体">提供的</span>IoC<span style="font-family: 宋体">支持</span></p>
<p><span style="font-family: 宋体">请思考你的应用程序真的需要这些吗？</span></p>
<p><span style="font-family: 宋体">很多设计和开发人员都会在设计和实现时忽略应用的真正需要和</span>OSGi<span style="font-family: 宋体">的复杂性，将应用的所有内部细小划分都采用</span>Bundle<span style="font-family: 宋体">实现。</span></p>
<p><span style="font-family: 宋体">而我们除了应该注意采用</span>OSGi<span style="font-family: 宋体">开发和调试带来的复杂性；同时也要明白动态特性的支持并不是仅仅采用</span>OSGi<span style="font-family: 宋体">平台就可以搞定的，要真正实现动态特性必须注意模块的启动顺序无关性及对其所依赖服务的监听等，这些都会大大增加系统实现和调试的复杂性。</span></p>
<p><span style="font-family: 宋体">其实我们应该认真分析应用是否需要这些</span>OSGi<span style="font-family: 宋体">的特性及这些特性应该在应用的那些部分体现，例如我们可以在扩展方面采用</span>Bundle<span style="font-family: 宋体">实现扩展插件，至于其它部分则不必采用过多的</span>Bundles<span style="font-family: 宋体">（甚至可以采用一个大的</span>Bundle<span style="font-family: 宋体">，而其内部则可以采用如</span>Spring<span style="font-family: 宋体">来帮助我们实现模块化）。</span></p>
<p><span style="font-family: 宋体">同时，不要忘记其他的</span>framework<span style="font-family: 宋体">同样提供了很好的组件化的基础架构如</span>Spring<span style="font-family: 宋体">，</span>Pico-Container<span style="font-family: 宋体">，在</span>OSGi<span style="font-family: 宋体">与其它技术混合时</span>SCA<span style="font-family: 宋体">同样是很好的选择。</span></p>
<p><span style="font-family: 宋体">保持应用的简单性，不要针对特定技术进行设计，而要为设计选择适合的技术。</span></p>
<p style="background: white; line-height: 200%"><span style="font-size: 10.5pt; line-height: 200%">蔡超<br />
</span><span style="font-size: 10.5pt; line-height: 200%; font-family: 'MS Shell Dlg'">Chaocai2001@yahoo.com.cn</span></p>
<span style="font-size: 10.5pt; font-family: 'MS Shell Dlg'">JEE</span><span style="font-size: 10.5pt; font-family: 宋体">咨询顾问</span><span style="font-size: 10.5pt; font-family: 'MS Shell Dlg'"><br clear="all" />
SCEA(1.2&amp;5)<br clear="all" />
IBM Certified OOA&amp;D Solution Designer vUML2</span>
<img src ="http://www.blogjava.net/chaocai/aggbug/193219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-04-15 21:43 <a href="http://www.blogjava.net/chaocai/archive/2008/04/15/193219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring OSGI 快速入门中文教程</title><link>http://www.blogjava.net/chaocai/archive/2008/04/06/191105.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Sun, 06 Apr 2008 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/04/06/191105.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/191105.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/04/06/191105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/191105.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/191105.html</trackback:ping><description><![CDATA[<p>厌倦了那些厚书（特别是那些为了赚钱而特意写厚的书），很多时候这些书让我们找不到技术要点，甚至丧失了学习的兴趣，而最终变成那些拒绝新技术的&#8220;顽固派&#8221;。<br />
其实掌握技术的最佳方式是实践，在实践中不断的深入学习。<br />
本教程旨在帮助哪些已经掌握了OSGi和Spring技术基础的开发人员，迅速将Spring DM应用于实际开发，这是一份入门教程，不求全面，但求简单。<br />
并请配合本教程的实例代码一同学习。</p>
<p>下载教程和示例:<br />
http://www.blogjava.net/Files/chaocai/spring-osgi.rar<br />
<br />
<br />
<br />
<br />
<br />
蔡超</p>
<p>JEE咨询顾问<br />
SCEA(1.2&amp;5)<br />
IBM Certified OOA&amp;D Solution Designer vUML2</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/191105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-04-06 20:41 <a href="http://www.blogjava.net/chaocai/archive/2008/04/06/191105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分层模式中的常见问题</title><link>http://www.blogjava.net/chaocai/archive/2008/03/19/187361.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Wed, 19 Mar 2008 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/03/19/187361.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/187361.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/03/19/187361.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/187361.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/187361.html</trackback:ping><description><![CDATA[<div id="div_content">
<div style="margin: 17pt 0cm 16.5pt"><strong><font size="6">引言</font></strong></div>
<div>分层结构是目前复杂应用系统开发时普遍使用的模式，软件中层之间的依赖关系约束是比较宽松的，并不要求上层仅可以依赖于直接下层，而是上层可以依赖于它的所有下层。</div>
<div>设计中我们会把各种系统的各种组件映射至不同层中，而在我所接触的一些实际项目中设计人员在映射这种组件和层间的关系时经常无意中破坏了层结构的依赖关系约束。</div>
<div align="center">
<p>&nbsp;</p>
<p><font size="2"><a href="http://dev2dev.bea.com.cn/blog/chaocai/uploadfiles/2008/03/16/486.jpg" target="_blank"><img alt="" src="http://dev2dev.bea.com.cn/blog/chaocai/uploadfiles/2008/03/16/486.jpg" border="0" /></a></font></p>
<p><font size="2">图表 <span>1</span> 典型分层结构</font></p>
</div>
<div style="margin: 17pt 0cm 16.5pt"><strong><font size="6">设计中的常见问题</font></strong></div>
<div style="margin: 13pt 0cm"><strong><font size="5">问题一:数据传输对象（DTO）是否应该属于业务层？</font></strong></div>
<div>在J2EE开发的经典著作《Core J2EE Patterns》中数据传输对象被划分在业务层模式中，那么是否数据传输对象应该被映射到业务层呢？</div>
<div>数据访问对象（DAO）在该著作中是被映射到整合层的，这样就会出现一个违反层依赖约束的问题，因为数据访问对象是要依赖于数据传输对象的，因此下层就会出现对上层的依赖了。</div>
<div>所以本人认为DTO是在各层中传输数据的，我们可以不必强求的把他们映射到上述层次中，可以把他们放置在一个公共包中。</div>
<div>&nbsp;</div>
<div style="margin: 13pt 0cm"><strong><font size="5">问题二:使用POJO作业务对象的轻量级架构与上述层模型的映射</font></strong></div>
<div>在使用POJO的轻量级结构中我们通常会使用持久化框架（如Hibernate/JPA）同时会在架构中引入仓库对象(Repository Object)，负责业务对象的获取和保存。（注意：他的功能和DAO是有区别的，仓库对象中通常只应包括业务对象的获取和保存逻辑）。</div>
<div>通常设计人员会把业务对象映射至业务层，而将仓库对象映射至整合层。由于仓库对象对于业务对象的依赖关系就会破坏依赖关系约束，所以这种映射方式显然不正确。</div>
<div>下图是作者推荐的映射方式</div>
<div align="center">
<p>&nbsp;</p>
<p><font size="2"><a href="http://dev2dev.bea.com.cn/blog/chaocai/uploadfiles/2008/03/16/487.jpg" target="_blank"><img alt="" src="http://dev2dev.bea.com.cn/blog/chaocai/uploadfiles/2008/03/16/487.jpg" border="0" /></a></font></p>
<p><font size="2">图表 <span>2</span> 轻量级架构参考模型</font></p>
</div>
<div>&nbsp;</div>
<div>可以看到业务对象和仓库对象都被映射至业务层，而持久化框架被映射到了整合层。</div>
<div>&nbsp;</div>
<div style="margin: 17pt 0cm 16.5pt"><strong><font size="6">总结</font></strong></div>
<p><span style="font-size: 10.5pt">因此大家在设计过程中不要仅仅将分层结构留于形式，而要时刻注意设计是否符合这种架构模式，这样才能真正发挥这种架构模式的优势。</span></p>
<p><span style="font-size: 10.5pt"><span style="font-size: 10.5pt">&nbsp;</span></span></p>
<div>蔡超<br />
<a herf="http://dev2dev.bea.com.cn/blog/chaocai/200803/architecture_16_942.html">http://dev2dev.bea.com.cn/blog/chaocai/200803/architecture_16_942.html</a><br />
</div>
<div>JavaEE 咨询顾问</div>
<div>SCEA (1.2&amp;5.0)</div>
<div>IBM Certified Solution Designer for OOA&amp;D UML2</div>
</div>
<img src ="http://www.blogjava.net/chaocai/aggbug/187361.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-03-19 21:48 <a href="http://www.blogjava.net/chaocai/archive/2008/03/19/187361.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于通过了SCEA5 Beta版的考试</title><link>http://www.blogjava.net/chaocai/archive/2008/02/20/180768.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Wed, 20 Feb 2008 01:25:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2008/02/20/180768.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/180768.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2008/02/20/180768.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/180768.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/180768.html</trackback:ping><description><![CDATA[这个考试和原来的SCEA一样分成三个部分<br />
1 选择，基础知识<br />
2 设计，<br />
3 简答<br />
感觉Beta版比正式版难度大多了，题目数量特别多。而且设计题难度也大。<br />
<br />
<img src ="http://www.blogjava.net/chaocai/aggbug/180768.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2008-02-20 09:25 <a href="http://www.blogjava.net/chaocai/archive/2008/02/20/180768.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在程序中直接使用Spring的工具类</title><link>http://www.blogjava.net/chaocai/archive/2007/12/26/Spring.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Wed, 26 Dec 2007 09:38:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/12/26/Spring.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/170651.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/12/26/Spring.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/170651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/170651.html</trackback:ping><description><![CDATA[http://dev2dev.bea.com.cn/blog/chaocai/200712/spring_26_802.html
<img src ="http://www.blogjava.net/chaocai/aggbug/170651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-12-26 17:38 <a href="http://www.blogjava.net/chaocai/archive/2007/12/26/Spring.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring2.5的组件自动搜索</title><link>http://www.blogjava.net/chaocai/archive/2007/12/04/165134.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Tue, 04 Dec 2007 04:50:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/12/04/165134.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/165134.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/12/04/165134.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/165134.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/165134.html</trackback:ping><description><![CDATA[http://dev2dev.bea.com.cn/blog/chaocai/200712/spring_osgi_04_719.html
<img src ="http://www.blogjava.net/chaocai/aggbug/165134.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-12-04 12:50 <a href="http://www.blogjava.net/chaocai/archive/2007/12/04/165134.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Facade与边界控制</title><link>http://www.blogjava.net/chaocai/archive/2007/10/26/156030.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Fri, 26 Oct 2007 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/10/26/156030.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/156030.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/10/26/156030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/156030.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/156030.html</trackback:ping><description><![CDATA[<p>多层结构是J2EE应用开发的基本模式，很多开发者都会按照多层结构来组织自己的应用（通常分为Facade，Application Service,DAO等层），但是他们往往会选择在不同层上去控制事务和Hibernate Session的边界，可千万不要小看这样的选择它会大大影响程序的可维护性和可复用性。<br />
其实在Facade层来控制事务的边界通常都是最佳选择。我们知道Facade层的粗粒度接口是直接为用户请求提供相应服务的，在典型的J2EE环境中通常使用Session Bean来实现Facade层，并且使用CMT。这时如果有的开发人员在其他层次控制了事务如DAO，由于这些层次通常不会采用EJB实现，所以所使用的事务为容器提供的用户管理事务，根据EJB的事务规范CMT是无法把事务上下文传递到用户管理事务的边界中的，由于J2EE并不支持事务的嵌套，所以当来自Facade的CMT事务遇见DAO的事务时，内部事务将被挂起，这样整个事务的情况，就会和设想的业务逻辑产生很大的差异。<br />
并且有时不同业务逻辑的实现会复用DAO提供多个方法，所以很难控制事务的边界，导致这些方法难以被复用。<br />
对于Hibernate Session，由于存在懒加载的问题，所以开发人员常会预见这样的异常LazyInitializationException。避免这个问题就要求在关闭session前要装载好要使用的对象关系域。而这种逻辑通常只与界面显示内容相关，如果把session的边界控制放置在DAO或者Application Service中就会使业务逻辑的实现要和界面显示逻辑混合在一起，我们必须在这些方法中加载那些界面显示需要的对象关系域。而界面显示是经常变化的，并且业务逻辑会被多个不同的界面所复用，如果这样Application Service，DAO中方法的复用性就会大大降低。<br />
把这些工作放在离表现层最近的Facade中便可以避免这些问题。<br />
注意在其他层次中我们不需要控制session的边界，我们通常采用getCurrentSession()来获得当前事务中的session,记住这个方法必须在事务上下文存在的情况下才可以调用，并且在事务被提交的时候Hibernate会在自动关闭session,所以我们不要显示的关闭session.</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/156030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-10-26 10:00 <a href="http://www.blogjava.net/chaocai/archive/2007/10/26/156030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWF一个简单工作流引擎[支持spring的版本1.3]</title><link>http://www.blogjava.net/chaocai/archive/2007/10/08/151106.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 08 Oct 2007 09:03:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/10/08/151106.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/151106.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/10/08/151106.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/151106.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/151106.html</trackback:ping><description><![CDATA[<h2><a id="homepage1_HomePageDays_DaysList_ctl00_DayItem_DayList_ctl00_TitleUrl" href="http://www.blogjava.net/chaocai/archive/2007/10/08/150983.html">SWF一个简单工作流引擎</a></h2>
你是否已经被像JBPM,XFLow等那样的复杂编程和配置搞头昏脑胀；被他们所依赖的大量jar和容器搞得不知所措。<br />
如果这样就试试笔者开发的这个简单工作流引擎吧，配置和编程都很简单，也不依赖任何容器。支持spring的版本。<br />
下载地址：<br />
http://www.blogjava.net/Files/chaocai/swf-beta-1[1].3-bin.zip<br />
内附用户手册<br />
（SWF开发设计：蔡超，北京天融信，<a href="mailto:chaocai2001@yahoo.com.cn">chaocai2001@yahoo.com.cn</a>)<br />
&nbsp;
<h1><span style="font-family: 宋体">简介</span></h1>
<p>SWF<span style="font-family: 宋体">是一种嵌入式的工作流引擎，它不需要任何应用服务器的支持。</span>SWF<span style="font-family: 宋体">使用十分简单，但却可以满足多数流程驱动应用的需求。并且支持和主流j2ee框架整合(spring).<br />
</span></p>
<p><span style="font-family: 宋体">本文介绍如何基于</span>SWF<span style="font-family: 宋体">开发流程驱动的应用。</span></p>
<img src ="http://www.blogjava.net/chaocai/aggbug/151106.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-10-08 17:03 <a href="http://www.blogjava.net/chaocai/archive/2007/10/08/151106.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SWF一个简单工作流引擎</title><link>http://www.blogjava.net/chaocai/archive/2007/10/08/150983.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 08 Oct 2007 02:44:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/10/08/150983.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/150983.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/10/08/150983.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/150983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/150983.html</trackback:ping><description><![CDATA[你是否已经被像JBPM,XFLow等那样的复杂编程和配置搞头昏脑胀；被他们所依赖的大量jar和容器搞得不知所措。<br />
如果这样就试试笔者开发的这个简单工作流引擎吧，配置和编程都很简单，也不依赖任何容器。马上会推出支持spring的版本。<br />
下载地址：<br />
<a href="http://www.blogjava.net/Files/chaocai/swf-beta-1-bin.zip">http://www.blogjava.net/Files/chaocai/swf-beta-1-bin.zip</a><br />
内附用户手册<br />
（SWF开发设计：蔡超，北京天融信，<a href="mailto:chaocai2001@yahoo.com.cn">chaocai2001@yahoo.com.cn</a>)<br />
&nbsp;
<h1><span style="font-family: 宋体">简介</span></h1>
<p>SWF<span style="font-family: 宋体">是一种嵌入式的工作流引擎，它不需要任何应用服务器的支持。</span>SWF<span style="font-family: 宋体">使用十分简单，但却可以满足多数流程驱动应用的需求。</span></p>
<p><span style="font-family: 宋体">本文介绍如何基于</span>SWF<span style="font-family: 宋体">开发流程驱动的应用。</span></p>
<img src ="http://www.blogjava.net/chaocai/aggbug/150983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-10-08 10:44 <a href="http://www.blogjava.net/chaocai/archive/2007/10/08/150983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring集成XFire开发WebService</title><link>http://www.blogjava.net/chaocai/archive/2007/09/17/145932.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 17 Sep 2007 10:01:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/09/17/145932.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/145932.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/09/17/145932.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/145932.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/145932.html</trackback:ping><description><![CDATA[&nbsp;
<p>Spring<span style="font-family: 宋体">是目前最流行的</span>JavaEE Framework<span style="font-family: 宋体">，但是使用</span>Spring<span style="font-family: 宋体">的</span>Spring-WS<span style="font-family: 宋体">开发</span>WebService<span style="font-family: 宋体">却十分繁琐。</span>XFire<span style="font-family: 宋体">是一个简化</span>WebService<span style="font-family: 宋体">开发的开源项目，通过</span>Spring<span style="font-family: 宋体">和</span>XFire<span style="font-family: 宋体">的结合可以大大简化基于</span>Spring Framework<span style="font-family: 宋体">的应用中的</span>WebService<span style="font-family: 宋体">开发。</span></p>
<p>Spring<span style="font-family: 宋体">和</span>XFire<span style="font-family: 宋体">可以通过多种方式结合，下文介绍的是笔者常用的一种简单而实用的方法。所用的</span>Spring<span style="font-family: 宋体">版本为</span>2.0,XFire<span style="font-family: 宋体">版本为</span>1.2.6<span style="font-family: 宋体">。</span></p>
<p>1 <span style="font-family: 宋体">配置</span>XFire Servlet</p>
<p><span style="font-family: 宋体">在</span>web.xml<span style="font-family: 宋体">中加入如下配置：</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.codehaus.xfire.spring.XFireSpringServlet</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">/servlet/XFireServlet/*</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">/services/*</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">2 </span><span style="font-size: 10pt; color: black; font-family: 宋体">配置</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">的监听器，同基于</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Web</span><span style="font-size: 10pt; color: black; font-family: 宋体">项目一样</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">的监听器是必不可少的。</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">context-param</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">contextConfigLocation</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;classpath:org/codehaus/xfire/spring/xfire.xml,</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;/WEB-INF/applicationContext.xml</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">context-param</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; org.springframework.web.context.ContextLoaderListener</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; </span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">以下是完整的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">web.xml</span><span style="font-size: 10pt; color: black; font-family: 宋体">配置文件</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;?</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">xml </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"1.0" </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">encoding</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"UTF-8"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">web-app </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">version</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"2.4" </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">xmlns</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"http://java.sun.com/xml/ns/j2ee" </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">xmlns:xsi</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"http://www.w3.org/2001/XMLSchema-instance" </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #7f007f; font-family: 'Courier New'">xsi:schemaLocation</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"http://java.sun.com/xml/ns/j2ee </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">context-param</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">contextConfigLocation</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;classpath:org/codehaus/xfire/spring/xfire.xml,</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;/WEB-INF/applicationContext.xml</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">param-value</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">context-param</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; org.springframework.web.context.ContextLoaderListener</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">listener</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp; </span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; org.codehaus.xfire.spring.XFireSpringServlet</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-class</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">/servlet/XFireServlet/*</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">XFireServlet</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-name</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">/services/*</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">url-pattern</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">servlet-mapping</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&lt;/</span><span style="font-size: 10pt; color: #3f7f7f; font-family: 'Courier New'">web-app</span><span style="font-size: 10pt; color: teal; font-family: 'Courier New'">&gt;</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">3 </span><span style="font-size: 10pt; color: black; font-family: 宋体">定义接口及实现服务</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">定义接口，这个接口中定义要通过</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">WebService</span><span style="font-size: 10pt; color: black; font-family: 宋体">暴露的方法</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> org.ccsoft;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">interface</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> <span style="background: silver">HelloWS</span> {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String sayHello(String sb);</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">实现服务</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">package</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> org.ccsoft;</span></p>
<p style="text-align: left" align="left"><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">class</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> HelloWSImp </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">implements</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> HelloWS {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> String <span style="background: silver">sayHello</span>(String sb) {</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">// </span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">TODO</span></strong><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"> Auto-generated method stub</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">return</span></strong><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"Hello "</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">+sb;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">}</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">4 </span><span style="font-size: 10pt; color: black; font-family: 宋体">配置服务</span></p>
<p><span style="font-size: 10pt; color: black; font-family: 宋体">将上文中实现的服务，加入到</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">spring</span><span style="font-size: 10pt; color: black; font-family: 宋体">的配置文件中。</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&lt;?xml version="1.0" encoding="UTF-8"?&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&lt;beans xmlns="http://www.springframework.org/schema/beans"</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xsi:schemaLocation="</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;bean id="helloWS" class="org.ccsoft.HelloWSImp"/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;bean name="helloService" class="org.codehaus.xfire.spring.ServiceBean"&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;property name="serviceBean" ref="helloWS"/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;property name="serviceClass" value="org.ccsoft.HelloWS"/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;property name="inHandlers"&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;list&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ref bean="addressingHandler"/&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/list&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp; &lt;/property&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&lt;/bean&gt;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 10pt; font-family: 'Courier New'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler"/&gt;</span></p>
<p><span style="font-size: 10pt; font-family: 'Courier New'">&lt;/beans&gt;</span></p>
<p><span style="font-family: 宋体">好了现在你可以通过</span><a href="http://127.0.0.1:8080/XFireWS1/services/HelloWS?wsdl">http://127.0.0.1:8080/XFireWS1/services/HelloWS?wsdl</a><span style="font-family: 宋体">来验证是否部署成功了。</span></p>
<p><span style="font-family: 宋体">—————————————————————————————————————</span></p>
<p><span style="font-family: 宋体">蔡</span> <span style="font-family: 宋体">超</span> <br />
SCEA <span style="font-family: 宋体">，</span> SCBCD <span style="font-family: 宋体">，</span> MCSD<br />
IBM Certified Specialist RUP<br />
IBM Certified Solution Designer OOA&amp;D UML v2<br />
<span style="font-family: 宋体">北京天融信软件架构师</span><br />
SUN,Microsoft<span style="font-family: 宋体">培训中心特邀高端教师</span><br />
<span style="font-family: 宋体">常年提供架构咨询服务</span> <br />
chaocai2001@yahoo.com.cn <span style="font-family: 宋体">，</span> 010-82776427</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/145932.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-09-17 18:01 <a href="http://www.blogjava.net/chaocai/archive/2007/09/17/145932.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB中使用Hibernate的几个问题辨析 </title><link>http://www.blogjava.net/chaocai/archive/2007/08/19/137973.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Sun, 19 Aug 2007 11:44:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/08/19/137973.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/137973.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/08/19/137973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/137973.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/137973.html</trackback:ping><description><![CDATA[public class HibernateTestBean implements SessionBean {<br>&nbsp;&nbsp;&nbsp; SessionContext sessionContext;<br>&nbsp;&nbsp;&nbsp; SessionFactory sf;<br>&nbsp;&nbsp;&nbsp; public void setSessionContext(SessionContext sessionContext) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.sessionContext = sessionContext;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InitialContext ctx = new InitialContext();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sf=(SessionFactory) ctx.lookup("java:/hibernate/SessionFactory");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (NamingException ex) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ex.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void tran(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tran1();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tran2();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void tran1() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session=sf.getCurrentSession();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message msg=new Message();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setCreateTime(new Date());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setDetail("trans1");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.save(msg);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Session:"+session.hashCode());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.flush();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.close();<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public void tran2() {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Session session=sf.getCurrentSession();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Message msg=new Message();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setCreateTime(new Date());<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.setDetail("trans2");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.save(msg);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("Session:"+session.hashCode());<br>&nbsp;&nbsp;&nbsp; //&nbsp; throw new RuntimeException("wrong");<br>&nbsp; }<br>&#8230;&#8230;<br>}<br>注：EJB采用CMT，各方法的事务属性是required<br>客户端调用tran以上代码可以正确运行吗？<br>如果把tran1中的sf.getCurrentSession();改为sf.openSession()可以正确运行吗？<br>辨析：<br>1 上述代码是不能正确运行的，运行tran2时会抛出异常，告诉你session is closed.<br>其实这是应为getCurrentSession()会使用环境已有的Session，同时注意getCurrentSession()要在事务的环境中使用。<br>这是也许你一定会问，那么什么时候关闭Session呢？答案是事务完成的时候（提交或是回滚）。<br><br>2 如果上述代码tran1中的sf.getCurrentSession();改为sf.openSession()代码将可以正确运行。这是因为openSession()每次都会返回一个新的Session。而在tran2种的sf.getCurrentSession()并不会使用tran1中的session,而是会使用当前事务环境中的默认的session.<br>也许你会问如果tran2种的调用抛出RuntimeException，tran1所作的操作还可以回滚吗？<br>答案是仍然可以回滚的.<br><br><br>蔡超<br>北京天融信 软件架构师<br>SCEA，SCBCD，MCSD<br>IBM Certified Specialist RUP v2003<br>IBM Certified Solution Designer OOA&amp;D UMLv2<br>
<img src ="http://www.blogjava.net/chaocai/aggbug/137973.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-08-19 19:44 <a href="http://www.blogjava.net/chaocai/archive/2007/08/19/137973.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring构建应用系统的最佳架构与模式实践（1） </title><link>http://www.blogjava.net/chaocai/archive/2007/05/08/115937.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Tue, 08 May 2007 06:25:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/05/08/115937.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/115937.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/05/08/115937.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/115937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/115937.html</trackback:ping><description><![CDATA[蔡 超<br>SCEA，SCBCD，MCSD，IBM RUP Specilist<br>北京天融信软件架构师<br>SUN,Microsoft培训中心特邀高端教师<br>常年提供架构咨询服务<br>chaocai2001@yahoo.com.cn ，010-82776427<br><br>引言<br>在使用Spring构建应用时和采用EJB构建应用一样同样也存在不少常用模式和最佳实践，当然很多Core J2EE Pattern仍然是我们构建spring应用中的优秀模式，不过有的也不再适用了（如：IoC的应用使得Service Locator不再适用，Hibernate取代Entity Bean使得DTO不再适用等）。<br>下文是一些在以Spring为核心的架构中的常见模式和架构最佳实践。<br><br><img style="WIDTH: 400px; CURSOR: pointer" onclick=javascript:window.open(this.src); src="http://dev2dev.bea.com.cn/bbs/uploadimages/20075/200757143452305420.JPG" onload="javascript:if(this.width>400)this.style.width=400;"><br></img><br><br>图表 1 Spring应用常见架构模式列表<br>DAO模式<br>虽然采用了诸如Hibernate这样的O/R Mapping工具或是iBates这样的SQL Mapping工具但是采用DAO模式仍有相当好处。<br>在实际应用中我们常会遇到如下问题：<br>1 性能问题：由于性能问题我们可能要改变数据访问方式，如采用JDBC替换Hibernate这时，这时如果采用了DAO模式，数据访问被有效的封装和业务逻辑完全分离，易于实现替换。<br>2 移植问题：需要支持多种数据库，DAO模式仍然是一种稳妥的选择。虽然诸如Hibernate及iBates也提供很好的数据库无关性，但如果使用某些数据库的特殊功能时，就会出现问题。<br>当然，对于是否采用DAO模式也不可一概而论，应为他毕竟会增加应用的开发复杂性。个人认为很关键的一个判定条件是业务逻辑是否会和持久化逻辑混合。<br><br>Application Service模式<br>封装一定的业务逻辑和功能，提高复用性，即防止Fa&amp;ccedil;ade和业务对象的臃肿。注意在此可以应用Command模式及Strategy模式提供系统可维护性和可扩展性。<br>这个模式很重要，但常常被大家忽略，这时应为我们常会把逻辑放在Fa&amp;ccedil;ade中，其实这是很错误的。例如：我们可能会提供多种不同Fa&amp;ccedil;ade以适应不同的访问方式，这样就会出现大量重复的业务逻辑代码。<br><br>Fa&amp;ccedil;ade模式<br>为客户端提供访问业务组件的统一模式。便于实现对不同访问方式的支持（如：远程或本地）。特别在远程调用时通过暴露粗粒度的接口，提高系统的性能。<br>同时，可以根据客户的不同，通过不同Fa&amp;ccedil;ade来控制客户的操作。
<img src ="http://www.blogjava.net/chaocai/aggbug/115937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-05-08 14:25 <a href="http://www.blogjava.net/chaocai/archive/2007/05/08/115937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring POJO真的比无状体的会话EJB（SLSB）快吗？</title><link>http://www.blogjava.net/chaocai/archive/2007/03/29/107140.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Thu, 29 Mar 2007 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/03/29/107140.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/107140.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/03/29/107140.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/107140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/107140.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21.75pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">目前，很多人都认为</span>
				<span lang="EN-US">spring</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不论在那个方面都会比</span>
				<span lang="EN-US">SLSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有更高的效率，真的是这样吗？</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0">
				<span lang="EN-US">spring</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span>
				<span lang="EN-US">POJO</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的生命周期可以是</span>
				<span lang="EN-US">Singlton</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或每请求创建（或是</span>
				<span lang="EN-US">2.0</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">支持的</span>
				<span lang="EN-US">session</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">及</span>
				<span lang="EN-US">application,request</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">等范围），</span>
				<span lang="EN-US">SLSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是通过实例池经心管理的。如果</span>
				<span lang="EN-US">spring POJO</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不采用</span>
				<span lang="EN-US">singlton</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的形式那么就需要承受创建和销毁</span>
				<span lang="EN-US">POJO</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的消耗，当然</span>
				<span lang="EN-US">SLSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的出池和入池同样会有同步的消耗，由于现在的虚拟机对象的创建和消耗速度大幅提高所以不一定比</span>
				<span lang="EN-US">SLSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">获取的速度慢，但是如果每个对象构建的资源消耗很大如总是需要构建或初始化复杂对象，那么</span>
				<span lang="EN-US">SLSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的速度显然有优势。如果</span>
				<span lang="EN-US">spring</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">采用</span>
				<span lang="EN-US">singleton</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式，那么其中如果需要同步，则虽然省去了创建和销毁的消耗，但是大量的同步会使性能的杀手。并且在多</span>
				<span lang="EN-US">CPU</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的服务器上没有同步的多线程并行效果更好（可以在不同的处理器上单独运行）</span>
		</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/107140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-03-29 10:29 <a href="http://www.blogjava.net/chaocai/archive/2007/03/29/107140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3使用注意（2） </title><link>http://www.blogjava.net/chaocai/archive/2007/03/27/106770.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Tue, 27 Mar 2007 13:33:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/03/27/106770.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/106770.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/03/27/106770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/106770.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/106770.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">1 <a href="mailto:MDB可以通过@Timeout或实现java.ejb.TimedObject">MDB<span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US">可以通过</span></span>@Timeout<span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><span lang="EN-US">或实现</span></span>java.ejb.TimedObject</a></span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来实现定时回调</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">2 EJB3</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">规范要求在部署</span>
				<span lang="EN-US">EJB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">时必须绑定到各业务接口的全限定名上，最终可有</span>
				<span lang="EN-US">JNDI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">查找</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 10.5pt; mso-char-indent-count: 1.0">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如：</span>
				<span lang="EN-US">ctx.lookup(TaxRate.class.getName());</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">3<span style="mso-spacerun: yes">  </span>@Remove</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">表示</span>
				<span lang="EN-US">SFSB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的删除方法，如果存在</span>
				<span lang="EN-US">@PreDestory</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">则在其后执行</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 10.5pt; TEXT-INDENT: -10.5pt; mso-char-indent-count: -1.0">
				<span lang="EN-US">4 </span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">会话</span>
				<span lang="EN-US">Bean</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不实现</span>
				<span lang="EN-US">SessionBean</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口，</span>
				<span lang="EN-US">MDB</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">不必实现</span>
				<span lang="EN-US">MessageDerivenBean</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，只要通过</span>
				<span lang="EN-US">@Annotation</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">标明或在部署文件中说明。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">5 EJBContext</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中加入了</span>
				<span lang="EN-US">lookup</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方法，用于查找和</span>
				<span lang="EN-US">Bean</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">绑带的</span>
				<span lang="EN-US">JNDI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">名</span>
		</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/106770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-03-27 21:33 <a href="http://www.blogjava.net/chaocai/archive/2007/03/27/106770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring2 AOP在使用XML配置时如何获得target及JoinPoint</title><link>http://www.blogjava.net/chaocai/archive/2007/02/26/100790.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 26 Feb 2007 09:57:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/02/26/100790.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/100790.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/02/26/100790.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/100790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/100790.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">蔡超</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">（</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt">SCEA</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt">MCSD</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt">IBM RUP Specialist</span>
				<span style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）</span>
				<span lang="EN-US" style="FONT-SIZE: 9pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">Spring Reference</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中介绍如何在采用</span>
				<span lang="EN-US">@AspectJ</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">方式在剖面中如何获取</span>
				<span lang="EN-US">target</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
				<span lang="EN-US">JoinPoint</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并给出了示例，但并没有给出采用</span>
				<span lang="EN-US">XML</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置方式时介绍及示例，下面附上一个简单的小例子供大家参考。</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">package aop;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import org.aspectj.lang.JoinPoint;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import org.aspectj.lang.ProceedingJoinPoint;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">/**</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* @author Administrator</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* TODO To change the template for this generated type comment go to</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* Window - Preferences - Java - Code Style - Code Templates</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">public class LogAdvice1 {</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>public void log(JoinPoint jp,MathImp imp){</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>System.out.println("log:"+imp+" "+jp.toLongString());</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">/*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* Created on <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="1" month="11" year="2006">2006-11-1</st1:chsdate></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* TODO To change the template for this generated file go to</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* Window - Preferences - Java - Code Style - Code Templates</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">package aop;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">/**</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* @author Administrator</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* TODO To change the template for this generated type comment go to</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* Window - Preferences - Java - Code Style - Code Templates</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">public class MathImp /*implements Math*/{</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>/* (non-Javadoc)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>* @see aop.Math#add(int, int)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>
				</span>
				<span lang="NL" style="mso-ansi-language: NL">*/<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="NL" style="mso-ansi-language: NL">
						<span style="mso-tab-count: 1">       </span>public void add(int op1, int op2) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="NL" style="mso-ansi-language: NL">
						<span style="mso-tab-count: 2">              </span>
				</span>
				<span lang="EN-US">// TODO Auto-generated method stub</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>/* (non-Javadoc)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>* @see aop.Math#addtest(int, int)</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>public void addtest(int op1, int op2) {</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>// TODO Auto-generated method stub</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>
				</span>
				<span lang="FR" style="mso-ansi-language: FR">}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">
						<span style="mso-tab-count: 1">       </span>/* (non-Javadoc)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>* @see aop.Math#sub(int, int)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">
						<span style="mso-tab-count: 1">       </span>
						<span style="mso-spacerun: yes"> </span>
				</span>
				<span lang="NL" style="mso-ansi-language: NL">*/<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="NL" style="mso-ansi-language: NL">
						<span style="mso-tab-count: 1">       </span>public void sub(int op1, int op2) {<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="NL" style="mso-ansi-language: NL">
						<span style="mso-tab-count: 2">              </span>
				</span>
				<span lang="EN-US">// TODO Auto-generated method stub</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">配置：</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">&lt;beans xmlns="http://www.springframework.org/schema/beans"</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">      </span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">      </span>xmlns:aop="http://www.springframework.org/schema/aop"</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">      </span>xsi:schemaLocation="</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;!-- this is the object that will be proxied by Spring's AOP infrastructure --&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;bean id="mathImp" class="aop.MathImp"/&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;!-- this is the actual advice itself --&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;bean id="logger" class="aop.LogAdvice1"/&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;aop:config&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">      </span>&lt;aop:aspect ref="logger"&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">         </span>&lt;aop:pointcut id="addLog"</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">                    </span>expression="execution(* aop.MathImp.*(..)) and target(imp) and JoinPoint(jp)"<span style="mso-spacerun: yes">  </span>/&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">         </span>&lt;aop:before pointcut-ref="addLog"</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">                  </span>method="log" arg-names="jp,imp" /&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">      </span>&lt;/aop:aspect&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">
						<span style="mso-spacerun: yes">   </span>&lt;/aop:config&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">&lt;/beans&gt;</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: black; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt; mso-highlight: white">测试</span>
				<span lang="EN-US" style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Courier New'; mso-font-kerning: 0pt">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">package aop;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="FR" style="mso-ansi-language: FR">import org.springframework.context.support.AbstractApplicationContext;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">import org.springframework.context.support.FileSystemXmlApplicationContext;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">/**</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* @author Administrator</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* TODO To change the template for this generated type comment go to</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>* Window - Preferences - Java - Code Style - Code Templates</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-spacerun: yes"> </span>*/</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">public class Test {</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>public static void main(String[] args) {</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>AbstractApplicationContext context=new FileSystemXmlApplicationContext("aop2.xml");</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>//Math math=(Math) context.getBean("math");</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>MathImp math=(MathImp) context.getBean("mathImp");</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>math.add(1,2);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>math.addtest(3,4);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 2">              </span>math.sub(5,6);</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<span style="mso-tab-count: 1">       </span>}</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">}</span>
		</p>
<img src ="http://www.blogjava.net/chaocai/aggbug/100790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-02-26 17:57 <a href="http://www.blogjava.net/chaocai/archive/2007/02/26/100790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring2.0与Hibernate3整合</title><link>http://www.blogjava.net/chaocai/archive/2007/02/05/98070.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Mon, 05 Feb 2007 09:15:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/02/05/98070.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/98070.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/02/05/98070.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/98070.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/98070.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 蔡超																																		北京天融信，软件架构师																												SUN certified Enterprise Architect								Microsoft certified Solution Developer				...&nbsp;&nbsp;<a href='http://www.blogjava.net/chaocai/archive/2007/02/05/98070.html'>阅读全文</a><img src ="http://www.blogjava.net/chaocai/aggbug/98070.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-02-05 17:15 <a href="http://www.blogjava.net/chaocai/archive/2007/02/05/98070.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EJB3使用注意（1）</title><link>http://www.blogjava.net/chaocai/archive/2007/02/03/97807.html</link><dc:creator>超越巅峰</dc:creator><author>超越巅峰</author><pubDate>Sat, 03 Feb 2007 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/chaocai/archive/2007/02/03/97807.html</guid><wfw:comment>http://www.blogjava.net/chaocai/comments/97807.html</wfw:comment><comments>http://www.blogjava.net/chaocai/archive/2007/02/03/97807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chaocai/comments/commentRss/97807.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chaocai/services/trackbacks/97807.html</trackback:ping><description><![CDATA[
		<p>1 java.rmi.RemoteException<br />由于EJB3中的远程接口没有间接或直接的基础Remote接口，也不需要抛出RemoteException异常，所以客户端所接受到的都是EjbException。</p>
		<p>2 ServiceLocator模式<br />由于EJB3中省去了Home接口，所以如果使用ServiceLocator模式会出现异常，同一JNDI每次获得都会是同一对象即便是有状态的Bean<br /><br />3 Stateful Session Bean<br />由于EJB3中省去了Home接口，JNDI lookup返回的是一个Session Bean的对象，而不是Home，所以EJB3的Spec中规定每次JNDI lookup<br />都应该返回一个新的实例。（注意以上这点在一些版本的JBOSS EJB3的实现中都存在BUG）。<br /><br /> <br /><br /></p>
<img src ="http://www.blogjava.net/chaocai/aggbug/97807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chaocai/" target="_blank">超越巅峰</a> 2007-02-03 23:20 <a href="http://www.blogjava.net/chaocai/archive/2007/02/03/97807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>