﻿<?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-落Nicety的博客</title><link>http://www.blogjava.net/hunter129/</link><description>专注于web2.0</description><language>zh-cn</language><lastBuildDate>Mon, 13 Oct 2008 02:37:48 GMT</lastBuildDate><pubDate>Mon, 13 Oct 2008 02:37:48 GMT</pubDate><ttl>60</ttl><item><title>正确显示taxtarea中输入的回车和空格</title><link>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Thu, 09 Oct 2008 13:19:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/233444.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/233444.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/233444.html</trackback:ping><description><![CDATA[&nbsp;
在taxtarea中输入的文本。如果含有回车或空格。在界面上显示的时候则不哪么正常。回车消失了，空格变短了。<br />
如何解决这个问题呢。有2种方法。<br />
1.使用&lt;pre&gt;标签<br />
&nbsp;&nbsp; w3c对pre元素是这样定义的：pre 元素可定义预格式化的文本。被包围在 pre 元素中的文本通常会保留空格和换行符。而文本也会呈现为等宽字体。<br />
&nbsp;&nbsp; 更详细的内容请参考 <a target="_blank" title="http://www.w3school.com.cn/tags/tag_pre.asp" href="http://www.w3school.com.cn/tags/tag_pre.asp">http://www.w3school.com.cn/tags/tag_pre.asp</a><br />
&nbsp;&nbsp; 也就是说包含在pre标签中的回车和空格会正常的显示出来。包括你在页面代码中输入的。所以如果使用pre元素你需要这样写：<br />
&nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;">要输出的文本</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span></div>
&nbsp;&nbsp; ，而不是这样：<br />
&nbsp;&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要输出的文本<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">pre</span><span style="color: #0000ff;">&gt;</span></div>
&nbsp;&nbsp; 后一种写法 文本前的空白也会被显示的。除非你真的希望这样:)<br />
2.对文本内容进行替换。<br />
&nbsp; 回车和空格不能正确显示，究其原因是他们各自的表示方式不同。在textarea里面输入的回车是字符"\r"，html中的回车(换行)是"&lt;br/&gt;"。<br />
&nbsp; textarea中输入的空格是空白" "，而html中的一个空格是"&amp;nbsp;"。理所当然不能正确显示。好了现在知道了原因就有了第二种解决方案了。<br />
&nbsp; 只要我们将输入的文本中相应的"元素"替换成html认识的就ok了。因此下面一行代码即可解决问题：<br />
&nbsp; <br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">"</span><span style="color: #000000;">要输出的文本</span><span style="color: #000000;">"</span><span style="color: #000000;">.replaceAll(</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">&amp;nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">).replaceAll(</span><span style="color: #000000;">"\</span><span style="color: #000000;">r</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">br</span><span style="color: #000000;">/&gt;</span><span style="color: #000000;">"</span><span style="color: #000000;">);</span></div>
&nbsp; 等等。这里还有一点小问题。把一个空格替换成一个"&amp;nbsp;"空格看上去仍然要少些。如果你喜欢可以替换成2个。<br />
&nbsp; <br />
&nbsp; 最后，除了回车和空格以外还有很多空白字符如tab等，如果你喜欢可以一并处理了^_^<br />
&nbsp; <br />
&nbsp; 最后的最后，如果本来的文本是很长的一行，使用pre标签后就不会自动换行。结果页面出现横向滚动条。不知道有没有好的解决方法？<br />
&nbsp; 而将第二种方法处理过的文本放在&lt;p&gt;标签中显示，就可以显示正常。<br />
&nbsp; <br />
<img src ="http://www.blogjava.net/hunter129/aggbug/233444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-10-09 21:19 <a href="http://www.blogjava.net/hunter129/archive/2008/10/09/233444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>文件编码导致的sun.io.MalformedInputException异常</title><link>http://www.blogjava.net/hunter129/archive/2008/05/21/202046.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Wed, 21 May 2008 14:22:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/05/21/202046.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/202046.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/05/21/202046.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/202046.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/202046.html</trackback:ping><description><![CDATA[文件编码导致的sun.io.MalformedInputException异常<br />
如果你没有使用ibm的jdk，却依然遇到了这个问题。<br />
如果你的异常是在解析xml的时候出现的，如果你的异常是某些地方有某些地方没有。<br />
例如tomcat里面没有，weblogic上有。抑或这个domain有那个domain却没有。而确实是同一个应用。<br />
哪么你遇到的可能和笔者要讲的是同一个问题。<br />
<br />
你的xml文件本身是UTF-8编码(注意是文件是UTF-8编码，不是xml文件里面指定的文件内容是UTF-8编码)？<br />
你的xml文件里面含有中文？<br />
你使用UltraEdit编辑xml文件？<br />
删掉中文，问题依旧？<br />
<br />
那么可以肯定你的问题就是笔者要讲的问题<br />
<br />
首先给出解决方案：<br />
方案一：<br />
1.xml用记事本打开，删除里面的中文。<br />
2.在windows 本地新建一个txt文件，用记事本(注意不能用UltraEdit)打开。<br />
3.将xml里面的内容复制到新建的txt文件中。<br />
4.将txt文件重名为xml文件的名称。覆盖原来的xml文件<br />
5.看看问题是不是解决了，咔咔 神奇吧。<br />
<br />
方案二：(适用于使用eclipse ide的程序员们，其他的能更改文件编码的程序也行，不过没测试过)<br />
1.将xml文件的内容剪切出来，保存在别处，什么文件都行，最后是txt中。留下一个空的xml文件<br />
2.将空的xml文件的编码修改成GBK。注意是文件的编码，不是xml的那个声明。当然这里已经删了。<br />
3.这时候是否看到文件的头部有乱码? 删之!<br />
4.将原来文件的内容烤回来<br />
5.ok问题解决，这种方法不用删除中文。<br />
<br />
问题的根源：<br />
估计有些人已经明白是什么原因了。呵呵，那就是xml文件那个BOM的头导致的这个问题！<br />
哦？还有没明白的？下面详细说明下：<br />
xml文件分为两种，一种是有BOM信息的，它表示文件是xml格式<br />
另外还有没有BOM信息的xml文件。<br />
就是这个特殊的BOM信息导致了解析xml出错。<br />
那跟UltraEdit有什么关系？UltraEdit在编辑xml文件的时候会自动加上这个可恶的BOM信息。
<img src ="http://www.blogjava.net/hunter129/aggbug/202046.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-05-21 22:22 <a href="http://www.blogjava.net/hunter129/archive/2008/05/21/202046.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细的log4j配置说明</title><link>http://www.blogjava.net/hunter129/archive/2008/05/19/201443.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Mon, 19 May 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/05/19/201443.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/201443.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/05/19/201443.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/201443.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/201443.html</trackback:ping><description><![CDATA[详细的log4j配置说明<br />
<br />
一直没有认真研究过log4j的配置，这几天比较闲，认真的看了看。现在总结下。<br />
Log4j有三个主要的组件：Loggers(记录器)，Appenders(输出源)和Layouts(布局)。<br />
log4j的配置文件也可以是多种格式的，但主要是xml文件和properties文件<br />
1.配置根logger:<br />
语法：log4j.rootLogger =[level],appenderName1,appenderName2,...<br />
level ：OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL的其中一个。<br />
appenderName：日志输入的目的地，可以有多个地方<br />
根logger是一定存在的，根logger指定了默认的日志配置。<br />
2.配置日志输入的目的地(appender)<br />
语法：log4j.appender.appenderName = fully.qualified.name.of.appender.class<br />
&nbsp;&nbsp;&nbsp; fully.qualified.name.of.appender.class 可以是以下的几种:<br />
&nbsp;&nbsp;&nbsp; (1).org.apache.log4j.ConsoleAppender（控制台）<br />
&nbsp;&nbsp;&nbsp; (2).org.apache.log4j.FileAppender（文件）<br />
&nbsp;&nbsp;&nbsp; (3).org.apache.log4j.DailyRollingFileAppender（每天产生一个日志文件）<br />
&nbsp;&nbsp;&nbsp; (4).org.apache.log4j.RollingFileAppender（文件大小到达指定尺寸的时候产生一个新的文件）<br />
&nbsp;&nbsp;&nbsp; (5).org.apache.log4j.WriterAppender（将日志信息以流格式发送到任意指定的地方）<br />
其中每一个又有不同的配置选项:<br />
(1).org.apache.log4j.ConsoleAppender（控制台）的选项<br />
Threshold=WARN:指定日志消息的输出最低层次。<br />
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。<br />
Target=System.err：默认情况下是：System.out,指定输出控制台<br />
(2).org.apache.log4j.FileAppender的选项<br />
Threshold=WARN:指定日志消息的输出最低层次。<br />
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。<br />
File=mylog.txt:指定消息输出到mylog.txt文件。<br />
Append=false:默认值是true,即将消息增加到指定文件中，false指将消息覆盖指定的文件内容。<br />
(3).org.apache.log4j.DailyRollingFileAppender的选项<br />
Threshold=WARN:指定日志消息的输出最低层次。<br />
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。<br />
File=mylog.txt:指定消息输出到mylog.txt文件。<br />
Append=false:默认值是true,即将消息增加到指定文件中，false指将消息覆盖指定的文件内容。<br />
DatePattern='.'yyyy-ww:每周滚动一次文件，即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下：<br />
&nbsp;&nbsp;&nbsp; 1)'.'yyyy-MM: 每月<br />
&nbsp;&nbsp;&nbsp; 2)'.'yyyy-ww: 每周 <br />
&nbsp;&nbsp;&nbsp; 3)'.'yyyy-MM-dd: 每天<br />
&nbsp;&nbsp;&nbsp; 4)'.'yyyy-MM-dd-a: 每天两次<br />
&nbsp;&nbsp;&nbsp; 5)'.'yyyy-MM-dd-HH: 每小时<br />
&nbsp;&nbsp;&nbsp; 6)'.'yyyy-MM-dd-HH-mm: 每分钟<br />
(4).org.apache.log4j.RollingFileAppender<br />
Threshold=WARN:指定日志消息的输出最低层次。<br />
ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。<br />
File=mylog.txt:指定消息输出到mylog.txt文件。<br />
Append=false:默认值是true,即将消息增加到指定文件中，false指将消息覆盖指定的文件内容。<br />
MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时，将会自动滚动，即将原来的内容移到mylog.log.1文件。<br />
MaxBackupIndex=2:指定可以产生的滚动文件的最大数。<br />
<br />
3.配置日志输入的格式<br />
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n<br />
这里需要说明的就是日志信息格式中几个符号所代表的含义：<br />
-: 信息输出时左对齐；<br />
&nbsp;&nbsp; %p: 输出日志信息优先级，即DEBUG，INFO，WARN，ERROR，FATAL,<br />
&nbsp;&nbsp; %d: 输出日志时间点的日期或时间，默认格式为ISO8601，也可以在其后指定格式，比如：%d{yyy MMM dd HH:mm:ss,SSS}，输出类似：2002年10月18日 22：10：28，921<br />
&nbsp;&nbsp; %r: 输出自应用启动到输出该log信息耗费的毫秒数<br />
&nbsp;&nbsp; %c: 输出日志信息所属的类目，通常就是所在类的全名<br />
&nbsp;&nbsp; %t: 输出产生该日志事件的线程名<br />
&nbsp;&nbsp; %l: 输出日志事件的发生位置，相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程，以及在代码中的行数。举例：Testlog4.main(TestLog4.java:10)<br />
&nbsp;&nbsp; %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。<br />
&nbsp;&nbsp; %%: 输出一个"%"字符<br />
&nbsp;&nbsp; %F: 输出日志消息产生时所在的文件名称<br />
&nbsp;&nbsp; %L: 输出代码中的行号<br />
&nbsp;&nbsp; %m: 输出代码中指定的消息,产生的日志具体信息<br />
&nbsp;&nbsp; %n: 输出一个回车换行符，Windows平台为"rn"，Unix平台为"n"输出日志信息换行<br />
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)%20c：指定输出category的名称，最小的宽度是20，如果category的名称小于20的话，默认的情况下右对齐。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2)%-20c:指定输出category的名称，最小的宽度是20，如果category的名称小于20的话，"-"号指定左对齐。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3)%.30c:指定输出category的名称，最大的宽度是30，如果category的名称大于30的话，就会将左边多出的字符截掉，但小于30的话也不会有空格。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4)%20.30c:如果category的名称小于20就补空格，并且右对齐，如果其名称长于30字符，就从左边交远销出的字符截掉。<br />
下面是一个详细的配置样例<br />
<br />
og4j.rootLogger=DEBUG,CONSOLE,A1,im<br />
#DEBUG,CONSOLE,FILE,ROLLING_FILE,MAIL,DATABASE<br />
log4j.addivity.org.apache=true<br />
###################<br />
# Console Appender(输出到控制台)<br />
###################<br />
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender<br />
log4j.appender.Threshold=DEBUG<br />
log4j.appender.CONSOLE.Target=System.out<br />
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
#log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n<br />
<br />
<br />
#####################<br />
# File Appender 输出到文件<br />
#####################<br />
log4j.appender.FILE=org.apache.log4j.FileAppender<br />
log4j.appender.FILE.File=file.log<br />
log4j.appender.FILE.Append=false<br />
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
# Use this layout for LogFactor 5 analysis<br />
<br />
<br />
########################<br />
# Rolling File<br />
########################<br />
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender<br />
log4j.appender.ROLLING_FILE.Threshold=ERROR<br />
log4j.appender.ROLLING_FILE.File=rolling.log<br />
log4j.appender.ROLLING_FILE.Append=true<br />
log4j.appender.ROLLING_FILE.MaxFileSize=10KB<br />
log4j.appender.ROLLING_FILE.MaxBackupIndex=1<br />
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
<br />
<br />
####################<br />
# Socket Appender<br />
####################<br />
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender<br />
log4j.appender.SOCKET.RemoteHost=localhost<br />
log4j.appender.SOCKET.Port=5001<br />
log4j.appender.SOCKET.LocationInfo=true<br />
# Set up for Log Facter 5<br />
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.SOCET.layout.ConversionPattern=[start]%d[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n<br />
<br />
<br />
########################<br />
# Log Factor 5 Appender<br />
########################<br />
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender<br />
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000<br />
<br />
<br />
########################<br />
# SMTP Appender 发送邮件<br />
#######################<br />
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender<br />
log4j.appender.MAIL.Threshold=FATAL<br />
log4j.appender.MAIL.BufferSize=10<br />
log4j.appender.MAIL.From=chenyl@hollycrm.com<br />
log4j.appender.MAIL.SMTPHost=mail.hollycrm.com<br />
log4j.appender.MAIL.Subject=Log4J Message<br />
log4j.appender.MAIL.To=chenyl@hollycrm.com<br />
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
<br />
<br />
########################<br />
# JDBC Appender 输出到数据库<br />
#######################<br />
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender<br />
log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test<br />
log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver<br />
log4j.appender.DATABASE.user=root<br />
log4j.appender.DATABASE.password=<br />
log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')<br />
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
<br />
<br />
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender<br />
log4j.appender.A1.File=SampleMessages.log4j<br />
log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'<br />
log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout<br />
<br />
###################<br />
#自定义Appender<br />
###################<br />
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender<br />
log4j.appender.im.host = mail.cybercorlin.net<br />
log4j.appender.im.username = username<br />
log4j.appender.im.password = password<br />
log4j.appender.im.recipient = corlin@cybercorlin.net<br />
log4j.appender.im.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n<br />
<br />
参考：http://www.builder.com.cn/2008/0517/866964.shtml
<img src ="http://www.blogjava.net/hunter129/aggbug/201443.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-05-19 17:31 <a href="http://www.blogjava.net/hunter129/archive/2008/05/19/201443.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何在不插网线的情况下启用网卡的TCP/IP协议</title><link>http://www.blogjava.net/hunter129/archive/2008/04/23/195063.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Wed, 23 Apr 2008 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/04/23/195063.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/195063.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/04/23/195063.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/195063.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/195063.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当采用Windows&nbsp; &nbsp;2000/XP/2003系统的局域网用户拔掉连接本机网卡的网线时，或该用户的网卡与局域网中的网络设备没有正常连接时，桌面上的&#8220;任务栏&#8221;中会显示&#8220;本地连接，网络电缆没有插好&#8221;的提示。为什么<span class="t_tag" onclick="tagshow(event)" href="http://www.blogjava.net/CuteSoft_Client/CuteEditor/tag.php?name=Windows">Windows</span>系统能够自动检测出客户机与网络设备的连通情况呢？这是因为Windows&nbsp; &nbsp;2000/XP/2003系统中内置了&#8220;媒体感知（Media&nbsp; &nbsp;Sense）&#8221;功能。&nbsp;&nbsp;<br />
认清&#8220;媒体感知&#8221;功能&nbsp;&nbsp;<br />
　　对于一般的局域网用户来说，&#8220;媒体感知&#8221;功能确实起到了非常重要的作用。当网卡或网线出现问题时，客户机不能与局域网中的网络设备正常连通，这时&#8220;媒体感知&#8221;功能就能立刻检测出问题，并发出警告，方便了大家对网络的故障的排查。&nbsp;&nbsp;<br />
　　但大家在进行某些特殊的调试工作时，智能化的&#8220;媒体感知&#8221;功能反而会影响正常工作。&nbsp;&nbsp;<br />
　　例如程序员使用便携设备（如笔记本电脑）调试某些TCP/IP应用程序，而TCP/IP程序在测试过程中需要脱离局域网环境，程序员需要拔掉测试机器上的网线。这时聪明的&#8220;媒体感知&#8221;功能就立刻检测出本机和局域网设备没有正常连通，接着就会禁用捆绑在网卡上的某些网络协议，其中就包括TCP/IP协议。由于TCP/IP协议被禁用了，这样该TCP/IP应用程序就无法进行调试了，因此大家在某些特殊情况下必须禁用Windows系统的&#8220;媒体感知&#8221;功能。 &nbsp;&nbsp;<br />
　　提示：当网卡与网络设备没有正常连通时，&#8220;媒体感知&#8221;功能不会禁用所有的网络协议，如NetBEUI和IPX/SPX协议就不受影响，本机的环路测试也可正常进行。&nbsp;&nbsp;<br />
禁用&#8220;媒体感知&#8221;功能&nbsp;&nbsp;<br />
　　如何为TCP/IP协议禁用Windows系统内置的&#8220;媒体感知&#8221;功能呢？通过修改注册表就能实现。下面笔者以Windows&nbsp; &nbsp;XP系统为例，介绍实现&#8220;禁用&#8221;的方法。&nbsp;&nbsp;<br />
　　进入注册表编辑器，展开&#8220;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters&#8221;项，新建一个&#8220;DisableDHCPMediaSense&#8221;&nbsp;&nbsp;<br />
　　，<span class="t_tag" onclick="tagshow(event)" href="http://www.blogjava.net/CuteSoft_Client/CuteEditor/tag.php?name=%CA%FD%BE%DD">数据</span>类型为&#8220;DWORD值&#8221;，将该值设置为&#8220;1&#8221;。重新启动Windows&nbsp; &nbsp;XP系统后，就禁用了&#8220;媒体感知&#8221;功能。&nbsp;&nbsp;<br />
　　现在，即使拔掉网线，TCP/IP协议也不会被禁用，TCP/IP应用程序的调试工作可以照常进行。要想恢复&#8220;媒体感知&#8221;功能，也很简单，只要将注册表中&nbsp; &nbsp;&#8220;DisableDHCPMediaSense&#8221;的值修改为&#8220;0&#8221;，或者删除&#8220;DisableDHCPMediaSense&#8221;，重新启动<span class="t_tag" onclick="tagshow(event)" href="http://www.blogjava.net/CuteSoft_Client/CuteEditor/tag.php?name=%CF%B5%CD%B3">系统</span>即可。
<img src ="http://www.blogjava.net/hunter129/aggbug/195063.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-04-23 13:54 <a href="http://www.blogjava.net/hunter129/archive/2008/04/23/195063.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring + hibernate 配置事务</title><link>http://www.blogjava.net/hunter129/archive/2008/04/21/194590.html</link><dc:creator>落Nicety</dc:creator><author>落Nicety</author><pubDate>Mon, 21 Apr 2008 11:08:00 GMT</pubDate><guid>http://www.blogjava.net/hunter129/archive/2008/04/21/194590.html</guid><wfw:comment>http://www.blogjava.net/hunter129/comments/194590.html</wfw:comment><comments>http://www.blogjava.net/hunter129/archive/2008/04/21/194590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hunter129/comments/commentRss/194590.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hunter129/services/trackbacks/194590.html</trackback:ping><description><![CDATA[上次折腾了半天，终于把延时加载配置好了。可是不配置事务总是觉得怪怪的。so..决定把事务也配置好。虽然是个小项目吧^_^.<br />
<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;事务配置&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;事务管理器&nbsp;用于hibernate的事务管理器</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="transactionManager"</span><span style="color: rgb(255, 0, 0);">&nbsp;class</span><span style="color: rgb(0, 0, 255);">="org.springframework.orm.hibernate3.HibernateTransactionManager"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">ref&nbsp;</span><span style="color: rgb(255, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">="sessionFactory"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;事务拦截器&nbsp;用于对拦截的方法开启事务,其中指定了一些只读事务</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">id</span><span style="color: rgb(0, 0, 255);">="transactionInterceptor"</span><span style="color: rgb(255, 0, 0);">&nbsp;class</span><span style="color: rgb(0, 0, 255);">="org.springframework.transaction.interceptor.TransactionInterceptor"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="transactionManager"</span><span style="color: rgb(255, 0, 0);">&nbsp;ref</span><span style="color: rgb(0, 0, 255);">="transactionManager"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="transactionAttributes"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">props</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,-Exception</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="list*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="*list"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="display*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="*display"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="*view"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="find*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">prop&nbsp;</span><span style="color: rgb(255, 0, 0);">key</span><span style="color: rgb(0, 0, 255);">="main*"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">PROPAGATION_REQUIRED,readOnly</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">prop</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">props</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;自动代理，配置使所有service层bean使用事务拦截器&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="beanNames"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">list</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">*Service</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">list</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="interceptorNames"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">list</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);">transactionInterceptor</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">value</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">list</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">property</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">bean&nbsp;</span><span style="color: rgb(255, 0, 0);">class</span><span style="color: rgb(0, 0, 255);">="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;</span><span style="color: rgb(128, 0, 0);">property&nbsp;</span><span style="color: rgb(255, 0, 0);">name</span><span style="color: rgb(0, 0, 255);">="transactionInterceptor"</span><span style="color: rgb(255, 0, 0);">&nbsp;ref</span><span style="color: rgb(0, 0, 255);">="transactionInterceptor"</span><span style="color: rgb(0, 0, 255);">/&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">&lt;/</span><span style="color: rgb(128, 0, 0);">bean</span><span style="color: rgb(0, 0, 255);">&gt;</span><span style="color: rgb(0, 0, 0);"><br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">&lt;!--</span><span style="color: rgb(0, 128, 0);">&nbsp;事务配置结束&nbsp;</span><span style="color: rgb(0, 128, 0);">--&gt;</span></div>
<br />
简单说明一下，其中是用了spring提供的<span style="color: rgb(0, 0, 255);">BeanNameAutoProxyCreator<span style="color: rgb(0, 0, 0);">这个自动代理服务，自动对名为XXXService的的bean使用使用拦截器开启事务，而在</span></span><span style="color: rgb(0, 0, 255);">transactionInterceptor</span><span style="color: rgb(0, 0, 255);"><span style="color: rgb(0, 0, 0);">则定义了事务的属性，限定了一些只读的事务以提搞效率。</span></span><br />
<img src ="http://www.blogjava.net/hunter129/aggbug/194590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hunter129/" target="_blank">落Nicety</a> 2008-04-21 19:08 <a href="http://www.blogjava.net/hunter129/archive/2008/04/21/194590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>