??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美国产精品,亚洲精品免费在线观看,91在线视频免费看http://www.aygfsteel.com/bnlovebn/archive/2011/06/14/352274.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Tue, 14 Jun 2011 03:32:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2011/06/14/352274.htmlhttp://www.aygfsteel.com/bnlovebn/comments/352274.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2011/06/14/352274.html#Feedback1http://www.aygfsteel.com/bnlovebn/comments/commentRss/352274.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/352274.html扑ֈAppData\Local\Genuitec\Common\configuration\com.genuitec.pulse2.client.common.provisioning中的文grmb-2042360.latest.snapshotQ在文grmb-2042360.latest.snapshot中找C要删除的插g名。把q行删除卛_?/p>

]]>
APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending taskshttp://www.aygfsteel.com/bnlovebn/archive/2011/06/12/352125.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Sun, 12 Jun 2011 05:51:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2011/06/12/352125.htmlhttp://www.aygfsteel.com/bnlovebn/comments/352125.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2011/06/12/352125.html#Feedback0http://www.aygfsteel.com/bnlovebn/comments/commentRss/352125.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/352125.html最qorcale数据只有一台可以服务,Dhibernate q接数据库每?3分钟׃(x)?#8220;APPARENT DEADLOCK!!! Creating emergency threads for unassigned pending tasks”的错?
原因?hibernate 使用c3p0q接orcale数据后不?x)释?Q?c3p0的最大连接数?00Q但昄c3p0有BugQ导致数据库q接池不够用Q导致进E锁歅R?br />后换Proxool后,观察正常?br />
下面转引其它|友文章说明c3p0 ?Proxool?dbcp  的区?
1<!-- JDBC驱动E序 -->   
2<property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property> <!-- 数据库用户名 -->   
3<property name="connection.username">root</property> <!-- 数据库密?nbsp;-->

上面的一D配|,?span class="hilite2" style="background-color: #ffffff">c3p0?span class="hilite1" style="background-color: #ffffff">dbcp中,都是必需的,因ؓ(f)hibernate?x)根据上q的配置来生成connectionsQ再交给c3p0?span class="hilite1" style="background-color: #ffffff">dbcp理.

1 C3P0

只需在hibernate.cfg.xml中加?
1<property name="c3p0.min_size">5</property>   
2<property name="c3p0.max_size">30</property>   
3<property name="c3p0.time_out">1800</property>   
4<property name="c3p0.max_statement">50</property>   
5

q有在classespath中加?span class="hilite2" style="background-color: #ffffff">c3p0-0.8.4.5.jar


2 dbcp

在hibernate.cfg.xml中加?
 1<property name="dbcp.maxActive">100</property>   
 2<property name="dbcp.whenExhaustedAction">1</property>   
 3<property name="dbcp.maxWait">60000</property>   
 4<property name="dbcp.maxIdle">10</property>   
 5   
 6<property name="dbcp.ps.maxActive">100</property>   
 7<property name="dbcp.ps.whenExhaustedAction">1</property>   
 8<property name="dbcp.ps.maxWait">60000</property>   
 9<property name="dbcp.ps.maxIdle">10</property>  
10

q有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool

׃数据库connection在较长时间没有访问下?x)自动断开q接Q导致浏览出错,增加proxool作ؓ(f)数据库pool。它有自动连接功能?br />1)、从http://proxool.sourceforge...下蝲proxoolQ释放proxool.jar到WEB-INF/lib

2)、在hibernate.cfg.xml中增加:(x)
1<property name="hibernate.proxool.pool_alias">dbpool</property>   
2<property name="hibernate.proxool.xml">proxool.xml</property>   
3<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>  
4

3)、在与hibernate.cfg.xml同目录Qsrc根目录下Q增加proxool.xml文gQ?br />
 1<?xml version="1.0" encoding="utf-8"?>   
 2<!-- the proxool configuration can be embedded within your own application's.    
 3 Anything outside the "proxool" tag is ignored. -->   
 4<something-else-entirely>   
 5 <proxool>   
 6   <alias>dbpool</alias>   
 7   <!--proxool只能理p׃生的q接-->   
 8   <driver-url>   
 9     jdbc:mysql://127.0.0.1:3306/wlsh?characterEncoding=GBK&useUnicode=true&autoReconnect=true     </driver-url>   
10   <driver-class>com.mysql.jdbc.Driver</driver-class>   
11   <driver-properties>   
12       <property name="user" value="root" />   
13       <property name="password" value="123456" />   
14   </driver-properties>   
15   <!-- proxool自动侦察各个q接状态的旉间隔(毫秒),侦察到空闲的q接马上回?时的销?/span>-->   
16   <house-keeping-sleep-time>90000</house-keeping-sleep-time>   
17   <!-- 最保持的I闲q接?/span>-->   
18   <prototype-count>5</prototype-count>   
19   <!-- 允许最大连接数,过?jin)这个连接,再有hӞ排在队列中{候,最大的{待h数由maximum-new-connections军_-->   
20   <maximum-connection-count>100</maximum-connection-count>   
21   <!-- 最连接数-->   
22   <minimum-connection-count>10</minimum-connection-count>   
23 </proxool>   
24</something-else-entirely>  
25

于在hibernate3.0中,已经不再支持dbcp?jin),hibernate的作者在hibernate.org中,明确指出在实践中发现dbcp?BUG,在某些种情会(x)产生很多I接不能释放,所以抛弃了(jin)对dbcp的支持。至于c3p0Q有评论说它的算法不是最优的Q因为网上查资料得知Q有|友做了(jin)一个实验,在同一目中分别用?jin)几个常用的q接池,然后试其性能Q发现c3p0占用资源比较大,效率也不高。所以,Z上述原因Qproxool不少行家推荐使用Q而且暂时来说Q是负面评h(hun)是最的一个。在三星中也有项目是用proxool的。从性能和出错率来说QproxoolE微比前两种好些。C3P0Q稳定性似乎不错,在这斚wg有很好的口碑。至于性能Q应该不是最好的Q算是中规中矩的cd?
  Proxool的口似乎很好,不大见到负面的评P从官方资料上来看Q有许多有用的特性和特点Q也是许多h推荐的?br />

]]>
WAS6.1Ҏ(gu)?/title><link>http://www.aygfsteel.com/bnlovebn/archive/2010/04/12/318030.html</link><dc:creator>重归本垒QBingQ?/dc:creator><author>重归本垒QBingQ?/author><pubDate>Mon, 12 Apr 2010 02:41:00 GMT</pubDate><guid>http://www.aygfsteel.com/bnlovebn/archive/2010/04/12/318030.html</guid><wfw:comment>http://www.aygfsteel.com/bnlovebn/comments/318030.html</wfw:comment><comments>http://www.aygfsteel.com/bnlovebn/archive/2010/04/12/318030.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bnlovebn/comments/commentRss/318030.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bnlovebn/services/trackbacks/318030.html</trackback:ping><description><![CDATA[1、was6.1Zj2ee1.4?br /> 2、was6.1ND版中有Edge Components产品?br /> 3、was6.1各版本都有一些基本的功能?br /> <img src ="http://www.aygfsteel.com/bnlovebn/aggbug/318030.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bnlovebn/" target="_blank">重归本垒QBingQ?/a> 2010-04-12 10:41 <a href="http://www.aygfsteel.com/bnlovebn/archive/2010/04/12/318030.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JavaScript写的日期旉控gQ很好用QCosplay?/title><link>http://www.aygfsteel.com/bnlovebn/archive/2008/12/21/247574.html</link><dc:creator>重归本垒QBingQ?/dc:creator><author>重归本垒QBingQ?/author><pubDate>Sat, 20 Dec 2008 18:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/bnlovebn/archive/2008/12/21/247574.html</guid><wfw:comment>http://www.aygfsteel.com/bnlovebn/comments/247574.html</wfw:comment><comments>http://www.aygfsteel.com/bnlovebn/archive/2008/12/21/247574.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bnlovebn/comments/commentRss/247574.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bnlovebn/services/trackbacks/247574.html</trackback:ping><description><![CDATA[     摘要: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html>     <head>         ...  <a href='http://www.aygfsteel.com/bnlovebn/archive/2008/12/21/247574.html'>阅读全文</a><img src ="http://www.aygfsteel.com/bnlovebn/aggbug/247574.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bnlovebn/" target="_blank">重归本垒QBingQ?/a> 2008-12-21 02:56 <a href="http://www.aygfsteel.com/bnlovebn/archive/2008/12/21/247574.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>实时获得服务器上旉http://www.aygfsteel.com/bnlovebn/archive/2008/09/26/231224.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Fri, 26 Sep 2008 00:42:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2008/09/26/231224.htmlhttp://www.aygfsteel.com/bnlovebn/comments/231224.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2008/09/26/231224.html#Feedback0http://www.aygfsteel.com/bnlovebn/comments/commentRss/231224.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/231224.html<span id="spnTime"></span><script language="javascript">
var http = new XMLHttpRequest;
http.open(
"HEAD""."false);
http.send(
null);
var curDate = new Date;
var offsetTime = curDate - Date.parse(http.getResponseHeader("Date"));
setInterval(
function()
{
    curDate.setTime(
new Date - offsetTime);
    document.getElementById(
"spnTime").innerHTML = curDate.toLocaleString();
}
1000);
</script>

]]>
分色菜单CSS使用http://www.aygfsteel.com/bnlovebn/archive/2008/09/23/230616.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Tue, 23 Sep 2008 03:53:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2008/09/23/230616.htmlhttp://www.aygfsteel.com/bnlovebn/comments/230616.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2008/09/23/230616.html#Feedback0http://www.aygfsteel.com/bnlovebn/comments/commentRss/230616.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/230616.html 

<!-- 把下列代码加入到head区内 -->
<style>




#tablist a
{
text-decoration
: none;
padding
: 2px 0.2em;
border
: 1px solid #778;
background
: white;
}


#tablist  a:link, #tablist  a:visited
{
color
: navy;
}


#tablist  a:hover
{
color
: black;
background
: lightyellow;
border-color
: navy;
}


#tablist  a.current
{
background
: lightyellow;
}

</style>


<!-- 把下列代码加入到body区内 -->
<label id="tablist">
<href="http://www.yahoo.com">Yahoo</a>
<href="http://www.google.com">Google</a>
<href="http://www.sina.com">退?/span></a>
</label>


]]>
linux下安装卸载Y?/title><link>http://www.aygfsteel.com/bnlovebn/archive/2008/06/13/207727.html</link><dc:creator>重归本垒QBingQ?/dc:creator><author>重归本垒QBingQ?/author><pubDate>Fri, 13 Jun 2008 09:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/bnlovebn/archive/2008/06/13/207727.html</guid><wfw:comment>http://www.aygfsteel.com/bnlovebn/comments/207727.html</wfw:comment><comments>http://www.aygfsteel.com/bnlovebn/archive/2008/06/13/207727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bnlovebn/comments/commentRss/207727.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bnlovebn/services/trackbacks/207727.html</trackback:ping><description><![CDATA[1、源代码包的安装     <br />   gzip   -d   apache_1.3.20.tar.gz   Q解压)(j)     <br />   tar   xvf   apache_1.3.20.tar   Q解包)(j)     <br />   cd   apache_1.3.20     <br />   ./configure   Q配|)(j)   ----./configure   --helpQ查看configure选项Q?    <br />   make   Q编译)(j)     <br />   make   install   Q安装)(j)     <br />   make   clean   Q卸载)(j)     <br />     <br />   注:(x)典型的源代码包可以这样安装,但不都是q样Q如webmin     <br />   要执行其目录?/setup.shq入交互式配|安?    <br />   卸蝲用uninstallE序     <br />   具体如果不清楚看要安装的包下的README文g     <br />     <br />   2、RPM包的安装     <br />   RPM软g包的一个例子:(x)     <br />   foo-1.0-1.i386.rpm     <br />   其中包括软g包的名称(foo)Q版本号(1.0)Q发行号(1)Q和gq_(i386)?    <br />   Q?Q安?    <br />   #   rpm   -ivh   foo-1.0-1.i386.rpm     <br />   foo     <br />   #######################     <br />   A.   软g包已被安?    <br />   #   rpm   -ivh   foo-1.0-1.i386.rpm     <br />   foo   package   foo-1.0-1   is   already   installed     <br />   error:   foo-1.0-1.i386.rpm   cannot   be   installed     <br />   如果你仍旧要安装该Y件包Q你可以在命令行上?-replacepkgs   选项Q这忽略该错误信息?    <br />   B.   文g冲突     <br />   如果要安装的软g包中有一个文件已在安装其它Y件包时安装,?x)出C下错误信息:(x)     <br />   #   rpm   -ivh   foo-1.0-1.i386.rpm     <br />   foo   /usr/bin/foo   conflicts   with   file   from   bar-1.0-1     <br />   error:   foo-1.0-1.i386.rpm   cannot   be   installed     <br />   要想让RPM   忽略该错误信?   请?-replacefiles   命o(h)行选项     <br />   C.未解决依赖关p?    <br />   RPM软g包可能依赖于其它软g?   在安装了(jin)特定的Y件包之后才能安装该Y件包?    <br />   #   rpm   -ivh   bar-1.0-1.i386.rpm     <br />   failed   dependencies:     <br />   foo   is   needed   by   bar-1.0-1     <br />   你必d装完所依赖的Y件包Q才能解册个问题。如果想强制安装   (但是Q这样安装后的Y件包未必能正常运?Q请使用-nodeps   命o(h)行选项?    <br />     <br />   Q?Q?  卸蝲     <br />   #   rpm   -e   foo     <br />   注意Q这里用Y件包的名字fooQ而不是Y件包文g的名?#8220;foo-1.0-1.i386.rpm”.     <br />   如果其它软g包依赖于你要卸蝲的Y件包Q卸载时则会(x)产生错误信息。如Q?    <br />   #   rpm   -e   foo     <br />   removing   these   packages   would   break   dependencies:     <br />   foo   is   needed   by   bar-1.0-1     <br />   要想RPM忽略该错误信息l卸载的?  (但是Q依赖于该Y件包的程序可能无法运?,   请?nodeps   命o(h)行选项?    <br />   Q?Q升U?    <br />   #   rpm   -Uvh   foo-2.0-1.i386.rpm     <br />   foo     <br />   ###############################     <br />   当用旧版本的Y件包来升U新版本的Y件时Q会(x)产生以下错误信息Q?    <br />   #   rpm   -Uvh   foo-1.0-1.i386.rpm     <br />   foo   package   foo-2.0-1   (which   is   newer)   is   already   installed     <br />   error:   foo-1.0-1.i386.rpm   cannot   be   installed     <br />   要RPM   坚持q样“升”Q可使用--oldpackage   命o(h)行参数?    <br />   Q?Q查?    <br />   #   rpm   -q   foo     <br />   foo-2.0-1     <br />   软g包指定选项Q?    <br />   -a   查询所有已安装的Y件包.     <br />   -f   <file>   查询包含有文g<file>的Y件包     <br />   -p   <packagefile>     <br />   查询软g包文件名?lt;packagefile>的Y件包     <br />   信息选择选项Q?    <br />   -i   昄软g包信息,如描q?   发行?   寸,   构徏日期,   安装日期,   q_,   以及(qing)其它各类信息?    <br />   -l   昄软g包中的文件列表?    <br />   -s   昄软g包中所有文件的状态?    <br />   -d   昄被标注ؓ(f)文的文件列?man   手册,   info   手册,   README's,   etc).     <br />   -c   昄被标注ؓ(f)配置文g的文件列表。这些是要在安装完毕以后加以定制的文?sendmail.cf,   passwd,   inittab,   etc)?    <br />   对于那些要显C文件列表的文g,可以增加-v   命o(h)行选项以获得如?  ls   -l   格式的输出?    <br />   Q?Q验?    <br />   验证软g包是通过比较软g包中安装的文件和软g包中的原始文件信息来q行的。除?jin)其它一些东西,验证主要是比较文件的寸,   MD5   校验?   文g权限,   cd,   属主和用L(fng){?    <br />   rpm   -V命o(h)用来验证一个Y件包Q如     <br />   rpm   -V   foo     <br />   验证包含特定文g的Y件包:     <br />   rpm   -Vf   /bin/vi     <br />   验证所有已安装的Y件包:     <br />   rpm   -Va     <br />   Ҏ(gu)一个RPM来验证某个Y件包:     <br />   rpm   -Vp   foo-1.0-1.i386.rpm     <br />   如果你担?j)RPM数据库已被破坏,可以用这U方式。如果一切校验均正常不?x)生Q何输出。如果有不一致的地方Q就?x)显C出来?    <br />   输出格式?位长字符Ԍc   用以指配|文Ӟ接着是文件名.   8位字W的每一个用以表C文件与RPM数据库中一U属性的比较l果?#8220;.”   (?表示试通过?    <br />   以下字符表示某种试的失败:(x)     <br />   5   MD5   校验?    <br />   S   文g寸     <br />   L   W号q接     <br />   T   文g修改日期     <br />   D   讑֤     <br />   U   用户     <br />   G   用户l?    <br />   M   模式e   (包括权限和文件类?     <br />   如果有信息输出,应当认真加以考虑Q是删除Q重新安装,q是修正出现的问题?    <br />   Q?QRPM应用的几个例?    <br />   A.   如你误删?jin)一些文?   但是不能肯定到底删除?jin)哪些文件。如果你想验证一下整个系l看看都丢失?jin)哪些文件的话,可以键入Q?    <br />   rpm   –Va     <br />   B.若是一些文件丢׃(jin)或已被损?   可以重新安装或先卸载再安装该Y件包。如果碰C(jin)一个自׃认识的文Ӟ要想查处它属于哪个Y件包Q可以输入以下命令:(x)     <br />   rpm   -qf   /usr/X11R6/bin/xjewel     <br />   而输出的l果?x)是Q?    <br />   xjewel-1.6-1     <br />   C.   如果发生l合以上两个例子的情况,如文/usr/bin/pasteZ(jin)问题。你想验证一下拥有该文g的Y件包Q可又不知道软g包的名字Q这时可以简单的键入Q?    <br />   rpm   -Vf   /usr/bin/paste     <br />   q样相应的Y件包׃(x)被验证?    <br />   D.   如果你想?jin)解一个正在用的E序的详l信息,可以键入如下命o(h)来获得拥有该E序的Y件包中的文信息Q?    <br />   rpm   -qdf   /usr/bin/ispell     <br />   输出l果为:(x)     <br />   /usr/man/man4/ispell.4     <br />   /usr/man/man4/english.4     <br />   …………………………………………………………     <br />     <br />   E.   如果你发C(jin)一个新的koules   RPMQ但是不知道它是什么东西,可以键入如下命o(h)Q?    <br />   rpm   -qip   koules-1.2-2.i386.rpm     <br />   F.   现在你想?jin)解koules   RPM   所安装的文件。可以键入:(x)     <br />   rpm   -qlp   koules-1.2-2.i386.rpm     <br />   囑Ş理工具Qkpackage     <br />     <br />   3、shell或java脚本安装     <br />   Z囑Ş界面的安装,一般基于SHELL或Java语言~写Q主要应用于一些办公Y件和制图软g?qing)安装程序,如staroffice、oracle的安装,很容易,和windows一?nbsp;    <br />     <br /> <img src ="http://www.aygfsteel.com/bnlovebn/aggbug/207727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bnlovebn/" target="_blank">重归本垒QBingQ?/a> 2008-06-13 17:47 <a href="http://www.aygfsteel.com/bnlovebn/archive/2008/06/13/207727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2+spring2时应注意action的单实例问题http://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205829.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Wed, 04 Jun 2008 07:25:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205829.htmlhttp://www.aygfsteel.com/bnlovebn/comments/205829.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205829.html#Feedback0http://www.aygfsteel.com/bnlovebn/comments/commentRss/205829.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/205829.html 注意要设|,action bean ?scope 的倹{因为spring的bean默认为单实例Q故一定要设scope的g不能为singleton?

]]>
spring2.0的scopehttp://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205825.html重归本垒QBingQ?/dc:creator>重归本垒QBingQ?/author>Wed, 04 Jun 2008 07:21:00 GMThttp://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205825.htmlhttp://www.aygfsteel.com/bnlovebn/comments/205825.htmlhttp://www.aygfsteel.com/bnlovebn/archive/2008/06/04/205825.html#Feedback0http://www.aygfsteel.com/bnlovebn/comments/commentRss/205825.htmlhttp://www.aygfsteel.com/bnlovebn/services/trackbacks/205825.html如何使用spring的作用域Q?/p>

<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>

q里的scope是用来配置spring bean的作用域Q它标识bean的作用域?/p>

在spring2.0之前bean只有2U作用域卻I(x)singleton(单例)、non-singletonQ也UprototypeQ? Spring2.0以后Q增加了(jin)session、request、global session三种专用于Web应用E序上下文的Bean。因此,默认情况下Spring2.0现在有五U类型的Bean。当?dng)Spring2.0对Bean的类型的设计q行?jin)重构,q设计出灉|的Beancd支持Q理Z可以有无数多U类型的BeanQ用户可以根据自q需要,增加新的BeancdQ满_际应用需求?/p>

1、singleton作用?/p>

当一个bean的作用域讄为singleton, 那么Spring IOC容器中只?x)存在一个共享的bean实例Qƈ且所有对bean的请求,只要id与该bean定义相匹配,则只?x)返回bean的同一实例。换a之,当把一个bean定义讄为singleton作用域时QSpring IOC容器只会(x)创徏该bean定义的唯一实例。这个单一实例?x)被存储到单例缓存(singleton cacheQ中Qƈ且所有针对该bean的后l请求和引用都将q回被缓存的对象实例Q这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的Q单例设计模式表CZ个ClassLoader中只有一个class存在Q而这里的singleton则表CZ个容器对应一个beanQ也是说当一个bean被标识ؓ(f)singleton时候,spring的IOC容器中只?x)存在一个该bean?/p>

配置实例Q?/p>

<bean id="role" class="spring.chapter2.maryGame.Role" scope="singleton"/>

或?/p>

<bean id="role" class="spring.chapter2.maryGame.Role" singleton="true"/>

2、prototype

prototype作用域部|的beanQ每一ơ请求(其注入到另一个bean中,或者以E序的方式调用容器的

getBean()

Ҏ(gu)Q都?x)生一个新的bean实例Q相当与一个new的操作,对于prototype作用域的beanQ有一炚w帔R要,那就是Spring不能对一个prototype bean的整个生命周期负责,容器在初始化、配|、装饰或者是装配完一个prototype实例后,它交给客户端,随后对该prototype实例不闻不问?jin)。不何U作用域Q容器都?x)调用所有对象的初始化生命周期回调方法,而对prototype而言QQ何配|好的析构生命周期回调方法都不?x)被调用。清除prototype作用域的对象q放Q何prototype bean所持有的昂贵资源,都是客户端代码的职责。(让Spring容器释放被singleton作用域bean占用资源的一U可行方式是Q通过使用bean的后|处理器Q该处理器持有要被清除的bean的引用。)(j)

配置实例Q?/p>

<bean id="role" class="spring.chapter2.maryGame.Role" scope="prototype"/>

或?/p>

<beanid="role" class="spring.chapter2.maryGame.Role" singleton="false"/>

3、request

request表示该针Ҏ(gu)一ơHTTPh都会(x)产生一个新的beanQ同时该bean仅在当前HTTP request内有效,配置实例Q?/p>

request、session、global session使用的时候首先要在初始化web的web.xml中做如下配置Q?/p>

如果你用的是Servlet 2.4?qing)以上的web容器Q那么你仅需要在web应用的XML声明文gweb.xml中增加下qContextListener卛_Q?/p>

 

 

<web-app>



<listener>

<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>

</listener>



</web-app>

<!--
Q如果是Servlet2.4以前的web容器,那么你要使用一个javax.servlet.Filter的实玎ͼ(x)
-->
<web-app>

..

<filter>

   
<filter-name>requestContextFilter</filter-name> 

    
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>

</filter> 

<filter-mapping>

    
<filter-name>requestContextFilter</filter-name> 

    
<url-pattern>/*</url-pattern>

</filter-mapping>



</web-app>

 

接着既可以配|bean的作用域?jin)?x)

<bean id="role" class="spring.chapter2.maryGame.Role" scope="request"/>

4、session

session作用域表C针对每一ơHTTPh都会(x)产生一个新的beanQ同时该bean仅在当前HTTP session内有效,配置实例Q?/p>

配置实例Q?/p>

和request配置实例的前提一P配置好web启动文g可以如下配|:(x)

<bean id="role" class="spring.chapter2.maryGame.Role" scope="session"/>

5、global session

global session作用域类g标准的HTTP Session作用域,不过它仅仅在Zportlet的web应用中才有意义。Portlet规范定义?jin)全局Session的概念,它被所有构成某个portlet web应用的各U不同的portlet所׃n。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中用global session作用域来标识beanQ那么web?x)自动当成sessioncd来用?/p>

配置实例Q?/p>

和request配置实例的前提一P配置好web启动文g可以如下配|:(x)

<bean id="role" class="spring.chapter2.maryGame.Role" scope="global session"/>

6、自定义bean装配作用?/p>

在spring2.0中作用域是可以Q意扩展的Q你可以自定义作用域Q甚至你也可以重新定义已有的作用域(但是你不能覆盖singleton和prototypeQ,spring的作用域由接口org.springframework.beans.factory.config.Scope来定义,自定义自q作用域只要实现该接口卛_Q下面给个实例:(x)

我们建立一个线E的scopeQ该scope在表CZ个线E中有效Q代码如下:(x)

 

publicclass MyScope implements Scope 

    privatefinal ThreadLocal threadScope 
= new ThreadLocal() {

          
protected Object initialValue() {

            returnnew HashMap(); 

          }
 

    }


    
public Object get(String name, ObjectFactory objectFactory) 

        Map scope 
= (Map) threadScope.get(); 

        Object object 
= scope.get(name); 

        
if(object==null

          object 
= objectFactory.getObject(); 

          scope.put(name, object); 

        }
 

        
return object; 

    }
 

    
public Object remove(String name) 

        Map scope 
= (Map) threadScope.get(); 

        
return scope.remove(name); 

    }


    publicvoid registerDestructionCallback(String name, Runnable callback) 


    }


    
public String getConversationId() {

       
// TODO Auto-generated method stub

       returnnull;

    }
 

         }



]]>
վ֩ģ壺 | | | | | Ͻ| Ͽ| | | | | | | ԭ| | ڰ| | | | ƽ| ƺ| ӥ̶| ˮ| ԣ| | ߴ| Ϫ| ʼ| Զ| Ͷ| ¡| ̨| Ǩ| | »| ̶| ƽ| | | | ֱ|