﻿<?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-Knight of the round table-文章分类-jboss</title><link>http://www.blogjava.net/wansong/category/45533.html</link><description>wansong</description><language>zh-cn</language><lastBuildDate>Sat, 07 Jan 2012 01:42:03 GMT</lastBuildDate><pubDate>Sat, 07 Jan 2012 01:42:03 GMT</pubDate><ttl>60</ttl><item><title>jboss 在tomcat中部署</title><link>http://www.blogjava.net/wansong/articles/367428.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Wed, 28 Dec 2011 08:50:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/367428.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/367428.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/367428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/367428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/367428.html</trackback:ping><description><![CDATA[<div>http://docs.jboss.org/seam/2.0.0.GA/reference/zh/html/configuration.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   在tomcat中部署<br /><br /><div>http://community.jboss.org/wiki/EmbeddedAndTomcat<br /><br /><div>http://www.iteye.com/topic/1046702</div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/367428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-28 16:50 <a href="http://www.blogjava.net/wansong/articles/367428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>seam 中 pageflow (jbpm)的使用</title><link>http://www.blogjava.net/wansong/articles/367206.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 26 Dec 2011 11:41:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/367206.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/367206.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/367206.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/367206.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/367206.html</trackback:ping><description><![CDATA[<div>http://docs.redhat.com/docs/en-US/JBoss_Enterprise_Web_Platform/5/html/Seam_Reference_Guide/numberguess.html<br /><br /><div><div>http://docs.jboss.org/seam/2.0.0.GA/reference/zh/html/configuration.html&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  在tomcat中部署<br /></div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/367206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-26 19:41 <a href="http://www.blogjava.net/wansong/articles/367206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Configuring HTTP and HTTPS clustering on JBoss Server</title><link>http://www.blogjava.net/wansong/articles/365551.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 05 Dec 2011 03:06:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/365551.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/365551.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/365551.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/365551.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/365551.html</trackback:ping><description><![CDATA[<div>http://technicalmumbojumbo.wordpress.com/2009/04/21/configuring-http-and-https-on-jboss-server/</div><img src ="http://www.blogjava.net/wansong/aggbug/365551.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-05 11:06 <a href="http://www.blogjava.net/wansong/articles/365551.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>decision table at Drools version 4.0.7</title><link>http://www.blogjava.net/wansong/articles/365550.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 05 Dec 2011 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/365550.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/365550.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/365550.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/365550.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/365550.html</trackback:ping><description><![CDATA[<div>http://technicalmumbojumbo.wordpress.com/2009/03/28/jboss-drools-decision-tables/</div><img src ="http://www.blogjava.net/wansong/aggbug/365550.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-12-05 11:03 <a href="http://www.blogjava.net/wansong/articles/365550.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss Seam 介绍</title><link>http://www.blogjava.net/wansong/articles/364841.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Fri, 25 Nov 2011 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/364841.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/364841.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/364841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/364841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/364841.html</trackback:ping><description><![CDATA[<a href="http://www.open-open.com/news/view/1c64593">http://www.open-open.com/news/view/1c64593</a><img src ="http://www.blogjava.net/wansong/aggbug/364841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-11-25 17:28 <a href="http://www.blogjava.net/wansong/articles/364841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>深入浅出JBoss Seam</title><link>http://www.blogjava.net/wansong/articles/364446.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 21 Nov 2011 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/364446.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/364446.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/364446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/364446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/364446.html</trackback:ping><description><![CDATA[<a href="http://www.infoq.com/cn/articles/jboss-seam">http://www.infoq.com/cn/articles/jboss-seam</a><img src ="http://www.blogjava.net/wansong/aggbug/364446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-11-21 16:20 <a href="http://www.blogjava.net/wansong/articles/364446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss JMS clustering </title><link>http://www.blogjava.net/wansong/articles/358737.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 15 Sep 2011 11:48:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/358737.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/358737.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/358737.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/358737.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/358737.html</trackback:ping><description><![CDATA[<div>http://community.jboss.org/wiki/JMSClusteringByExample<br /><br />
<div>http://community.jboss.org/wiki/JBossHA<br /><br /><a href="http://docs.jboss.org/jbossas/getting_started/v4/html/mdb.html">http://docs.jboss.org/jbossas/getting_started/v4/html/mdb.html</a><br /><a href="http://carter.zhmy.com/archives/2007/112108.html">http://carter.zhmy.com/archives/2007/112108.html</a><br /><br /><br />
<div><strong>Computer A</strong>:<br /><strong>$</strong> cd $JBOSS_HOME/bin<br /><strong>$</strong> ./run.sh -c all -b 192.168.0.143 -Djboss.messaging.ServerPeerID=1<br /><br /><strong>Computer B</strong>:<br /><strong>$</strong> cd $JBOSS_HOME/bin<br /><strong>$</strong> ./run.sh -c all -b 192.168.0.210 -Djboss.messaging.ServerPeerID=2<br /><br /><br />It is necesary to give an ID to each server and this is accomplished with this directive:<br /><em><strong>-Djboss.messaging.ServerPeerID</strong></em>
<p>When you start the jboss on <em><strong>computer A</strong></em>, you should see the logs (server.log) telling you that there is one node ready and listening, and once you start the jboss on <em><strong>computer B</strong></em>, on the log will appear the two nodes, the two IP's ready to consume messages.</p>
<p><strong>5</strong>) Now it's time to send a Message to the Queue. To accomplish this it's necessary to change the connection factory to "<em><strong>ClusteredConnectionFactory</strong></em>" (<strong>JMSDispatcher.java</strong> - See the code below).<br />Also on the<em> <strong>jndi.properties</strong></em> (if you are using the default <strong>InitialContext</strong>) file it's necessary to add the two computers ip's separated by comma to the <em><strong>java.naming.provider.url</strong></em> property. (In my case a create a <em><strong>Properties</strong></em> variable and I set all the necessary properties, <strong>JMSDispatcher.java - </strong>see the code below).</p>
<p style="padding-bottom: 0px; min-height: 8pt; padding-left: 0px; padding-right: 0px; height: 8pt; padding-top: 0px">&nbsp;</p>
<p><strong>java.naming.provider.url=</strong><em>192.168.0.143:1099,192.168.0.210:1099</em><br /><br />The client that I wrote is a web application, that consist in one <strong>index.jsp</strong> page, which contains a form that prompts you for the name of the queue, the type of messaging (Queue or Topic), the server ip and port, how many times it will send the message and the actual message to be sent; also the web application has a Servlet (<strong>JMSClusteredClient.java</strong> - see code below) that receives the postback and helper class (<strong>JMSDispatcher.java</strong> - see code below) that sends the message to the jboss servers.&nbsp; You can to deploy it in any computer. In my case I deployed it on the <em><strong>Computer A</strong></em>. And you can access it through this URL: <a href="http://192.168.0.143:8080/JMSWeb/" target="_blank">http://192.168.0.143:8080/JMSWeb/</a><span> (just modify the IP where the client war was deployed).If you notice (on the index.jsp - code below) I've already put some default values that reflects the name of the Queue, and the IP's of my two computers. Now, If you increment the number of times that the message will be sent (maybe a 10) and fill out the message box, and click "</span><em><strong>Send</strong></em>" you should see on the two servers some of the messages being consumed by the MDB.</p></div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/358737.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-09-15 19:48 <a href="http://www.blogjava.net/wansong/articles/358737.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java同步文件到Jboss虚拟目录</title><link>http://www.blogjava.net/wansong/articles/358297.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 08 Sep 2011 05:55:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/358297.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/358297.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/358297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/358297.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/358297.html</trackback:ping><description><![CDATA[<div><h1>Java同步文件到Jboss虚拟目录</h1><br /><div>http://developer.51cto.com/art/201106/270337.htm</div><br /></div><img src ="http://www.blogjava.net/wansong/aggbug/358297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-09-08 13:55 <a href="http://www.blogjava.net/wansong/articles/358297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss clustering  @Clustered</title><link>http://www.blogjava.net/wansong/articles/358140.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Tue, 06 Sep 2011 12:10:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/358140.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/358140.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/358140.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/358140.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/358140.html</trackback:ping><description><![CDATA[<div>无状态的session bean，注意标注@Clustered是必须的，如果不进行标注那么这个session  bean将不会被集群。同样有状态的session bean的集群声明也是这样的<br /><br /><br /><div>java.lang.IllegalArgumentException: Cannot start post office since there is already a post office in the cluster with the same node id (0). Are you sure you have given each node a unique node id during installation?<br /><br /><div>If you want to change the ServerPeerID, edit :<br />server/&lt;configuration   (all/default/production)&gt;/deploy/jboss-messaging.sar/messaging-service.xml<br />and  change ServerPeerID from 0 to something unique.<br />The other  suggestion I'd make is that you track down the other SOA platform  installation. The IP address of that cluster node should be in your  server.log close to the "number of cluster members" statement.</div></div><br /><br /><div>http://topic.csdn.net/u/20090616/20/2f9e5faf-b99b-446b-94b5-41e18be05892.html<br /><div>http://blog.knowsky.com/187125.htm</div><br /><div>http://blog.csdn.net/woohooli/article/details/4078748</div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/358140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-09-06 20:10 <a href="http://www.blogjava.net/wansong/articles/358140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss 5 + EJB3开发指南：使用配置文件发布Session Bean</title><link>http://www.blogjava.net/wansong/articles/358023.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Mon, 05 Sep 2011 12:16:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/358023.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/358023.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/358023.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/358023.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/358023.html</trackback:ping><description><![CDATA[<div> <p>Session Bean除了可以使用注释来发布外，也可以使用相应的配置文件来发布。在这种情况下，就不需要在接口和Session  Bean中使用注释了。在JBoss中需要两个文件对Session  bean进行配置。这两个文件是ejb-jar.xml和jboss.xml.这两个文件应该META-INF目录中，该目录应该放在jar文件的根目录。ejb-jar.xml文件负责配置session  bean，下面是一个典型的配置代码：</p> <p> <table style="border: 1px solid #cccccc; table-layout: fixed; width: 95%;" align="center" border="0" cellpadding="6" cellspacing="0" width="95%"> <tbody> <tr> <td style="word-wrap: break-word;" bgcolor="#f3f3f3"><span style="color: #0000ff;" twffan="done">&lt;?</span><span style="color: #ff00ff;" twffan="done">xml&nbsp;version="1.0"&nbsp;encoding="ASCII"</span><span style="color: #0000ff;" twffan="done">?&gt;</span><span style="color: #000000;" twffan="done"><br /></span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">ejb-jar&nbsp;</span><span style="color: #ff0000;" twffan="done">xmlns:xsi</span><span style="color: #0000ff;" twffan="done">="http://www.w3.org/2001/XMLSchema-instance"</span><span style="color: #ff0000;" twffan="done">&nbsp;xmlns</span><span style="color: #0000ff;" twffan="done">="http://java.sun.com/xml/ns/javaee"</span><span style="color: #ff0000;" twffan="done"> <br />xmlns:ejb</span><span style="color: #0000ff;" twffan="done">="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"</span><span style="color: #ff0000;" twffan="done"> <br />xsi:schemaLocation</span><span style="color: #0000ff;" twffan="done">="http://java.sun.com/xml/ns/javaee&nbsp;http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"</span><span style="color: #ff0000;" twffan="done"> <br />version</span><span style="color: #0000ff;" twffan="done">="3.0"</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">display-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">MyEJB</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">display-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">enterprise-beans</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">session</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">ejb-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">Greeter</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">ejb-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">business-local</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">service.GreeterBeanLocal</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">business-local</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">business-remote</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">service.GreeterBeanRemote</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">business-remote</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">ejb-class</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">service.GreeterBean</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">ejb-class</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">session-type</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">Stateless</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">session-type</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">transaction-type</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">Container</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">transaction-type</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">session</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">enterprise-beans</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br /></span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">ejb-jar</span><span style="color: #0000ff;" twffan="done">&gt;</span></td></tr></tbody></table></p> <p>&nbsp;&nbsp;&nbsp; 其中&lt;ejb-name&gt;元素就是一个表示，表示当前配置的session  bean的名称。&lt;business-local&gt;和&lt;bussiness-remote&gt;分别用来指定本地接口和远程接口。&lt;ejb-class&gt;用来指定session  bean的java类</p> <p>&nbsp;&nbsp;&nbsp; jboss.xml文件主要用来指定jndi，如下面的代码所示：</p> <p> <table style="border: 1px solid #cccccc; table-layout: fixed; width: 95%;" align="center" border="0" cellpadding="6" cellspacing="0" width="95%"> <tbody> <tr> <td style="word-wrap: break-word;" bgcolor="#f3f3f3"><span style="color: #0000ff;" twffan="done">&lt;?</span><span style="color: #ff00ff;" twffan="done">xml&nbsp;version="1.0"</span><span style="color: #0000ff;" twffan="done">?&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;<br /></span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">jboss&nbsp;</span><span style="color: #ff0000;" twffan="done">xmlns:xs</span><span style="color: #0000ff;" twffan="done">="http://www.jboss.org/j2ee/schema"</span><span style="color: #ff0000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xs:schemaLocation</span><span style="color: #0000ff;" twffan="done">="http://www.jboss.org/j2ee/schema&nbsp;jboss_5_0.xsd"</span><span style="color: #ff0000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version</span><span style="color: #0000ff;" twffan="done">="5.0"</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">&nbsp;<br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">enterprise-beans</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">session</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">ejb-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">Greeter</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">ejb-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">jndi-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">mygreeter</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">jndi-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;</span><span style="color: #800000;" twffan="done">local-jndi-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done">mygreeter_local</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">local-jndi-name</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">session</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">enterprise-beans</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br /></span><span style="color: #0000ff;" twffan="done">&lt;/</span><span style="color: #800000;" twffan="done">jboss</span><span style="color: #0000ff;" twffan="done">&gt;</span><span style="color: #000000;" twffan="done"><br /></span></td></tr></tbody></table></p> <p>&nbsp;&nbsp;&nbsp;  上面的代码中的&lt;ejb-name&gt;元素的值和要ejb-jar.xml中的&lt;ejb-name&gt;元素的值相同。&lt;jndi-name&gt;用来指定远程的jndi名称。&lt;local-jndi-name&gt;用来指定本地jndi的名称。如果访问远程的session  bean，可以使用下面代码：</p> <p> <table style="border: 1px solid #cccccc; table-layout: fixed; width: 95%;" align="center" border="0" cellpadding="6" cellspacing="0" width="95%"> <tbody> <tr> <td style="word-wrap: break-word;" bgcolor="#f3f3f3"><span style="color: #000000;" twffan="done">&nbsp; Properties&nbsp;prop&nbsp;</span><span style="color: #000000;" twffan="done">=</span>&nbsp;<span style="color: #0000ff;" twffan="done">new</span><span style="color: #000000;" twffan="done">&nbsp;Properties();<br />&nbsp; InitialContext&nbsp;ctx&nbsp;</span><span style="color: #000000;" twffan="done">=</span>&nbsp;<span style="color: #0000ff;" twffan="done">new</span><span style="color: #000000;" twffan="done">&nbsp;InitialContext();<br />&nbsp;  System.out.println(((service.Greeter)ctx.lookup(</span><span style="color: #000000;" twffan="done">"</span><span style="color: #000000;" twffan="done">mygreeter</span><span style="color: #000000;" twffan="done">"</span><span style="color: #000000;" twffan="done">)).greet(</span><span style="color: #000000;" twffan="done">"</span><span style="color: #000000;" twffan="done">bill</span><span style="color: #000000;" twffan="done">"</span><span style="color: #000000;" twffan="done">));<br /></span></td></tr></tbody></table></p> <p>&nbsp;&nbsp;&nbsp; 从上面代码可看出，lookup方法通过&#8220;mygreeter&#8221;来查找服务端的session bean.</p></div><img src ="http://www.blogjava.net/wansong/aggbug/358023.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-09-05 20:16 <a href="http://www.blogjava.net/wansong/articles/358023.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jboss 5,6版本 远程访问， 启动是需要 加 -b ip</title><link>http://www.blogjava.net/wansong/articles/357300.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 25 Aug 2011 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/357300.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/357300.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/357300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/357300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/357300.html</trackback:ping><description><![CDATA[<div>http://ljhzzyx.blog.163.com/blog/static/38380312201063010434630/</div><img src ="http://www.blogjava.net/wansong/aggbug/357300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-25 18:06 <a href="http://www.blogjava.net/wansong/articles/357300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JGroup UDP和TCP两种方式</title><link>http://www.blogjava.net/wansong/articles/357232.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Thu, 25 Aug 2011 00:18:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/357232.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/357232.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/357232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/357232.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/357232.html</trackback:ping><description><![CDATA[<div>JGroup可以基于TCP协议来实现消息广播，也可以通过UDP方式来广播消息，利弊不言而喻，TCP可靠，但是代价大，性能没有UDP来的   好，UDP速度快，代价小，但是消息的丢失率以及无序性有着很大的限制。但是JGroup在UDP方式的基础上，增加了协议栈的配置，通过配置上层的协   议，可以保证消息的重发，大包体的分解（同时保证消息包体顺序），组内机器的状态检测等功能。<br /><br /><div>http://www.javachen.com/2011/06/jgroups-introduction-and-configruation/<br /><br /><div>http://blog.csdn.net/lnfszl/article/details/5747427<br /><br /><div>http://docs.jboss.org/jbossas/jboss4guide/r4/html/jbosscache.chapt.html</div></div></div></div><img src ="http://www.blogjava.net/wansong/aggbug/357232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-25 08:18 <a href="http://www.blogjava.net/wansong/articles/357232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss企业级应用服务平台群集指南 3,4,5,6,7,8,9,10,11</title><link>http://www.blogjava.net/wansong/articles/355959.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355959.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355959.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355959.html</trackback:ping><description><![CDATA[<a href="http://xudayu.blog.51cto.com/187984/68585">http://xudayu.blog.51cto.com/187984/68585</a><br /><a href="http://xudayu.blog.51cto.com/187984/70210">http://xudayu.blog.51cto.com/187984/70210</a><br /><a href="http://xudayu.blog.51cto.com/187984/67630">http://xudayu.blog.51cto.com/187984/67630</a><br /><a href="http://xudayu.blog.51cto.com/187984/66938">http://xudayu.blog.51cto.com/187984/66938</a><br /><a href="http://xudayu.blog.51cto.com/187984/66655">http://xudayu.blog.51cto.com/187984/66655</a><img src ="http://www.blogjava.net/wansong/aggbug/355959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 15:31 <a href="http://www.blogjava.net/wansong/articles/355959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Redhat上安装JBoss及其群集</title><link>http://www.blogjava.net/wansong/articles/355958.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355958.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355958.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355958.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转载： http://xudayu.blog.51cto.com/187984/648421 安装前的准备1.1 应用软件&nbsp;软件版本介质包所属对应操作系统JBoss4.0.5.GAjboss-4.0.5.GA.zipRedhatLinux，WindowsJDK1...&nbsp;&nbsp;<a href='http://www.blogjava.net/wansong/articles/355958.html'>阅读全文</a><img src ="http://www.blogjava.net/wansong/aggbug/355958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 15:28 <a href="http://www.blogjava.net/wansong/articles/355958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS中间件套件 </title><link>http://www.blogjava.net/wansong/articles/355955.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355955.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355955.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355955.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355955.html</trackback:ping><description><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<div class="blue14_word"><font color="#1e90ff">现在就在 JEMS 上实现标准化</font></div>
<div class="blue14_word"><font color="#1e90ff"></font>&nbsp;</div>
<div class="blue14_word"><font color="#1e90ff">适用于面向服务架构（SOA）的开源平台</font></div>
<div>　　在当今竞争激烈的市场中，必须不断满足并超越客户、供应商和合作伙伴的需求。除了要降低成本、优化运营效率以及增加投资回报率，甚至还必须满足内部受众的需求。在争取成功的过程中，各大企业都非常清楚自己面临的挑战，那就是必须迅速改造数据中心基础架构、创造新的收入流以及快速部署既强大又灵活的模块化应用。JBoss 企业级中间件套件（JEMS）是市场上领先的适用于面向服务架构（SOA）的开源平台。它为创建和部署新的创收应用提供了一个具有高度可扩展性的产品套件。</div>
<div>　　由于 JEMS 从最初设计就以灵活性和自由选择性为宗旨，它不是典型的全能型单片式平台套件。它以面向服务架构为基础，其中明确规定了即插即用其产品和服务的接口。对于有意在一个经济有效的标准平台之上加强对其 IT 投资管理的企业而言，这一基本原则确保了他们可以以保护现有投资的方式实现上述目标。现在就在 JEMS 上进行标准化建设，为大幅降低总体拥有成本并在打造和部署复杂企业应用领域取得重大飞跃而努力吧！</div>
<div>&nbsp;</div>
<div class="blue14_word"><font color="#1e90ff">亮点及核心价值 </font></div>
<div class="blue14_word"><font color="#1e90ff"></font>&nbsp;</div>
<div class="blue14_word"><font color="#1e90ff">开源、零成本的产品许可</font></div>　　JEMS 产品套件为开源的许可软件，可以免费下载，也可免费用于开发和生产部署。这意味着企业不再需要按照自己的预算精打细算所需软件许可的数量。零成本的产品许可确保了您可以根据公司应用的需求在众多系统和 CPU 之上实现经济有效的部署－毫无隐性成本。 
<div class="blue14_word" align="left">适用于面向服务架构的紧凑平台具有高度灵活性</div>
<div>　　到目前为止，那些渴望实施面向服务架构并实现面向服务架构优势的企业仍面临着两难的抉择，要么是使用价格昂贵的单片式专有平台，要么是选择拼凑在一起的各种开放的、混杂的或专用组件。与此相反，JEMS 是唯一一个由各种业内领先的开源中间件产品组成的套件，这些中间件产品紧密配合，既可以单独使用、混合和搭配使用，也可以作为一个完整的单元在面向服务架构中构建和部署应用、业务流程和 web 服务。</div>
<div>&nbsp;</div>
<div class="blue14_word"><font color="#1e90ff">以即插即用的方式保护您的投资</font></div>
<div>　　所有 JEMS 产品在设计上都以实现功能组件的可扩展性和可交换性为宗旨。即插即用的 SOA 微核不但有助于自由选择所需的技术，还提供了更高的 IT 投资回报。通过不断创新以及符合业内标准的要求，这一模块化基础大大降低了企业基础架构过时的风险。JBoss 公司致力于推动可以实现技术自由互用的标准化进程。</div>
<div class="blue14_word">专业的开源技术是创新的驱动力</div>
<div>　　在IT 架构上采用标准时，企业必须确保这些投资可以满足未来的需求，而不会在短时间内过时。JBoss 专业的开源方法可以帮助您直接实现这一目标。由于所有 JEMS 产品在设计上都可独立使用，所以每种产品必须不断创新，并凭借自身的优势实现技术上的超越。JBoss 公司聘请了众多开源项目领导者以及开源专家作为公司的全职员工，在 JEMS 产品的创新和研发方面投入了重资。JBoss 专业开源方法的这一重要一步使 JBoss 推出了 JBoss 应用服务器、Apache Tomcat 和 Hibernate 等创新的最佳产品－所有这些产品都由 JBoss 出资。</div>
<div class="blue14_word">从源头提供的一流全天候支持</div>
<div>　　JBoss 开拓了以产品专家提供的专家级支持服务作为开源软件强大后盾的专业开放源码模式（Professional Open Source model）。JBoss 公司以及庞大的 JBoss 授权服务合作伙伴网络可为整个 JEMS 产品套件提供全面的支持服务，其中包括专业支持、咨询和培训服务。</div>
<ul><li>JBoss 订阅（JBoss Subscription）－包括缺陷修正、问题支持以及开发人员协助（例如进行配置和性能优化），此外还包括补偿以及访问 JBoss ON 和客户支持网站。</li><li>培训服务－包括在全球主要城市提供的公共培训课程和在企业办公地点提供的专门培训课程。</li><li>咨询－通常由知识渊博的 JBoss 咨询人员提供的短期（3~5天）服务。 </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div class="blue14_word"><font color="#1e90ff">JEMS -适用于面向服务架构的开源平台</font></div>
<div>　　JEMS 囊括了各种各样可以共同使用、单独使用或与公司现有中间件解决方案结合使用的最佳软件产品，因此，随着企业的数据中心不断发展为以服务为中心的架构，您可以自由选择所需产品。JEMS 由下列可以帮助您迅速开发强大的应用和 web 服务的产品组成：</div></td></tr>
<tr>
<td>
<ul><li><strong>JBoss 应用服务器（JBoss AS）<a name="01"></a></strong>是目前市场上使用最广泛的 Java 应用服务器，它具有预计在 J2EE 1.4 认证平台中推出的所有功能。JBoss 应用服务器建立在以即插即用方式提供所有 J2EE 1.4 服务（包括实现集群、缓存和持久性的 EJB、JSP/Servlets 和 Web服务以及扩展的企业服务）的SOA 微核之上。此外，利用 JBoss 应用服务器，您还可以自由选择开发模式：J2EE1.4 标准方法以及大大简化的 EJB 3.0 模式。最新的 EJB 3.0 编程模式允许使用简单的 Java 注解向标准的 Java 对象应用企业服务和行为－不再需要大量的样板文件代码（boilerplate code）和冗长的 XML 描述符。</li><li><strong>Hibernate</strong> <a name="02"></a>是使用最广泛的适用于 Java 环境的对象关系映射（ORM）解决方案，它赋予了企业将对象模型的数据表示法映射到关系型数据模型及相关数据库模式的能力，可以直接解决 ORM 的复杂性问题。Hibernate 的目标是：消除开发人员需要使用 SQL 和 JDBC 手动处理数据的需求，将他们与通用数据持久性相关的编程工作量减少 95%。<br /><a class="red" href="http://www.better-service.com/jboss_03.htm"><span class="red16_word"><font color="#ff0000">若欲了解更多Hibernate信息，请点击这里。</font></span></a></li><li><strong>Apache Tomcat</strong> <a name="03"></a>是使用最广泛的 JSP/Servlet Web 应用容器，是 J2EE 1.4 JSP/ Servlet 的一个参考实施方案。Tomcat 可单独用于为 web 应用提供动力，也可作为 JBoss 应用服务器的一部分使用，为可扩展的更复杂企业应用提供动力。Tomcat 的 web 服务器连接器（Web Server Connectors）还使主流的 web 服务器实现了无缝集成，如 Apache HTTP 服务器以及由 JBoss 应用服务器 和 Tomcat 提供动力的企业级 web 应用。</li><li><strong>JBoss Cache</strong> <a name="04"></a>是一个复制的事务缓存，它可以通过处理 HTTP 会话复制来改善应用性能，并可以对某一本地进程或分布式进程中访问频率最高的 Java 对象进行管理。通过对检索或创建成本都较高的 Java 对象的本地复制（local copies）进行管理，JBoss Cache 大大提高了应用的性能。数据库访问的优化不但降低了网络流量，改善了应用的可扩展性，还提高了应用的性能。</li><li><strong>JBoss Transactions</strong> <a name="05"></a>是一个业内业已证明的产品，可以简化分布式事务的处理过程以及提供符合业内标准的互用性。事务处理可以确保绝对准确完成业务流程，在打造可靠、复杂的业务应用方面发挥着重要的作用。JBoss Transactions 完全采用了 Java 技术，是一个适用于 Java EE 的分布式交易系统实施方案。它符合业内主要标准，在确保业务事务整体性的基础上可以使您的企业高枕无忧。JBoss Transactions 支持 WS-Transactions，因此，无论是您现在使用的 web 服务应用，还是将来采用的 web 服务应用，都可具有最大的互用性。</li><li><strong>JBoss Portal</strong> <a name="06"></a>提供了一个符合标准的环境，可以用其托管某一门户网站的 web 界面，发布内容并对这些内容加以管理以及实现量身定制的客户体验。作为与公司信息交互的唯一途径，企业门户网站（Enterprise Portals）大大简化了信息的访问过程。利用 JBoss Portal，企业具有了将公司员工、合作伙伴和客户与其所需信息联系起来的能力－从而提高了业务效率并降低了成本。此外，由于 JBoss Portal 部署在 JBoss 应用服务器之上，不但访问动态信息非常容易，而且系统的性能和可扩展性也有一定的保障。</li><li><strong>JBoss jBPM</strong> <a name="07"></a>是一个功能强大的工作流和业务配置（orchestration）平台，它可以使完全不同的应用和服务互相协作。JBoss jBPM 将工作流应用的快速开发与一个灵活、可扩展的流程引擎实现了完美组合，因此可以轻松迅速地实施和部署具有互用性的应用。通过提供了一个可以创建、协调和监控业务流程的既灵活又强大的框架，JBoss jBPM 使更改复杂的业务流程变得空前简单，这大大提升了业务的灵活性。</li><li><strong>JBoss Rules</strong> <a name="08"></a>具有一个易于访问企业策略、易于调整以及易于管理的开源业务规则引擎，符合业内标准，速度快、效率高。业务分析师或审核人员可以利用它轻松查看业务规则，从而检验是否已编码的规则执行了所需的业务规则。JBoss Rules 还支持各种各样的语言和决策表输入，因此要想通过快速修改业务规则来迎接新的商机变得非常简单。</li><li><strong>JBoss Messaging</strong> <a name="09"></a>是一个将企业级消息传输服务带到大众市场的开源消息传输平台，符合业界标准。由于它支持 Java EE Java Message Service (JMS) 规范，因此，利用这一平台，可以开发事务驱动的便携式消息应用。JBoss Messaging 采用了一个高性能的消息传输内核，在设计上可以同时满足简单和复杂的异步消息传递需求。凭借其模块化的即插即用式架构，可以轻松将 JBoss Messaging 与其它 JEMS 产品共同使用。</li><li><strong>JBoss Eclipse IDE</strong> <a name="10"></a>使用一系列有助于程序员开发、部署、测试和调试 JEMS 应用的工具对 Eclipse 这一使用最广泛的综合开发环境框架进行了扩展。JBoss Eclipse IDE 提供了各种各样可以快速开发 J2EE 和 EJB3.0 应用以及 Hibernate 和 JBoss jBPM 应用的向导和功能。利用 JBoss Eclipse IDE，开发人员可以简化应用开发过程并用更短的时间提供更大的价值。 </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div class="blue14_word"><font color="#1e90ff">采取下一步行动</font></div>
<div>　　如需了解有关 JBoss 企业级中间件套件的更多信息，欢迎登陆<a href="http://www.jboss.com/products" target="_blank">[url]www.jboss.com/products[/url]</a>。</div></td></tr>
<tr>
<td><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' src="http://www.better-service.com/images/jboss_pic_01.gif" width="500" onload="if(this.width>650) this.width=650;" height=196></td></tr>
<tr>
<td>
<div align="left">Applications, Web Services, and Business Processes：应用、web 服务和业务流程<br />JBoss Microkernel：JBoss 微核</div>
<div align="left">JBoss Application Server：JBoss 应用服务器<br />Multi-vendor Java VM, Operating System, Hardware：多厂商 Java 虚拟机、操作系统、硬件</div>
<div align="left">　　JEMS 即插即用式面向服务架构（SOA）微核有助于您自由选择所需技术并使您的 IT 投资具有更大的投资回报率，进而使您可以按自己的需求在 JEMS 上实现标准化。</div></td></tr></tbody></table><img src ="http://www.blogjava.net/wansong/aggbug/355955.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 14:05 <a href="http://www.blogjava.net/wansong/articles/355955.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss企业级应用服务平台群集指南(二) </title><link>http://www.blogjava.net/wansong/articles/355956.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355956.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355956.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355956.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355956.html</trackback:ping><description><![CDATA[<h3><span style="font-family: 宋体">1.1.2&nbsp;</span><span style="font-family: 宋体">服务架构</span></h3>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">每个节点上的 ClusterPartition MBean 定义的群集拓扑结构（clustering topography）对系统管理员很重要。但是对于大部分的应用程序开发者来说，你可能更关心从客户应用程序的角度来看的群集架构。JBoss AS 支持两种群集架构：客户端拦截器（client-side interceptors）（proxies 或 stubs）和负载平衡系统（load balancers）。</span></div>
<h3><span>1.1.2.1&nbsp;</span>客户端拦截器</h3>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">JBoss </span><span style="font-family: 宋体">应用服务器提供的大部分远程服务，包括 JNDI、EJB、RMI 和 JBoss Remoting，都要求客户端获得（如，查找和下载）一个 stub（或 proxy）对象。占位对象（stub object）由服务器生成，它实现服务的商业接口。客户可对占位对象调用本地方法。这个调用会自动寻找路由，并被服务器管理的服务对象引用。在群集环境里，服务器生成的占位对象也是一个懂得怎样把调用指引向不同节点的拦截器。占位对象寻找合适的服务器节点、配置调用参数、解释调用结果，并把结果返回给调用程序。</span></div>
<div style="line-height: 150%">&nbsp;</div>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">stub interceptors </span><span style="font-family: 宋体">拥有群集系统的更新信息。例如，它们知道所有可用网络节点的 IP 地址，怎样在节点上分摊负载的算法（请参考下一部分内容），和如果目标节点不可用时对请求进行失效切换（failover）。对于每个服务请求，服务器节点都用群集里最新的信息来更新 stub interceptor。例如，如果一个节点退出群集系统后，每个客户 stub interceptor 在下一次连接活动的节点时，都会用新的配置来更新。在 service stub 上的所有操作对于客户应用程序都是透明的。</span></div><span style="font-family: 宋体; font-size: 10.5pt">如图1.2, &#8220;集群中的客户端拦截(代理)体系结构&#8221;</span> <span style="font-family: 宋体; font-size: 10.5pt">里说明了客户端拦截器群集架构。</span><span style="font-family: 宋体; color: black; font-size: 12pt"><span style="font-family: 宋体; color: black; font-size: 12pt"> 
<div><span style="font-family: 宋体; color: black; font-size: 12pt"><span style="font-family: 宋体; color: black; font-size: 12pt"><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/200803/200803091204992262218.jpg" onload="if(this.width>650) this.width=650;"></span></span></div></span></span>
<div><span style="font-family: 宋体; color: black; font-size: 12pt"></span>&nbsp;</div>
<div><span style="font-family: 宋体; color: black; font-size: 12pt"></span>&nbsp;</div>
<div><span style="font-family: 宋体; font-size: 9pt"></span><span style="font-family: 宋体; color: black; font-size: 12pt"><span style="font-family: 宋体; color: black; font-size: 12pt"><strong><span style="font-family: 宋体; color: black; font-size: 12pt">
<div><span style="font-family: 宋体; font-size: 9pt">图<span lang="EN-US"> 1.2. </span>集群中的客户端拦截<span lang="EN-US"> (</span>代理<span lang="EN-US">) </span>体系结构</span></div>
<div><span style="font-family: 宋体; color: black; font-size: 12pt" lang="AR-SA"><span style="font-family: 宋体; color: black; font-size: 12pt" lang="EN-US"><o:p><strong><span style="font-family: 宋体; color: black; font-size: 12pt" lang="AR-SA"><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://www.blogjava.net/wansong/attachment/200803/200803091205049907109.jpg" onload="if(this.width>650) this.width=650;">&nbsp;<a href="http://blog.51cto.com/viewpic.php?refimg=http://xudayu.blog.51cto.com/attachment/200803/200803091205049907109.jpg">http://blog.51cto.com/viewpic.php?refimg=http://xudayu.blog.51cto.com/attachment/200803/200803091205049907109.jpg</a><br /></span></strong></o:p></span></span></div><br /></span></strong></span></span></div>
<h4><span style="font-family: 宋体">1.1.2.2</span><span style="font-family: 宋体">负载平衡系统</span></h4><span style="font-family: 宋体; font-size: 10.5pt">其他的 JBoss 服务，特别是 HTTP web 服务，不要求客户下载任何东西。客户端（如，web 浏览器）按照某种通信协议（如 HTTP 协议）直接发送请求和接收回复。在这种情况下，负载平衡系统需要处理所有的请求并把它们分配给群集里的服务器节点。负载平衡系统是群集里的一个典型概念。它理解群集配置和失效切换策略（failover policies）。客户只需要知道它的存在。如图 1.3, &#8220;集群的负载均衡体系&#8221;</span> <span style="font-family: 宋体; font-size: 10.5pt">说明了负载平衡系统的群集架构</span><span style="font-family: 宋体; font-size: 10.5pt">。<br /><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://www.blogjava.net/wansong/attachment/200803/200803091205050005890.jpg" onload="if(this.width>650) this.width=650;"><a href="http://blog.51cto.com/viewpic.php?refimg=http://xudayu.blog.51cto.com/attachment/200803/200803091205050005890.jpg">http://blog.51cto.com/viewpic.php?refimg=http://xudayu.blog.51cto.com/attachment/200803/200803091205050005890.jpg</a><br /></span><br />
<div style="text-align: center; line-height: 150%" align="center"><span style="line-height: 150%; font-family: 宋体; font-size: 9pt">图 1.3. 集群的负载均衡体系</span></div><span style="font-family: 宋体; font-size: 10.5pt">负载平衡本身就是一个单点故障，这对于负载均衡是一个潜在的问题。它需要受到密切的监控，以确保高可用性的集群服务。</span><qtl style="z-index: 9999; border-bottom: rgb(204,204,204) 1px solid; position: fixed; border-left: rgb(204,204,204) 1px solid; border-top: rgb(204,204,204) 1px solid; top: 56px; border-right: rgb(204,204,204) 1px solid; left: 394px"></qtlbar></qtlql></qtlmain></qtl> <img src ="http://www.blogjava.net/wansong/aggbug/355956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 14:05 <a href="http://www.blogjava.net/wansong/articles/355956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss企业中间件</title><link>http://www.blogjava.net/wansong/articles/355954.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 06:03:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355954.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355954.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355954.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355954.html</trackback:ping><description><![CDATA[<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td>
<div align="left">JBoss 应用服务器（JBoss AS）是市场上领先的开源 J2EE 应用服务器，它为开发和部署电子商务应用提供了一个高性能的企业级平台。功能强大但灵活的架构与免费开源软件许可的完美结合，使 JBoss 应用服务器快速成为最受开发人员、独立软件供应商（ISV）和企业欢迎的中间件系统。</div>
<div align="left">　　众所周知，JBoss 应用服务器具有强大的功能和简单性，它在实现了对 EJB（Enterprise Java Bean）3.0 编程模式的支持后，更是使自己名声大振。EJB3 通过标准的 Java 注解，向简单的 Java 对象显示了 Java 企业版平台服务的强大功能，这大大简化了企业 Java 的编程模式。JBoss 应用服务器还简化了开发人员与中间件服务的交互方式，有助于 IT 企业在更短的时间内提供更大的价值。</div>
<div align="left">　　JBoss 订阅服务的客户可以通过访问 JBoss Operations Network （JBoss ON）对其 JBoss 应用服务器环境进行管理和监控。JBoss ON 在企业应用生命周期的每个阶段（从设计和开发、测试和部署到管理和监控）都可以为您提供协助。更快的开发和部署速度以及零成本的软件许可大大降低了整体业务成本。最重要的是，JBoss 应用服务器的支持服务由全职的 JBoss 产品专家以及 JBoss 授权的服务合作伙伴竭诚提供，这使 JBoss 应用服务器成为企业为其关键应用提供动力的安全之选。</div></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td valign="top" align="left">
<div class="blue14_word"><font color="#1e90ff">亮点及核心价值</font></div>
<div class="blue14_word"><font color="#1e90ff"></font>&nbsp;</div>
<div><span class="blue14_word"><font color="#1e90ff">开源、零成本的产品许可</font></span><br />　　 Hibernate软件基于开源GNU 通用公共许可证（LGPL）授权发布，可免费下载，也可免费用于开发和生产部署。这项许可还允许独立软件开发商免费嵌入和分发Hibernate软件。</div>
<div>&nbsp;</div>
<div align="left"><font color="#1e90ff"><span class="blue14_word">轻松使用企业 JavaJBoss</span> </font><br />　　应用服务器提供了一种向 POJO 应用企业级行为（如持久性、安全性和分布式事务缓存）的创新方式，符合业内标准。JBoss 的 Java Annotations 库由最新的 EJB 3.0 编程模式提供动力－有助于开发人员用所需的中间件服务增强现有的 POJO。Java Annotations 的使用使开发人员可以专注于业务逻辑，而不是 J2EE boilerplate 代码，这大大提高了他们的工作效率并缩短了开发、编译和部署周期。</div>
<div align="left">&nbsp;</div>
<div align="left"><span class="blue14_word"><font color="#1e90ff">企业级可靠性</font></span><br />　　JBoss 应用服务器为需要一流性能和可扩展性的任务关键应用提供了一个可靠的基础。其高可用性服务具有预计在最佳平台中推出的集群、缓存、故障切换、负载均衡和分布式部署功能。此外，JBoss 应用服务器符合 J2EE 要求－通过了 23,000次使用测试兼容性套件（Test Compatibility Kit）进行的测试，您可以信心十足地用它来开发和部署应用。</div>
<div align="left">&nbsp;</div>
<div align="left"><span class="blue14_word"><font color="#1e90ff">一致的可管理性</font></span><br />　　凭借其基于 Java 管理扩展（JMX）的一流微核架构，JBoss 应用服务器不但可以提供一致的模块行为，而且还具有通过支持 JMX 的管理控制台管理和配置服务的能力。此外，JBoss 订阅的客户还可以利用 JBoss ON 广泛的管理和监控功能对其 JBoss 环境进行集中管理。</div>
<div align="left">&nbsp;</div>
<div align="left"><span class="blue14_word"><font color="#1e90ff">可嵌入的面向服务架构（SOA）</font></span><br />　　JBoss 应用服务器由一组独立、但相互协作的组件和服务组装而成，这些组件和服务以纯粹的方式打包，完全支持热部署。它在设计上可以无缝嵌入到应用中，嵌入式设计的本质是根据应用的特定需求实现完全的量身定制。因此，只有必不可少的主要应用服务器组件需要作为应用的部分基准配置（baseline footprint）提供。此外，开发人员还可以轻松创建服务并将其添加到系统中，这确保了定制的服务具有与 JBoss 标准服务集一样的一致行为。</div>
<div align="left"><span class="blue14_word">为符合标准的要求打造而成</span><br />　　利用其前瞻性的模块化架构，JBoss 应用服务器不但可以满足目前的标准需求，还是处理未来标准和服务的最佳选择方案。随着新标准不断出现，可以以一种统一的可预测方式将其插入到 JBoss 应用服务器中，从而确保了开发人员迅速采用这些新技术。</div>
<div align="left"><span class="blue14_word">增强的互用性</span><br />　　JBoss 应用服务器完全支持 J2EE 1.4 规范要求的 Web 服务标准，因此，各种应用即使在不同的操作系统和硬件架构上运行，而且使用不同的应用架构和编程语言，也可以共同工作。这种独立于技术的互用性有助于 IT 企业实现现有解决方案的最大化价值，对企业应用进行集成以及消除公司的管理真空区。</div>
<div align="left">&nbsp;</div>
<div align="left"><span class="blue14_word"><font color="#1e90ff">一流的全天候支持</font></span><br />　　JBoss 开拓了以产品专家提供的专家级支持服务作为开源软件强大后盾的专业开放源码模式（Professional Open Source model）。JBoss 公司以及庞大的 JBoss 授权服务合作伙伴网络可为我们的产品（如 JBoss 应用服务器）提供全面的支持服务－是适合企业的安全之选。</div>
<div align="left">&nbsp;</div>
<div class="blue14_word" align="left"><font color="#1e90ff">组件及功能</font></div>
<div class="blue14_word" align="left"><font color="#1e90ff"></font>&nbsp;</div>
<div align="left"><font color="#1e90ff"><span class="blue14_word">著名的 EJB 3.0</span><br /></font>EJB（Enterprise Java Beans）3.0 规范对原 EJB 规范进行了重大调整和简化，其宗旨是通过使开发人员可以专心编写 POJO（plain old java objects），而不是学习复杂的 EJB API 来简化开发过程。</div>
<div align="left">　　EJB 3.0 规范包括如下内容：</div></td></tr>
<tr>
<td>
<ul><li>适用于会话 Beans（Session Beans）、消息驱动 Beans（Message Driven Beans）和实体 Beans（Entity Beans）的简化的 EJB API</li><li>Java 注解（Java Annotations）</li><li>依赖注入（Dependency Injection）</li><li>可选的回调机制（Optional Callback）</li><li>实体管理器 API（Entity Manager API）</li><li>简化的持久性和改善的查询功能</li><li>具有 EJB 3.0 规范最新功能演示的 JBoss TrailBlazer 指南及演示系统 </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div align="left"><span class="blue14_word"><font color="#1e90ff">JSF（JavaServer Faces）</font></span><br />JSF 是一个适用于开发多功能用户界面的 Web 应用框架。它是 Java EE 5 规范的一部分，提供了一个构建服务器端动态用户界面的标准。JSF 明确规定要将应用逻辑与演示分离开来。利用这一规定，开发人员可以轻松地将演示层（presentation layer）与应用代码连接起来。</div>
<div align="left">&nbsp;</div>
<div align="left"><font color="#1e90ff"><span class="blue14_word">JBoss Seam</span><br /></font>　　JBoss Seam 是一个将 EJB3 和 JSF 组件模型统一起来的应用框架。它可为所有 Java 组件提供声明式应用状态管理。JBoss Seam 的组件是有状态的，具有上下文相关性以及一个明确规定的容器管理（container-managed）周期。这一方法有助于解决需手动管理状态的 web 应用面临的所有类型缺陷和性能问题。JBoss Seam可以将 JBoss jBPM 完全集成到这个状态管理架构中，在这种情况下，使用复杂的工作流程和用户交互编写应用变得空前简单。</div></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div><font color="#1e90ff"><span class="blue14_word">Web 应用服务</span><br /></font>JBoss 应用服务器支持最新的 JSP 和 Servlet 规范，同时还采用了许多其它高性能的高级功能来满足当前最复杂的 web 应用的需求。</div></td></tr>
<tr>
<td>
<ul><li>嵌入式的 Apache Tomcat 5 JSP 容器支持业内领先的 2.0/Servlet 2.4 规范</li><li>Tomcat 与其它 JBoss 应用服务器服务的集成大大提高了系统的可靠性、可扩展性和可用性</li><li>通过 mod_jk 与Apache Web 服务器集成提供了市场上最佳的 Web 服务器、Web 容器以及应用服务器组合。 </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div class="blue14_word" align="left"><font color="#1e90ff">缓存、集群和高可用性</font></div>　　JBoss 应用服务器可提供下列特殊的高可用性服务：</td></tr>
<tr>
<td>
<ul><li>集群、故障切换、负载均衡和分布式部署功能为部署功能强大、可扩展的大型应用提供了方法。主要功能包括： </li></ul>
<ul>
<ul class="quan"><li>节点自动恢复</li><li>在整个集群范围内（Cluster-wide）复制 JNDI 上下文</li><li>适用于 JNDI、RMI 和所有 EJB 类型的故障切换和负载均衡</li><li>状态会话 bean（Stateful session bean）状态复制</li><li>HTTP 会话复制</li><li>高可用性 JMS</li><li>JBoss 应用服务器组件的 Farming/分布式部署；在一个节点上部署即可完成对所有节点的部署。 </li></ul></ul>
<ul><li>嵌入式 JBoss Cache 具有一个面向事务的复制树状结构高速缓冲存储器，因此在 JBoss 应用服务器网格之上可以轻松实现数据集群。JBoss Cache： </li></ul>
<ul>
<ul class="quan"><li>通过本地访问数据大大提高了性能</li><li>允许复制会话数据，因此可在网格上提供一个始终可用的高可用性高速缓冲存储器。</li><li>可以对 POJO 进行精确的复制－业内首创！ </li></ul></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div align="left"><span class="blue14_word"><font color="#1e90ff">Hibernate 持久化服务</font></span><br />在 JBoss应用服务器中捆绑和集成 Hibernate 这一目前在对象关系映射和持久性方面领先的技术是为了提供如下功能：</div></td></tr>
<tr>
<td>
<ul><li>EJB 3.0 Entity Manager 和 Java Persistence API</li><li>对临时数据、历史数据、区域数据和权限数据（permissioned data）进行虚拟过滤</li><li>灵活的对象关系映射</li><li>单一对象到多表映射</li><li>用手写的 SQL 覆盖生成的 SQL 的能力</li><li>不需要字节码处理就可以实现透明的持久性</li><li>可以通过 XDoclet 生成的可读的对象关系映射定义</li><li>可将数据作为XML和Java对象进行交替表示的XML绑定</li><li>采用了由事件驱动的设计，确保了可以通过创建和注册自定义事件来审核情况或级联行为语言（cascaded behavior semantics）</li><li>用类似于 SQL 语言表示的功能强大的面向对象查询语言</li><li>通过查询进行批量更新和删除</li><li>超高性能（UHP） </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div><span class="blue14_word"><font color="#1e90ff">企业服务</font></span><br />JBoss 应用服务器具有如下满足当今各种可扩展的、分布式、面向事务的以及容错应用需求的企业级功能。</div>
<div align="left">EJB 2.1支持包括：</div></td></tr>
<tr>
<td>
<ul><li>有状态和无状态会话 Beans</li><li>BMP（Bean管理的持久性）实体 Beans</li><li>CMP（容器管理的持久性）实体 Beans</li><li>消息驱动的 beans （MDB）</li><li>使用 RMI-IIOP 或 JAXRPC 的互用性</li><li>将无状态会话 beans 和 MDB 作为 Web 服务显示的能力</li><li>支持通过 Web 服务（Web Services）发送和接收消息</li><li>基于 EJB 和 JMX 的 web 服务的轻松配置和热部署</li><li>从外部 CORBA 对象访问 EJB</li></ul>　　捆绑的 ORB（JacORB）支持下列功能： 
<ul><li>EJB 2.1 和 CORBA 对象间的互用性</li><li>完全支持 CORBA 2.3</li><li>可移植对象适配器（POA）</li><li>异步方法调用（AMI）</li><li>可移植拦截器（Portable interceptor）</li><li>动态调用接口（DII）、动态框架接口（Dynamic Skeleton Interface）和 DynAny</li><li>支持内置的命名和目录接口（JNDI）</li><li>支持两阶段提交事务（two-phase commit）的内置 JTA </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div align="left"><span class="blue14_word"><font color="#1e90ff">Web 服务和互用性</font></span><br />　　与 J2EE 1.3 相比，J2EE 1.4 的主要改进是增加了 web 服务标准、可对 XML 进行更全面的处理以及提高 Web 服务的互用性。这些 web 服务标准的全面融合不但使 JBoss 应用服务器上构建的应用程序可以使用 SOAP、WSDL、UDDI 和 XML 语言与 Web 服务进行动态交互，而且还使这些应用从 JBoss 应用服务器提供的可扩展的、可靠的、且可用于生产的架构获益非浅。</div>
<div class="blue14_word">集成及消息服务（Messaging Services）</div>
<div>为了提供满足最严格集成要求的基础架构，JBoss 应用服务器支持最新的连接器和消息传递规范。</div>
<ul><li>支持连接的 J2EE 连接器架构（JCA）1.5 规范。</li><li>支持对任何符合 JCA 规范的资源适配器（包括数据库、传统系统和 JMS 服务器）进行池、事务和安全上下文传播（context propagation）的 JDBC 3.0 规范。</li><li>支持用可选的服务质量参数（如持久性、有保障传输和事务）在分布式系统中异步传输消息的 JMS 1.1。该规范还支持队列和主题消息形式，并具有支持在集群环境中部署 JMS 应用的高可用性功能。 </li></ul>
<div><span class="blue14_word"><font color="#1e90ff">安全服务</font></span><br />　　JBoss 应用服务器采用了标准的 JAAS （J2EE Authentication and Authorization）安全模式，同时为了实现与上下文相关的授权，它还支持扩展的安全模式。此外，由于 JBoss 应用服务器支持可插拔认证模块（PAM），还可实现与公司现有认证框架的集成。</div>
<div><span class="blue14_word">面向服务的微核（Service Oriented Microkernel）</span><br />　　在 JBoss 应用服务器的中心是一个所需空间极小的面向服务架构（SOA）微核。通过利用 JMX，上述微核提供了一个轻量级的组件模式，其中明确规定了服务的周期、配置和管理，同时还提供了一个将服务组件组装起来的标准机制，确保了以一种统一、一致的方式对所有服务进行访问、管理和集成。JBoss 应用服务器中部署的服务范围涉及从事务和消息服务到连接池和安全服务等多方面。在 JBoss 应用服务器中，可以轻松从系统中删除服务或向系统添加服务－从而通过调整整体所需空间大小来满足特定的需求。此外，开发人员还可以创建定制的服务，并将其作为可分别向 JBoss 应用服务器热部署的服务档案（SAR）打包。利用这种方式，开发人员可以轻松扩展 JBoss 应用服务器。</div>
<div><span class="blue14_word">注解库（Annotation Library）及方面框架（Aspect Framework）</span><br />　　 JBoss 应用服务器具有一个 AOP（aspect-oriented programming）框架，该框架可以和 OOP（object-oriented programming）共同使用，从而为面向对象的 POJO 提供一个声明式横切服务（cross-cutting, declarative services）（如持久性、登陆和缓存）。该框架可广泛用于改善代码可读性、可维护性和可重复使用性的 EJB 3.0 以及扩展的 JBoss Annotations。通过为 Java 对象加以简单的注释，开发人员可以将扩展的功能轻松、迅速地添加到现有应用中。该框架还提供了一种巧妙扩展 Java 语言的好方式。</div>
<div>&nbsp;</div>
<div><font color="#1e90ff"><span class="blue14_word">控制台及工具</span><br /></font>　　JBoss 应用服务器包含一个控制台，它可以提供如下的功能：</div>
<ul><li>查看用户定义的域和 MBeans</li><li>获得 Servlets 的管理统计数据、EJB 和部署描述符视图</li><li>动态绘制数值型 JMX 属性</li><li>监控 JMX 属性</li><li>根据特定的阈值接收邮件警告通知</li><li>记录不同时间下 JMX 属性的快照</li><li>查看微核，并显示所有注册的和现用的 MBean 服务</li><li>显示 JNDI 树</li><li>生成 thread dump</li><li>对部署扫描器（deployment scanner）进行管理</li><li>停止 JBoss 应用服务器 </li></ul>
<div align="left">　　JBoss 订阅服务（JBoss Subscription）包括对 JBoss Operations Network 的访问，该网络提供了多种多样的管理和监控功能，可用于对 JBoss 生产环境进行管理。如需了解详细信息，欢迎访问<a href="http://www.jboss.com/services/jbossnetwork">[url]www.jboss.com/services/jbossnetwork[/url]</a>。</div>
<div align="left">　　<font color="#1e90ff">JBoss Eclipse IDE 可以单独提供，它主要具有如下功能：</font></div>
<ul><li>基于 Eclipse 3 的一流开发环境</li><li>EJB 3.0 项目向导</li><li>对 JBoss AOP 和开发的全面支持以及方面（aspects）的使用</li><li>可进行全面的 HQL 查询和浏览结果集的 Hibernate 控制台</li><li>Hibernate XML 映射文件编辑器</li><li>适用于逆向工程数据库模式（database schema）的 Hibernate 向导</li><li>JBoss jBPM 图形流程设计（graphical process designer）</li><li>对 JBoss 服务器的全面调试和监控以及对其生命周期的控制</li><li>档案打包规划（打包的或展开的）的简单配置</li><li>向 JBoss 应用服务器简单部署打包的和/或展开的档案（exploded archive）</li><li>几个可以简化 J2EE 开发过程的 J2EE 向导</li><li>可突出显示句法的 JSP、HTML 和 XML 编辑器</li><li>对 XDoclet 提供的舒适、复杂的支持</li><li>将 XDoclet、打包和部署与 Eclipse Job API 实现了集成 </li></ul></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div align="left"><span class="blue14_word"><font color="#1e90ff">从源头提供的支持服务</font></span><br />　　成功在很大程度上取决于是否具有学习、实施和对 JBoss 应用服务器等技术提供支持的能力。这也是 JBoss 产品专家团队奋斗之所在。JBoss 公司以及庞大的 JBoss 授权服务合作伙伴网络可为 JBoss 应用服务器提供全面的支持服务，其中包括 JBoss 订阅、培训和咨询服务。</div></td></tr>
<tr>
<td>
<ul><li>JBoss 订阅（JBoss Subscription）将帮助您解决所有与 JBoss 应用服务器相关的问题，其中包括故障和补丁管理、生产支持以及总体开发和部署协助。JBoss 目前共推出了三种不同级别的支持服务，其中包括在 48 小时内响应的 8*5 支持服务以及在 2 个小时内响应的全天候服务。所有 JBoss 专业支持服务都包含不限制登陆时间或呼叫次数的无限制支持。 </li></ul>
<ul>
<ul><li>每个金级（Gold）和白金级（Platinum）JBoss 应用服务器订阅合同都包括对 JBoss Operations Network（JBoss ON）的访问。利用 JBoss ON，您可以更好地了解和控制您的 JEMS 应用，这包括库存、管理、控制和对 JBoss 环境进行监控的主要功能。 </li></ul></ul>
<ul><li>培训服务包括在全球主要城市提供的公共培训课程和在企业办公地点提供的专门培训课程。目前我们主要提供如下有关 JBoss 应用服务器的培训课程： </li></ul>
<ul>
<ul><li>适用于 Java 开发人员的 JBoss 和 EJB3</li><li>适用于 Web 开发人员的 JBoss</li><li>适用于高级 J2EE 开发人员的 JBoss</li><li>面向管理员的 JBoss</li><li>JBoss 集群</li></ul></ul>
<ul><li>咨询服务包括在您需要深入了解产品知识时由训练有素的 JBoss 应用服务器咨询人员提供的现场和远程咨询服务。我们的咨询服务将从源头直接为您提供体贴的服务，这对确保您及时使用 JBoss 应用服务器至关重要。 </li></ul>
<div>　　如需了解有关 JBoss 服务的更多信息，欢迎登陆<a class="red" href="http://www.jboss.com/services/Index" target="_blank"><font color="#ff0000">[url]www.jboss.com/services/Index[/url]</font></a>。</div>
<div align="left">　　我们衷心希望您获得一个积极的 JBoss 体验。如需要了解有关 JBoss 的支持、培训和咨询服务，欢迎您随时与我们联系。<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#24744;&#21487;&#20197;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;&#21040;&#37;&#51;&#67;&#97;&#37;&#50;&#48;&#104;&#114;&#101;&#102;&#61;&#39;&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#97;&#108;&#101;&#115;&#64;&#106;&#98;&#111;&#115;&#115;&#46;&#99;&#111;&#109;&#39;&#37;&#50;&#48;&#104;&#114;&#101;&#102;&#95;&#99;&#101;&#116;&#101;&#109;&#112;&#61;&#39;&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#97;&#108;&#101;&#115;&#64;&#106;&#98;&#111;&#115;&#115;&#46;&#99;&#111;&#109;&#39;&#37;&#51;&#69;&#115;&#97;&#108;&#101;&#115;&#64;&#106;&#98;&#111;&#115;&#115;&#46;&#99;&#111;&#109;&#37;&#51;&#67;&#47;&#97;&#37;&#51;&#69;">您可以发送电子邮件到 <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#115;&#97;&#108;&#101;&#115;&#64;&#106;&#98;&#111;&#115;&#115;&#46;&#99;&#111;&#109;">sales@jboss.com</a></a> 或致电 JBoss 美国分公司总部（电话：+1 (404) 467-8555）或欧洲总部（电话：＋41 32 720 9260）。</div></td></tr>
<tr>
<td>&nbsp;</td></tr>
<tr>
<td>
<div><span class="blue14_word"><font color="#1e90ff">所需平台及支持的标准</font></span></div>
<div><strong>系统最低需求 </strong></div>
<ul><li>JDK 1.4 或更高版本（建议使用1.4.2）</li><li>在使用 EJB 3.0 时需要使用 JDK 5 或更高版本</li><li>512 MB RAM</li><li>100 MB 硬盘空间</li><li>400 MHz CPU </li></ul>
<div><strong>支持的操作系统<br />　　</strong>由于 JBoss 应用服务器完全使用了 Java 技术，因此，可以与大多数能够运行Java 虚拟机（JVM）的操作系统同时使用，其中包括 Windows 系统、UNIX 系统和 Linux 系统。</div>
<div><strong>支持的数据库</strong></div>
<div>JBoss 应用服务器可与 符合 JDBC 标准的所有数据库共同使用，如 Oracle、SQL Server、DB2 等等。</div><strong>支持的标准 </strong>
<ul><li>EJB 3.0 规范草案</li><li>EJB 2.1</li><li>JSP 2.0 和 Servlets 2.4</li><li>JavaServer Faces</li><li>Java Management Extension (JMX) 1.2</li><li>Java Messaging Service (JMS) 1.1</li><li>Java Transaction API (JTA) 1.0.1B</li><li>CORBA 2.3.1</li><li>JDBC 3.0</li><li>J2EE Connector Architecture (JCA) 1.5</li><li>J2EE Management API 1.0</li><li>J2EE Deployment API 1.1</li><li>Java API for XML Processing (JAXP) 1.2</li><li>Java API for XML based RPC (JAXRPC) 1.1</li><li>SOAP with Attachments API for Java (SAAJ) 1.2</li><li>Java API for XML Registries (JAXR) 1.0</li><li>Web Services 1.1</li><li>Java Naming and Directory Interface (JNDI) 1.2.1</li><li>Java Authentication and Authorization Service (JAAS) 1.0</li><li>JavaBeans Activation Framework (JAF) 1.0</li><li>JavaMail 1.3</li><li>Java Authorization Service Provider Contract for Containers (JACC) 1.0</li></ul></td></tr></tbody></table><img src ="http://www.blogjava.net/wansong/aggbug/355954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 14:03 <a href="http://www.blogjava.net/wansong/articles/355954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何配置一个负载均衡(Loadbalanced)的高可用性(High-Availability,HA)Apache集群(Cluster)</title><link>http://www.blogjava.net/wansong/articles/355953.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 06:01:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355953.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355953.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355953.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355953.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355953.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 如何配置一个负载均衡(Loadbalanced)的高可用性(High-Availability,HA)Apache集群(Cluster)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;How To ...&nbsp;&nbsp;<a href='http://www.blogjava.net/wansong/articles/355953.html'>阅读全文</a><img src ="http://www.blogjava.net/wansong/aggbug/355953.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 14:01 <a href="http://www.blogjava.net/wansong/articles/355953.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss4的Deploy目录中的各个文件的功能</title><link>http://www.blogjava.net/wansong/articles/355952.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355952.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355952.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355952.html</trackback:ping><description><![CDATA[&nbsp;bsh-deployer：将BeanShell脚本部署成JBoss服务。<br />􀂄 cache-invalidation-service.xml：允许借助于JMS，而实现对EJB缓存的控制。<br />􀂄 client-deployer-service.xml：部署J2EE应用客户。<br />􀂄 ear-deployer.xml：部署J2EE EAR应用。<br />􀂄 ejb-deployer.xml：部署J2EE EJB应用。<br />􀂄 hsqldb-ds.xml：设置嵌入式Hypersonic数据库服务，并将其作为默认数据源。<br />􀂄 http-invoker.sar：通过RMI/HTTP方式访问到MBean和EJB。<br />􀂄 jboss-aop.deployer：提供AspectManagerService，并部署JBoss AOP应用。<br />􀂄 jboss-hibernate.deployer：部署Hibernate存档（HAR文件）。<br />􀂄 jboss-local-jdbc.rar和jboss-xa-jdbc.rar：集成JDBC驱动的JCA资源适配器，它们分别支持DataSource和XADataSource。但是，这并没有提供专有JCA实现。<br />􀂄 jboss-ws4ee.sar：提供J2EE Web服务支持。<br />􀂄 jbossjca-service.xml：JBoss JCA实现，使得在JBoss中部署JCA资源适配器成为可能。<br />􀂄 jbossweb-tomcat50-sar：含有嵌入式Tomcat服务的展开SAR文件。它为JBoss提供了标准的Web容器。<br />􀂄 jms：将JMS相关的服务聚集在一起，并放置在jms目录中。<br />􀂄 hsqldb-jdbc-state-service.xml：使用HSQLDB管理状态。<br />􀂄 hsqldb-jdbc2-service.xml：使用嵌入式HSQL数据库实现缓存和持久化。它还包含了JMS实现的核心服务，即DestinationManager MBean。<br />􀂄 jbossmq-destinations-service.xml：供JBoss测试套件使用的JMS Topic和Queue。<br />􀂄 jbossmq-service.xml：JMS其他服务，包括拦截器配置。<br />􀂄 jms-ds.xml：将JBoss消息实现作为默认JMS提供商。并且，它还提供JCA配置信息，以供集成JBoss JCA和JMS资源适配器使用。<br />􀂄 jms-ra.rar：资源适配器，供JCA处理JMS连接工厂使用。<br />􀂄 jbossmq-httpil.sar：提供JMS调用层，从而实现HTTP方式使用JMS。<br />􀂄 jvm-il-service.xml：配置本地JMS传输调用层，供本地JVM使用JMS。<br />􀂄 uil2-service.xml：配置JMS版本2统一调用层。这是一种可靠的、自定义的、基于Socket的传输方式。推荐在不同JVM间使用它。<br />􀂄 jmx-console.war：JMX控制台应用。前面讨论过。<br />􀂄 jmx-invoker-server.xml：为远程访问JMX MBean服务器提供支持。<br />􀂄 mail-ra.rar：为JavaMail提供资源适配器。<br />􀂄 mail-service.xml：允许应用和服务在JBoss中使用JavaMail。请注意，邮件服务器相关信息必须由用户提供。<br />􀂄 management：含有可更换管理服务的子目录。其中，包含有改进的Web控制台。<br />􀂄 monitoring-service.xml：配置警告监听器，比如控制台监听器、E_mail监听器，等等。<br />􀂄 properties-service.xml：设置JVM的全局系统属性（由System.getProperties返回）。<br />􀂄 schedule-manager-service.xml和scheduler-service.xml：定时任务服务。<br />􀂄 sqlexception-service.xml：为JDBC驱动提供标识一般性SQL异常。<br />􀂄 uuid-key-generator.sar：生成唯一的、基于UUID的键。<br />all配置提供了其他配置没有提供的其他服务，用户可以将这些服务集成到各自的服务器配置中。具体如下：<br />􀂄 cluster-service.xml：群集服务，包括JGroups集成服务、HA-JNDI、有状态会话Bean复制、CMP2缓存有效性服务。<br />􀂄 deploy-hasingleton-service.xml：HASingletonDeployer MBean。用于确保群集中只有单个节点在deploy-hasingleton目录部署了服务。<br />􀂄 deploy.last/farm-service.xml：farm群集部署服务。用于确保它在所有其他服务部署之后才部署其本身。<br />􀂄 ebxmlrr-service.xml：JAXR注册服务实现。<br />􀂄 iiop-service.xml：实现对CORBA、IIOP的支持。<br />􀂄 jbossha-httpsession.sar：遗留的HTTP会话复制服务。<br />􀂄 remoting-service.xml：还处于试验中的下一代分离式Invoker框架。<br />􀂄 snmp-adaptor.sar：将JMX通知转换成SNMP陷阱。<br />􀂄 tc5-cluster-service.xml：用于新的HTTP复制服务的TressCache配置。 <img src ="http://www.blogjava.net/wansong/aggbug/355952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:58 <a href="http://www.blogjava.net/wansong/articles/355952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> JBoss企业级应用服务平台群集指南(一) </title><link>http://www.blogjava.net/wansong/articles/355951.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355951.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355951.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355951.html</trackback:ping><description><![CDATA[<div>
<div><img src="http://blog.51cto.com/image/skin/artType03.jpg"  alt="" /> JBoss企业级应用服务平台群集指南(一) </div></div>2008-03-08 09:39:43<!--showHead end-->

<div>标签：<a href="http://blog.51cto.com/tagindex.php?keyword=jboss" target="_blank">jboss</a> <a href="http://blog.51cto.com/tagindex.php?keyword=%C8%BA%BC%AF" target="_blank">群集</a> </div>
<div lh22?>版权声明：原创作品，如需转载，请与作者联系。否则将追究法律责任。 </div><!--正文 begin-->

<div>
<div style="text-align: left; margin: 0cm -1pt 0pt 5.05pt" align="left">
<h1><span style="font-family: 宋体">1.</span><span style="font-family: 宋体">集群 </span></h1>
<div style="line-height: 150%"><span style="font-family: 宋体">&#8212;&#8212;用JBoss群集实现高可用性企业服务</span></div>
<h2><span>1.1 </span>前言</h2>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">群集系统（Clustering）允许我们在多台平行的服务器（群集节点）上运行一个应用程序。负载分布在不同的服务器上，即使其中任何一台崩溃，应用程序还是可以在其他群集节点（cluster nodes）上运行。群集对于可扩展性企业级应用程序是很关键的，因为你简单地把更多节点加入到群集系统里就可以提高性能。</span></div>
<div style="line-height: 150%; text-indent: 21pt">JBoss <span style="font-family: 宋体">应用服务器（</span>AS<span style="font-family: 宋体">）缺省支持群集系统。最简单的启动</span> JBoss <span style="font-family: 宋体">服务器群集的方法就是在同一本地网络里启动多个</span> JBoss <span style="font-family: 宋体">实例，每个实例都可以用</span> run -c all <span style="font-family: 宋体">命令来运行。这些按照</span> all <span style="font-family: 宋体">配置文件启动的实例，可以检测到对方而自动组成一个群集系统。</span></div>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">在本章的第一部分，我们将讨论</span> JBoss <span style="font-family: 宋体">群集服务的基本概念。在阅读本章后面的内容之前，先理解这些概念是很重要的。在这部分内容之后，我们将介绍怎样为特定类型的应用程序配置群集系统。</span></div>
<div style="line-height: 150%">&nbsp;</div>
<h3><span style="font-family: 宋体">1.1.1<span style="line-height: normal; font-variant: normal; font-style: normal; font-size: 7pt; font-weight: normal"  normal font-stretch: none; font-size-adjust: Roman?; New Times>&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体">群集系统的定义</span></h3>
<div style="line-height: 150%; text-indent: 21pt"><span style="font-family: 宋体">群集系统是节点（</span>node<span style="font-family: 宋体">）的集合。在</span> JBoss <span style="font-family: 宋体">群集系统里，节点是一个</span> JBoss <span style="font-family: 宋体">服务器实例。因此，为了建立一个群集，</span>JBoss <span style="font-family: 宋体">实例必须组合在一起（通称</span>"partition"<span style="font-family: 宋体">）。在同一个网络里，我们可能有不同的群集。为了区分，每个群集都必须有一个唯一的名字。</span></div>
<div style="line-height: 150%">&nbsp;</div><span style="font-family: 宋体; font-size: 10.5pt">图1.1&#8220;集群服务节点&#8221;， </span><span style="font-family: 宋体; font-size: 10.5pt">展示了网络里的</span><span style="font-size: 10.5pt"  New Times Roman?,?serif> JBoss </span><span style="font-family: 宋体; font-size: 10.5pt">服务器实例被分到三个群集系统里，有的群集系统只有一个节点。在任何时候，你都可以在群集里加入或删除节点。</span></div><span style="font-family: 宋体; font-size: 12pt" times="" new=""  roman?;="" .5pt;="" en-us;="" ar-sa;="" ar-sa=""  ?? ???? ?>
<div style="text-align: left; margin: 0.45pt 0cm 0pt" align="left"><span style="color: black; font-size: 13pt" sans-serif=""  arial?,?>&nbsp;<span style="color: black; font-size: 13pt" sans-serif=""  arial?,?><img style="width: 458px; height: 320px" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/200803/200803081204940581328.jpg" width="458" onload="if(this.width>650) this.width=650;" height=299></span></span></div>
<div style="text-align: left; margin: 0.45pt 0cm 0pt" align="left">&nbsp;</div>
<div style="margin-bottom: 0cm; margin-left: 0.18cm; margin-right: -0.04cm" align="left"><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><span style="font-family: 宋体; color: black; font-size: 9pt">图 1.1. 集群和服务节点</span><strong></strong></div>
<div style="margin-bottom: 0cm; margin-left: 0.18cm; margin-right: -0.04cm" align="left"><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/200803/200803081204940920265.jpg" onload="if(this.width>650) this.width=650;"></div></span>
<div style="text-align: left; margin: 0.45pt 0cm 0pt" align="left"><span style="color: black; font-size: 13pt" sans-serif=""  arial?,?>&nbsp;&nbsp;</span> 
<div style="line-height: 150%; margin: 0cm -1pt 0pt 5.05pt"><span style="font-family: 宋体">每个</span> JBoss <span style="font-family: 宋体">服务器实例（节点）在</span> deploy/cluster-service.xml <span style="font-family: 宋体">文件的</span> ClusterPartition MBean <span style="font-family: 宋体">里指定了它所加入的群集（也就是</span> partition<span style="font-family: 宋体">）。所有具有相同</span> ClusterPartition MBean <span style="font-family: 宋体">配置的节点加入到同一个群集系统里。因此，如果你想把同一个网络里的</span> JBoss <span style="font-family: 宋体">节点分开到两个群集里，你可以使用两个不同的</span> ClusterPartition MBean <span style="font-family: 宋体">配置，每个节点可以根据它所需要加入的群集来选择其中一个配置。如果节点启动的时候，它指定的群集不存在，这个群集将被创建。相同地，当群集系统的所有节点都被删除后，这个群集也将被删除。</span></div>
<div style="line-height: 150%; margin: 0cm -1pt 0pt 5.05pt">&nbsp;</div><span style="font-family: 宋体; font-size: 10.5pt">下例展示了标准</span><span style="font-size: 10.5pt"  New Times Roman?,?serif> JBoss AS </span><span style="font-family: 宋体; font-size: 10.5pt">发行版本里的</span><span style="font-size: 10.5pt"  New Times Roman?,?serif> MBean </span><span style="font-family: 宋体; font-size: 10.5pt">的定义。如果你在本地网络里用缺省的群集设定来启动</span><span style="font-size: 10.5pt"  New Times Roman?,?serif> JBoss </span><span style="font-family: 宋体; font-size: 10.5pt">服务器，你将得到一个叫</span><span style="font-size: 10.5pt"  New Times Roman?,?serif> DefaultPartition </span><span style="font-family: 宋体; font-size: 10.5pt">的缺省群集，它包括了所有作为节点的服务器实例。</span><span style="color: black; font-size: 13pt" sans-serif=""  arial?,?> 
<div style="text-indent: 0.85cm; margin-bottom: 0cm; margin-left: 0.18cm; margin-right: -0.21cm" align="left"><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/200803/200803081204945888875.jpg" onload="if(this.width>650) this.width=650;"></div></span>
<div style="line-height: 150%; text-indent: 21pt; margin-right: -1pt"><span style="font-family: 宋体">在这里，我们忽略了这个群集的详细的</span> JGroups <span style="font-family: 宋体">协议配置（</span>protocal configuration<span style="font-family: 宋体">）。</span>JGroups <span style="font-family: 宋体">处理节点之间底层的点到点通信，我们将在</span> <em><span style="line-height: 150%; font-family: 宋体; color: rgb(153,51,0)">Section 1, </span></em><em><span style="line-height: 150%; font-family: 宋体; color: rgb(153,51,0)">&#8220;JGroups配置&#8221;</span></em><span style="font-family: 宋体">里讨论它的配置。下面的列表展示了</span> ClusterPartition MBean <span style="font-family: 宋体">里可用的配置属性。</span></div>
<div style="line-height: 150%; text-indent: 21pt; margin-right: -1pt">&nbsp;</div>
<div style="line-height: 150%; text-indent: -21pt; margin: 0cm -1pt 0pt 26.65pt"><span style="line-height: 150%; font-family: wingdings; color: black">u&nbsp;</span><strong><span style="line-height: 150%; font-family: 宋体; color: black">PartitionName </span></strong><strong><span style="line-height: 150%; font-family: 宋体; color: black">是用来指定节点名称的可选属性。它的缺省值是 DefaultPartition。</span></strong></div>
<div style="line-height: 150%; text-indent: -21pt; margin: 0cm -1pt 0pt 26.65pt"><span style="line-height: 150%; font-family: wingdings; color: black">u&nbsp;</span><strong><span style="line-height: 150%; font-family: 宋体; color: black">NodeAddress&nbsp;</span></strong><strong><span style="line-height: 150%; font-family: 宋体; color: black">是一个可选属性，指定这个节点所绑定的IP地址。</span></strong></div>
<div style="line-height: 150%; text-indent: -21pt; margin: 0cm -1pt 0pt 26.65pt"><span style="line-height: 150%; font-family: wingdings; color: black">u&nbsp;</span><strong><span style="line-height: 150%; font-family: 宋体; color: black">DeadlockDetection </span></strong><strong><span style="line-height: 150%; font-family: 宋体; color: black">是用来通知 Jgroups 为每个请求运行消息死锁检测算法（message deadlock detection algorithms）的可选布尔值属性。它的缺省值是 false。</span></strong></div>
<div style="line-height: 150%; text-indent: -21pt; margin: 0cm -1pt 0pt 26.65pt"><span style="line-height: 150%; font-family: wingdings; color: black">u&nbsp;</span><strong><span style="line-height: 150%; font-family: 宋体; color: black">StateTransferTimeout </span></strong><strong><span style="line-height: 150%; font-family: 宋体; color: black">是用来指定跨群集的状态复制（state replication）的超时时间（以毫秒为单位）的可选属性。它的缺省值是 30000。</span></strong></div>
<div style="line-height: 150%; text-indent: -21pt; margin: 0cm -1pt 0pt 26.65pt"><span style="line-height: 150%; font-family: wingdings; color: black">u&nbsp;</span><strong><span style="line-height: 150%; font-family: 宋体; color: black">PartitionConfig </span></strong><strong><span style="line-height: 150%; font-family: 宋体; color: black">是一个用来为这个群集</span></strong><span style="line-height: 150%; font-family: 宋体; color: black">(</span><span style="line-height: 150%; font-family: 宋体; color: black">见</span><em><span style="line-height: 150%; font-family: 宋体; color: rgb(153,51,0)">Section 1, </span></em><em><span style="line-height: 150%; font-family: 宋体; color: rgb(153,51,0)">&#8220;JGroups 配置&#8221;</span></em><span style="line-height: 150%; font-family: 宋体; color: black">)</span> <strong><span style="line-height: 150%; font-family: 宋体; color: black">指定 JGroup 配置选项的元素（element）。.</span></strong></div>
<div style="line-height: 150%; margin: 0cm -1pt 0pt 5.65pt">&nbsp;</div>
<div style="line-height: 150%; text-indent: 21pt; margin: 0cm -1pt 0pt 5.65pt"><span style="line-height: 150%; font-family: 宋体; color: black">为了组成一个群集系统，它们必须有刚好一样的 PartitionName 和 ParitionConfig 元素。只改变其中一些而不是全部节点会导致群集的分离。通常来说，修改 ParitionConfig（即：地址/端口）而不是 PartitionName 来运行多个群集系统会比较容易，因为后者需要在其他配置文件里的多个地方修改。然而，在 4.0.2+ 以后的版本里，修改 PartitionName 反而更方便了。因为使用了 ${jboss.partition.name} 属性，它允许通过单个的 jboss.partition.name 系统属性来修改群集系统的名字。</span></div>
<div style="line-height: 150%; margin: 0cm -1pt 0pt 5.65pt">&nbsp;</div><span style="font-family: 宋体; color: black; font-size: 10.5pt">你可以用浏览器访问群集系统里的任何 JBoss 实例的 JMX 控制台来查看当前的群集信息（如，[url]http://hostname:8080/jmx-console/[/url]），点击 jboss:service=DefaultPartition MBean（如果这个节点没有加入 DefaultPartition，你可以改变 MBean 名来反映群集名）。CurrentView 字段会显示当前群集的 IP 地址的列表。</span><span style="color: black; font-size: 13pt" sans-serif=""  arial?,?> 
<div style="margin: 0.08cm -0.04cm 0cm 0.18cm" align="left"><img onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" + this.src)' border="0" alt="" src="http://img1.51cto.com/attachment/200803/200803081204946038046.jpg" onload="if(this.width>650) this.width=650;"></div></span></div></div><img src ="http://www.blogjava.net/wansong/aggbug/355951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:48 <a href="http://www.blogjava.net/wansong/articles/355951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz 配置(二) - Trigger </title><link>http://www.blogjava.net/wansong/articles/355948.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355948.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355948.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355948.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355948.html</trackback:ping><description><![CDATA[<h3><span style="font-size: large">触发器(Trigger)</span></h3>
<p><span style="font-size: small"><span style="font-family: Calibri">Trigger</span>是一个抽象类，<span style="font-family: Calibri">Quartz</span>提供了两个比较常用的触发器<span style="font-family: Calibri">SimpleTrigger</span>和<span style="font-family: Calibri">CronTrigger</span>。它们都是<span style="font-family: Calibri">Trigger</span>的子类</span></p>
<h4><span style="font-family: Cambria; font-size: large">SimpleTrigger</span></h4>
<p><span style="font-size: small">这是一个简单的触发器，通过它我们可以定义触发的时间，并选择性的设定重复的次数和间隔时间。它有以下常用的属性</span></p>
<p>&nbsp;</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><strong><span style="font-size: small">参数类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">String</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器名称</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">String</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器组名称</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">repeatCount&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">int</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">重复次数，注意：如果为<span style="font-family: Calibri">0</span>表示不执行，<span style="font-family: Calibri">-1</span>表示不限制次数（直到过期），默认为<span style="font-family: Calibri">0</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">repeatInterval&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">long</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">间隔时间，注意：是以毫秒为单位</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">startTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">Date</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">开始时间，默认当前时间</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 72.9pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="97">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">endTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 60.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="80">
<p><span style="font-family: Calibri"><span style="font-size: small">Date</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">过期时间，默认一直执行（直到执行次数已达到<span style="font-family: Calibri">repeatCount</span>）</span></p></td></tr></tbody></table>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">CronTrigger</span></h4>
<p><span style="font-size: small">这个触发器的功能非常强大，而且非常灵活，但需要掌握有关的<span style="font-family: Calibri">Cron</span>表达式知识</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">参数类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器名称</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">触发器组名称</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">cronEx&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">CronExpression</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">规则表达式</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">startTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Date</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">开始时间，默认当前时间</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">endTime&nbsp;</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Date</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">过期时间，默认一直执行（直到执行次数已达到<span style="font-family: Calibri">repeatCount</span>）</span></p></td></tr></tbody></table>
<p>&nbsp;</p>
<p><span style="font-size: small">触发器规则表达式配置：</span>&nbsp;</p>
<p><span style="font-size: small">格式<span style="font-family: Calibri">:</span></span></p>
<p><strong>[</strong><strong>秒<span>] [分] [小时] [日] [月] [周] [年]</span></strong></p>
<p>&nbsp;</p>
<p><span style="font-size: small">格式说明：</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-size: small">位置</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">时间域名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">是否必须</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><strong><span style="font-size: small">允许值</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong><span style="font-size: small">允许通配符</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">1</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">秒</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-59</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">2</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">分</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-59</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">3</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">小时</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">0-23</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">4</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">日</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">1-31</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * ? / L W</strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">5</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">月</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-family: Calibri; font-size: small">1-12</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">6</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">周</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">是</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-size: small"><span style="font-family: Calibri">1-7</span>或<span style="font-family: Calibri">MON-SUN</span></span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * ? / L #</strong></p></td></tr>
<tr style="height: 16.05pt">
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 47.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="64">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">7</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">年</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-size: small">否</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 127.6pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="170">
<p><span style="font-size: small"><span style="font-family: Calibri">empty</span>或<span style="font-family: Calibri">1970-2099</span></span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 94.65pt; padding-right: 5.4pt; height: 16.05pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="126">
<p><strong>, - * /</strong></p></td></tr></tbody></table>
<p>&nbsp;<span style="font-size: small">通配符说明：</span></p>
<table style="border-collapse: collapse" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: white">&nbsp;</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p><strong><span style="color: white">&nbsp;</span></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">*</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>可用在所有字段中，表示对应时间域的每一个时刻，例如，<span style="font-size: 9pt"><span style="font-family: Calibri">*</span></span>在分钟字段时，表示<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>每分钟<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">?</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只在日期和星期字段中使用，它通常指定为<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>无意义的值<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span>，相当于点位符</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">-</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>表示区间。例如 在小时上设置<span> "10-12",表示 10,11,12点都会触发</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">,</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>表示指定多个值，例如在周字段上设置<span> "MON,WED,FRI" 表示周一，周三和周五触发</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">/</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p><span style="font-size: 9pt"><span style="font-family: Calibri">x/y</span></span>表达一个等步长序列，<span style="font-size: 9pt"><span style="font-family: Calibri">x</span></span>为起始值，<span style="font-size: 9pt"><span style="font-family: Calibri">y</span></span>为增量步长值。如在分钟字段中使用<span style="font-size: 9pt"><span style="font-family: Calibri">0/15</span></span>，则表示为<span style="font-size: 9pt"><span style="font-family: Calibri">0,15,30</span></span>和<span style="font-size: 9pt"><span style="font-family: Calibri">45</span></span>秒，而<span style="font-size: 9pt"><span style="font-family: Calibri">5/15</span></span>在分钟字段中表示<span style="font-size: 9pt"><span style="font-family: Calibri">5,20,35,50</span></span>，你也可以使用<span style="font-size: 9pt"><span style="font-family: Calibri">*/y</span></span>，它等同于<span style="font-size: 9pt"><span style="font-family: Calibri">0/y</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">L</span></span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只在日期和星期字段中使用，代表<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;Last&#8221;</span></span>的意思，但它在两个字段中意思不同。<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>在日期字段中，表示这个月份的最后一天，如一月的<span style="font-size: 9pt"><span style="font-family: Calibri">31</span></span>号，非闰年二月的<span style="font-size: 9pt"><span style="font-family: Calibri">28</span></span>号；如果<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>用在星期中，则表示星期六，等同于<span style="font-size: 9pt"><span style="font-family: Calibri">7</span></span>。但是，如果<span style="font-size: 9pt"><span style="font-family: Calibri">L</span></span>出现在星期字段里，而且在前面有一个数值<span style="font-size: 9pt"><span style="font-family: Calibri">X</span></span>，则表示<span style="font-size: 9pt"><span style="font-family: Calibri">&#8220;</span></span>这个月的最后<span style="font-size: 9pt"><span style="font-family: Calibri">X</span></span>天<span style="font-size: 9pt"><span style="font-family: Calibri">&#8221;</span></span>，例如，<span style="font-size: 9pt"><span style="font-family: Calibri">6L</span></span>表示该月的最后星期五</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">W</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只能出现在日期字段里，是对前导日期的修饰，表示离该日期最近的工作日。例如<span style="font-size: 9pt"><span style="font-family: Calibri">15W</span></span>表示离该月<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号最近的工作日，如果该月<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号是星期六，则匹配<span style="font-size: 9pt"><span style="font-family: Calibri">14</span></span>号星期五；如果<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>日是星期日，则匹配<span style="font-size: 9pt"><span style="font-family: Calibri">16</span></span>号星期一；如果<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号是星期二，那结果就是<span style="font-size: 9pt"><span style="font-family: Calibri">15</span></span>号星期二。但必须注意关联的匹配日期不能够跨月，如你指定<span style="font-size: 9pt"><span style="font-family: Calibri">1W</span></span>，如果<span style="font-size: 9pt"><span style="font-family: Calibri">1</span></span>号是星期六，结果匹配的是<span style="font-size: 9pt"><span style="font-family: Calibri">3</span></span>号星期一，而非上个月最后的那天。<span style="font-size: 9pt"><span style="font-family: Calibri">W</span></span>字符串只能指定单一日期，而不能指定日期范围</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 21.35pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="28">
<p><strong><span style="color: red"><span style="font-size: small"><span style="font-family: Calibri">#</span></span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 404.75pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="540">
<p>该字符只能在星期字段中使用，表示当月某个工作日。如<span style="font-size: 9pt"><span style="font-family: Calibri">6#3</span></span>表示当月的第三个星期五<span style="font-size: 9pt"><span style="font-family: Calibri">(6</span></span>表示星期五，<span style="font-size: 9pt"><span style="font-family: Calibri">#3</span></span>表示当前的第三个<span style="font-size: 9pt"><span style="font-family: Calibri">)</span></span>，而<span style="font-size: 9pt"><span style="font-family: Calibri">4#5</span></span>表示当月的第五个星期三，假设当月没有第五个星期三，忽略不触发</p></td></tr></tbody></table>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wansong/aggbug/355948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:25 <a href="http://www.blogjava.net/wansong/articles/355948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz 简单的一个实例 </title><link>http://www.blogjava.net/wansong/articles/355949.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:25:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355949.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355949.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355949.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355949.html</trackback:ping><description><![CDATA[<div id="blog_content">
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">SimpleJob</span><span style="font-family: Calibri; font-size: small">.java</span></p>
<p>&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>com.test.job</u>;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.Job;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobExecutionContext;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobExecutionException;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>SimpleJob </u></span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">implements</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> Job{</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> execute(JobExecutionContext context)</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">throws</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> JobExecutionException {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// your business logic </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// ... </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.</span><em><span style="font-family: 'Courier New'; color: #0000c0; font-size: 10pt">out</span></em><span style="font-family: 'Courier New'; color: black; font-size: 10pt">.println(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleJob running ...."</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">TestSimpleJob.java</span></p>
<p>&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">package</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> com.test.job;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> java.text.ParseException;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.CronExpression;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.CronTrigger;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.JobDetail;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.Scheduler;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.SchedulerException;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.SimpleTrigger;</span></p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">import</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> org.quartz.impl.StdSchedulerFactory;</span></p>
<p align="left">&nbsp;</p>
<p align="left"><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> <u>TestSimpleJob </u>{</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">public</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">static</span></strong> <strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">void</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> main(String[] args){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">try</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scheduler scheduler = StdSchedulerFactory.<em>getDefaultScheduler</em>();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String jobName = </span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleJob"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String groupName = </span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"DEFAULT"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>删除作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">if</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">(scheduler.getJobDetail(jobName,groupName) != </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.deleteJob(jobName, groupName);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>作业的详细信息</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>任务名称，任务组名称，任务实现类</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; JobDetail jobDetail = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> JobDetail(jobName,groupName,SimpleJob.</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">class</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>创建简单触发器</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SimpleTrigger simpleTrigger = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> SimpleTrigger(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"simpleTrigger"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">,</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; simpleTrigger.setRepeatCount(100); </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">// </span>调用<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">100</span>次</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; simpleTrigger.setRepeatInterval(5*1000);&nbsp;</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>每<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">5</span>秒钟调用一次</p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>注册作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.scheduleJob(jobDetail, simpleTrigger);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CronTrigger cronTrigger = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> CronTrigger(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"cronTrigger"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">,</span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CronExpression cronExpression = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">null</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">;</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">try</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cronExpression = </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">new</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> CronExpression(</span><span style="font-family: 'Courier New'; color: #2a00ff; font-size: 10pt">"0 0 12 * * ?"</span><span style="font-family: 'Courier New'; color: black; font-size: 10pt">);&nbsp;</span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>每天<span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">12</span>点运行</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cronTrigger.setCronExpression(cronExpression);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 'Courier New'; color: #3f7f5f; font-size: 10pt">//</span>注册作业</p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.scheduleJob(jobDetail, cronTrigger);</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">if</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt">(! scheduler.isShutdown()){</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scheduler.start();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">catch</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> (ParseException e) {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </span><strong><span style="font-family: 'Courier New'; color: #7f0055; font-size: 10pt">catch</span></strong><span style="font-family: 'Courier New'; color: black; font-size: 10pt"> (SchedulerException e) {</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p align="left"><span style="font-family: 'Courier New'; color: black; font-size: 10pt">&nbsp;&nbsp;&nbsp; }</span></p>
<p><span style="font-family: 'Courier New'; color: black; font-size: 10pt">}</span></p>
<p>&nbsp;</p></div><img src ="http://www.blogjava.net/wansong/aggbug/355949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:25 <a href="http://www.blogjava.net/wansong/articles/355949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quarz 配置(一) - JobDetail </title><link>http://www.blogjava.net/wansong/articles/355947.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:24:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355947.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355947.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355947.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355947.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355947.html</trackback:ping><description><![CDATA[<p><span style="font-size: small"><span>Quartz是一个开源的作业调度框架，完全由<span style="font-family: Calibri">java</span></span><span>写的，你能通过它创建简单或者复杂的任务。他能提供巨大的灵活性，但又不牺牲简单性。</span></span></p>
<p>&nbsp;</p>
<h2>Quartz<span><span style="font-size: large">的核心概念</span></span>&nbsp;:调度器、触发器、作业&nbsp;</h2>
<h3><span style="font-size: large">调度器(Scheduler)</span></h3>
<p style="text-indent: 21pt"><span style="font-size: small"><span style="font-family: Calibri">Scheduler</span>负责管理<span style="font-family: Calibri">Quartz</span>的运行环境，<span style="font-family: Calibri">Quartz</span>它是基于多线程架构的，它启动的时候会初始化一套线程，这套线程会用来执行一些预置的作业。</span></p>
<p style="text-indent: 21pt"><span style="font-size: small">要创建一个作业并能够被触发调用，必须在<span style="font-family: Calibri">Scheduler</span>上面注册一个<span style="font-family: Calibri">JobDetail</span>和<span style="font-family: Calibri">Trigger</span>。</span></p>
<p style="text-indent: 21pt"><span style="font-size: small"><span style="font-family: Calibri">Scheduler</span>提携了所有<span style="font-family: Calibri">Trigger</span>和<span style="font-family: Calibri">JobDetail</span>，使它们协调工作。这些<span style="font-family: Calibri">Trigger</span>和<span style="font-family: Calibri">JobDetail</span>通过自身的<span style="font-family: Calibri">name</span>和<span style="font-family: Calibri">group</span>属性区分<span>。</span></span></p>
<p><span style="font-size: small"><span style="font-family: Calibri"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scheduler </span></span>由<span style="font-family: Calibri">SchedulerFactory</span>产生，我们可以通过以下方式获取<span style="font-family: Calibri">Scheduler</span>的实例：</span> </p>
<p><span style="font-family: Calibri; font-size: small">
<p><span style="background: #d9d9d9">&nbsp;&nbsp;&nbsp;&nbsp; //</span>从<span style="background: #d9d9d9">ServletContext</span>上下文中查找<span style="background: #d9d9d9">SchedulerFactory</span></p>
<p align="left"><span style="background: #d9d9d9">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="background: #d9d9d9">SchedulerFactory&nbsp;&nbsp; factory = (SchedulerFactory)</span></span></p>
<p style="text-align: left; text-indent: 21pt; margin: 0cm 0cm 0pt 21pt" align="left"><span style="background: #d9d9d9">ServletActionContext.getServletContext().getAttribute("org.quartz.impl.StdSchedulerFactory.KEY");</span></p>
<p>&nbsp;</p>
<p><span style="background: #d9d9d9">&nbsp; &nbsp;//</span>获取<span style="background: #d9d9d9">Scheduler</span>对象</p>
<p><span style="background: #d9d9d9">&nbsp;&nbsp; Scheduler defScheduler = factory.getScheduler();</span></p>
<h3><span style="font-size: large">作业</span></h3>
<h4><span style="font-family: Cambria; font-size: large">Job</span></h4>
<p><span>任务，其实就是一个接口。要创建一个任务，必须得实现这个接口。该接口只有一个execute</span><span>方法，任务每次被调用的时候都会执行这个execute</span><span>方法的逻辑。</span></p>
<p><span style="background: #d9d9d9">public class TestJob impletemens org.quartz.Job{</span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Override</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void execute(JobExecutionContext context) throws JobExecutionException{</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // you business logic</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // &#8230;</span></span></p>
<p><span style="background: #d9d9d9">&nbsp;<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println("########### this is testJob running&nbsp;############");</span></span></p>
<p><span style="background: #d9d9d9"><span>&nbsp;&nbsp;&nbsp;&nbsp; }</span></span></p>
<p><span style="background: #d9d9d9">}</span></p>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">JobDetail</span></h4>
<p>JobDetail 用来保存我们作业的详细信息。一个JobDetail可以有多个Trigger，但是一个Trigger只能对应一个JobDetail。下面是JobDetail的一些常用的属性和含义</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-size: small">参数名</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><strong><span style="font-size: small">类型</span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><strong><span style="font-size: small">备注</span></strong></p></td></tr>
<tr style="height: 18.55pt">
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">name</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; height: 18.55pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务的名称，必须</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">group</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务所在组，默认为<span style="font-family: Calibri">DEFAULT</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobClass</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Class</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务的实现类，必须</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">description</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">String</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">描述</span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobDataMap</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">JobDataMap</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">用来给作业提供数据支持的数据结构</span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">volatility</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">重启应用之后是否删除任务的相关信息，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">durability</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">任务完成之后是否依然保留到数据库，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #ece9d8; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">shouldRecover</span></span></strong></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Boolean</span></p></td>
<td style="border-bottom: #ece9d8; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #ece9d8; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">应用重启之后时候忽略过期任务，默认<span style="font-family: Calibri">false</span></span></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 55.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="73">
<p><strong><span style="font-family: Calibri"><span style="font-size: small">jobListeners</span></span></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 77.95pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #ece9d8; padding-top: 0cm" valign="top" width="104">
<p><span style="font-family: Calibri; font-size: small">Set</span></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #ece9d8; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 293.1pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="391">
<p><span style="font-size: small">监听器</span></p></td></tr></tbody></table></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h4><span style="font-family: Cambria; font-size: large">JobDataMap</span></h4>
<p style="text-indent: 21pt">这是一个给作业提供数据支持的数据结构，使用方法和java.util.Map一样，非常方便。当一个作业被分配给调度器时，JobDataMap实例就随之生成。</p>
<p style="text-indent: 21pt">Job有一个StatefulJob子接口，代表有状态的任务，该接口是一个没有方法的标签接口，其目的是让Quartz知道任务的类型，以便采用不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝，对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个JobDataMap实例，每次任务执行对JobDataMap所做的更改会保存下来，后面的执行可以看到这个更改，也即每次执行任务后都会对后面的执行发生影响。</p>
<p style="text-indent: 21pt">正因为这个原因，无状态的Job可以并发执行，而有状态的StatefulJob不能并发执行，这意味着如果前次的StatefulJob还没有执行完毕，下一次的任务将阻塞等待，直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素，程序往往拥有更高的复杂度，因此除非必要，应该尽量使用无状态的Job。</p>
<p style="text-indent: 21pt">如果Quartz使用了数据库持久化任务调度信息，无状态的JobDataMap仅会在Scheduler注册任务时保持一次，而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。</p>
<p>JobDataMap实例也可以与一个触发器相关联。这种情况下，对于同一作业的不同触发器，我们可以在JobDataMap中添加不同的数据，以便作业在不同时间执行时能够提供更为灵活的数据支持（学校上午放眼保健操录音第一版，下午放第二版）。</p>
<p><span style="font-family: Calibri; font-size: small">
<p>不管是有状态还是无状态的任务，在任务执行期间对Trigger的JobDataMap所做的更改都不会进行持久，也即不会对下次的执行产生影响。</p></span>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.blogjava.net/wansong/aggbug/355947.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:24 <a href="http://www.blogjava.net/wansong/articles/355947.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Quartz存储作业的两种方式 </title><link>http://www.blogjava.net/wansong/articles/355946.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:23:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355946.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355946.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355946.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355946.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355946.html</trackback:ping><description><![CDATA[<span style="font-size: small">&nbsp; 
<p><span style="font-family: Calibri">
<h1>Quartz作业存储方式 </h1></span>
<p>&nbsp;</p></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: left; line-height: 160%" align="left">Quartz提供两种基本作业存储类型。第一种类型叫做RAMJobStore，第二种类型叫做JDBC作业存储。<span> 
<p>&nbsp;</p>
<h2><span style="color: #000000; font-size: large">一、对比</span> </h2>
<p>&nbsp;</p></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<table style="border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border-bottom: #f0f0f0; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; padding-left: 5.4pt; width: 142pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left"><strong>类型</strong><strong></strong></p></td>
<td style="border-bottom: #f0f0f0; border-left: #f0f0f0; padding-bottom: 0cm; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left"><strong>优点</strong><strong></strong></p></td>
<td style="border-bottom: #f0f0f0; border-left: #f0f0f0; padding-bottom: 0cm; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt;background: #4bacc6; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left"><strong>缺点</strong><strong></strong></p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left"><strong>RAMJobStore</strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left">不要外部数据库，配置容易，运行速度快</p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt; border-top: #4bacc6 1pt solid; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left">因为调度程序信息是存储在被分配给<span style="line-height: 160%; font-family: 'ˎ̥', 'serif'; color: #222222; font-size: 9pt">JVM</span>的内存里面，所以，当应用程序停止运行时，所有调度信息将被丢失。另外因为存储到<span style="line-height: 160%; font-family: 'ˎ̥', 'serif'; color: #222222; font-size: 9pt">JVM</span>内存里面，所以可以存储多少个<span style="line-height: 160%; font-family: 'ˎ̥', 'serif'; color: #222222; font-size: 9pt">Job</span>和<span style="line-height: 160%; font-family: 'ˎ̥', 'serif'; color: #222222; font-size: 9pt">Trigger</span>将会受到限制</p></td></tr>
<tr>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #4bacc6 1pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left"><strong>JDBC</strong><strong>作业存储</strong><strong></strong></p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: #f0f0f0; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left">支持集群，因为所有的任务信息都会保存到数据库中，可以控制事物，还有就是如果应用服务器关闭或者重启，任务信息都不会丢失，并且可以恢复因服务器关闭或者重启而导致执行失败的任务</p></td>
<td style="border-bottom: #4bacc6 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; width: 142.05pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: #4bacc6 1pt solid; padding-top: 0cm" valign="top" width="189">
<p style="text-align: left; line-height: 160%" align="left">运行速度的快慢取决与连接数据库的快慢</p></td></tr></tbody></table>
<h2><span style="font-size: large">二、配置</span></h2>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">1、以下是配置是内存存储</span></p>
<p style="margin: 0cm 0cm 0pt 18pt">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">#============================================================================<br /># Configure RAMJobStore&nbsp; <br />#============================================================================<br />org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore</span></p>
<p style="margin: 0cm 0cm 0pt 18pt">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt 18pt">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt 18pt"></p>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">2、以下配置是数据库存储</span></p>
<p style="margin: 0cm 0cm 0pt 18pt">&nbsp;</p>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">#============================================================================<br /># Configure JobStore&nbsp; <br />#============================================================================</span></p>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">#===========================<br />#Configure JDBC-JobStoreTX<br />#===========================<br />org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX<br />org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.oracle.OracleDelegate<br />org.quartz.jobStore.tablePrefix = QRTZ_<br />org.quartz.jobStore.dataSource = myDS<br />org.quartz.jobStore.useProperties = false</span></p>
<p style="margin: 0cm 0cm 0pt 18pt"><span style="font-size: small">#============================<br /># Configure DataSource<br />#============================<br />org.quartz.dataSource.myDS.driver = oracle.jdbc.OracleDriver<br />org.quartz.dataSource.myDS.URL = jdbc:oracle:thin:@localhost:1521:test<br />org.quartz.dataSource.myDS.user = user<br />org.quartz.dataSource.myDS.password = password<br />org.quartz.dataSource.myDS.maxConnections = 10</span></p><img src ="http://www.blogjava.net/wansong/aggbug/355946.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:23 <a href="http://www.blogjava.net/wansong/articles/355946.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss下DataSource加密 </title><link>http://www.blogjava.net/wansong/articles/355945.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355945.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355945.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355945.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355945.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355945.html</trackback:ping><description><![CDATA[<p>1.先来看一个普通的数据源配置文件</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"><img alt="复制代码" src="http://www.blogjava.net/images/icon_copy.gif" /></a>&nbsp;<a title="收藏这段代码" onclick="code_favorites_do_favorite(this);return false;" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.blogjava.net/images/icon_star.png" /><img style="display: none" class="spinner" src="http://www.blogjava.net/images/spinner.gif"  alt="" /></a></div></div>
<ol class="dp-xml"><li><span><strong><font color="#006699"><span class="tag">&lt;?</span><span class="tag-name">xml</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">version</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1.0"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">encoding</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"UTF-8"</font></span><span class="tag"><strong><font color="#006699">?&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">datasources</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;jndi名字&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span></font></strong><span>MySqlDS</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--URL地址&nbsp;--&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">use-java-context</span><span class="tag">&gt;</span></font></strong><span>false</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">use-java-context</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span></font></strong><span>jdbc:mysql://10.16.175.137:3306/test</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;驱动&nbsp;--&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span></font></strong><span>com.mysql.jdbc.Driver</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;用户名&nbsp;--&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">user-name</span><span class="tag">&gt;</span></font></strong><span>root</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">user-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;密码&nbsp;--&gt;</span><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">password</span><span class="tag">&gt;</span></font></strong><span>123456</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">password</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">metadata</span><span class="tag">&gt;</span></font></strong><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span></font></strong><span>mySQL</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span></font></strong><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">metadata</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">datasources</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li></ol></div><pre style="display: none" class="xml" title="JBoss下DataSource加密" pre_index="0" source_url="http://tanyankai.iteye.com/blog/571483" codeable_type="Blog" codeable_id="571483" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;datasources&gt;
   &lt;local-tx-datasource&gt;
     &lt;!-- jndi名字 --&gt;
     &lt;jndi-name&gt;MySqlDS&lt;/jndi-name&gt;
     &lt;!--URL地址 --&gt; 
     &lt;use-java-context&gt;false&lt;/use-java-context&gt;
     &lt;connection-url&gt;jdbc:mysql://10.16.175.137:3306/test&lt;/connection-url&gt;
     &lt;!-- 驱动 --&gt; 
     &lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;
      &lt;!-- 用户名 --&gt; 
     &lt;user-name&gt;root&lt;/user-name&gt;
      &lt;!-- 密码 --&gt; 
    &lt;password&gt;123456&lt;/password&gt;
    &lt;exception-sorter-class-name&gt; org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter &lt;/exception-sorter-class-name&gt; 
     &lt;metadata&gt; 
        &lt;type-mapping&gt;mySQL&lt;/type-mapping&gt; 
     &lt;/metadata&gt;
   &lt;/local-tx-datasource&gt;
&lt;/datasources&gt;

</pre>
<p>&nbsp;</p>
<p>看一下这个文件,里面用户名与密码都是以明文方式存储的,这样子对系统的安全而言带来了极大的威协。所以我们要为我们这个明文的密码加一下密,这就是本文的目的. </p>
<p><br />2.说到密码加密，这里我们用到了JBoss下的一个类org.jboss.resource.security.SedureIdentityLoginModule,看看我们该如何用它来帮我们的密码加密。 <br />先看个配置数据源的例子(mysql-ds.xml)</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"><img alt="复制代码" src="http://www.blogjava.net/images/icon_copy.gif" /></a>&nbsp;<a title="收藏这段代码" onclick="code_favorites_do_favorite(this);return false;" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.blogjava.net/images/icon_star.png" /><img style="display: none" class="spinner" src="http://www.blogjava.net/images/spinner.gif"  alt="" /></a></div></div>
<ol class="dp-xml"><li><span><strong><font color="#006699"><span class="tag">&lt;?</span><span class="tag-name">xml</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">version</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1.0"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">encoding</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"UTF-8"</font></span><span class="tag"><strong><font color="#006699">?&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">datasources</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span></font></strong><span>MySqlDS</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">jndi-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">use-java-context</span><span class="tag">&gt;</span></font></strong><span>false</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">use-java-context</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span></font></strong><span>jdbc:mysql://192.168.1.91:3306/atteam</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">connection-url</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span></font></strong><span>com.mysql.jdbc.Driver</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">driver-class</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;</span><span class="comments">&lt;!--这里不用写上你的用户名与密码了，我们可以在login-config.xml里做点手脚，就OK了&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">security-domain</span><span class="tag">&gt;</span></font></strong><span>EncryptDBPassword</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">security-domain</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span></font></strong><span>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">exception-sorter-class-name</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">metadata</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span></font></strong><span>mySQL</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">type-mapping</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">metadata</span><span class="tag">&gt;</span></font></strong><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">local-tx-datasource</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">datasources</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li></ol></div><pre style="display: none" class="xml" title="JBoss下DataSource加密" pre_index="1" source_url="http://tanyankai.iteye.com/blog/571483" codeable_type="Blog" codeable_id="571483" name="code">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;datasources&gt;
&lt;local-tx-datasource&gt;
&lt;jndi-name&gt;MySqlDS&lt;/jndi-name&gt;
&lt;use-java-context&gt;false&lt;/use-java-context&gt;
&lt;connection-url&gt;jdbc:mysql://192.168.1.91:3306/atteam&lt;/connection-url&gt;
&lt;driver-class&gt;com.mysql.jdbc.Driver&lt;/driver-class&gt;
 &lt;!--这里不用写上你的用户名与密码了，我们可以在login-config.xml里做点手脚，就OK了 --&gt;
&lt;security-domain&gt;EncryptDBPassword&lt;/security-domain&gt;
&lt;exception-sorter-class-name&gt;org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter&lt;/exception-sorter-class-name&gt;
&lt;metadata&gt;
&lt;type-mapping&gt;mySQL&lt;/type-mapping&gt;
&lt;/metadata&gt; 
&lt;/local-tx-datasource&gt;
&lt;/datasources&gt;</pre>
<p>&nbsp;<br />接着我们修改server\default\conf\login-config.xml文件,加上下面这一段配置文件</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"><img alt="复制代码" src="http://www.blogjava.net/images/icon_copy.gif" /></a>&nbsp;<a title="收藏这段代码" onclick="code_favorites_do_favorite(this);return false;" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.blogjava.net/images/icon_star.png" /><img style="display: none" class="spinner" src="http://www.blogjava.net/images/spinner.gif"  alt="" /></a></div></div>
<ol class="dp-xml"><li><span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">application-policy</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"EncryptDBPassword"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span></span><span class="comments">&lt;!--这里的name应该是你在配置数据源时写的security-domain里的字符串--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">authentication</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">login-module</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">code</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.jboss.resource.security.SecureIdentityLoginModule"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">flag</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"required"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span></span><span class="comments">&lt;!--&nbsp;数据库的用户名&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">module-option</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"username"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>test</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">module-option</span><span class="tag">&gt;</span></font></strong><span>&nbsp; &nbsp;&nbsp;</span></span></li><li><span></span><span class="comments">&lt;!--数据库的密码，不过是加密过的了&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">module-option</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"password"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>64c5fd2979a86168</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">module-option</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><span class="comments">&lt;!--&nbsp;注意name等于你的数据源的jndi-name,这里是MySqlDS&nbsp;--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">module-option</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"managedConnectionFactoryName"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span class="attribute"><font color="#ff0000">jboss.jca:service</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">LocalTxCM</font></span><span>,</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">MySqlDS</font></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">module-option</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">login-module</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">authentication</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li><li><span></span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">application-policy</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li></ol></div><pre style="display: none" class="xml" title="JBoss下DataSource加密" pre_index="2" source_url="http://tanyankai.iteye.com/blog/571483" codeable_type="Blog" codeable_id="571483" name="code">&lt;application-policy name="EncryptDBPassword"&gt;
&lt;!--这里的name应该是你在配置数据源时写的security-domain里的字符串--&gt;
&lt;authentication&gt;
&lt;login-module code="org.jboss.resource.security.SecureIdentityLoginModule" flag="required"&gt;
&lt;!-- 数据库的用户名 --&gt;
&lt;module-option name="username"&gt;test&lt;/module-option&gt; 
&lt;!--数据库的密码，不过是加密过的了 --&gt;
&lt;module-option name="password"&gt;64c5fd2979a86168&lt;/module-option&gt;
&lt;!-- 注意name等于你的数据源的jndi-name,这里是MySqlDS --&gt;
&lt;module-option name="managedConnectionFactoryName"&gt;jboss.jca:service=LocalTxCM,name=MySqlDS&lt;/module-option&gt;
&lt;/login-module&gt;
&lt;/authentication&gt;
&lt;/application-policy&gt;</pre>
<p>&nbsp;3.补充一下，这个加密的密码是哪来的</p>
<p>&nbsp;</p>
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Html代码 <a title="复制代码" onclick="dp.sh.Toolbar.CopyToClipboard(this);return false;" href="#"><img alt="复制代码" src="http://www.blogjava.net/images/icon_copy.gif" /></a>&nbsp;<a title="收藏这段代码" onclick="code_favorites_do_favorite(this);return false;" href="javascript:void()"><img class="star" alt="收藏代码" src="http://www.blogjava.net/images/icon_star.png" /><img style="display: none" class="spinner" src="http://www.blogjava.net/images/spinner.gif"  alt="" /></a></div></div>
<ol class="dp-xml"><li><span>java&nbsp;-cp&nbsp;"D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\lib\jboss-jmx.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\lib\jboss-common.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\server\default\lib\jboss-jca.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\server\default\lib\jbosssx.jar"&nbsp;org.jboss.resource.security.SecureIdentityLoginModule&nbsp;123456&nbsp;Encoded&nbsp;password:&nbsp;64c5fd2979a86168&nbsp;&nbsp;</span></li></ol></div><pre style="display: none" class="html" title="JBoss下DataSource加密" pre_index="3" source_url="http://tanyankai.iteye.com/blog/571483" codeable_type="Blog" codeable_id="571483" name="code">java -cp "D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\lib\jboss-jmx.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\lib\jboss-common.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\server\default\lib\jboss-jca.jar;D:\TDdownload\jboss-4.2.0.CR1\jboss-4.2.0.CR1\server\default\lib\jbosssx.jar" org.jboss.resource.security.SecureIdentityLoginModule 123456 Encoded password: 64c5fd2979a86168
</pre>
<p>&nbsp;</p>
<p>写上你自己的路径和你要加密的密码就行了,我这里要加密的密码是123456,加密过之后就是64c5fd2979a86168</p><img src ="http://www.blogjava.net/wansong/aggbug/355945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:20 <a href="http://www.blogjava.net/wansong/articles/355945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss 内存溢出处理办法 </title><link>http://www.blogjava.net/wansong/articles/355944.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:14:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355944.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355944.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355944.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355944.html</trackback:ping><description><![CDATA[<p><strong>java.lang.OutOfMemoryError: PermGen space</strong><strong><span style="color: black; font-size: 10.5pt">，</strong></span></p>
<p><strong></strong>&nbsp;</p>
<p><strong></strong>PermGen space<span style="color: black; font-size: 10.5pt">的全称是</span>Permanent Generation space,<span style="color: black; font-size: 10.5pt">是指内存的永久保存区域。这一部分用于存放</span>Class<span style="color: black; font-size: 10.5pt">和</span>Meta<span style="color: black; font-size: 10.5pt">的信息</span>,Class<span style="color: black; font-size: 10.5pt">在被</span> Load<span style="color: black; font-size: 10.5pt">的时候被放入</span>PermGen space<span style="color: black; font-size: 10.5pt">区域，</span><br /><span style="color: black; font-size: 10.5pt">它和和存放</span>Instance<span style="color: black; font-size: 10.5pt">的</span>Heap<span style="color: black; font-size: 10.5pt">区域不同</span>,GC(Garbage Collection)<span style="color: black; font-size: 10.5pt">不会在主程序运行期对</span>PermGen space<span style="color: black; font-size: 10.5pt">进行清理，所以如果你的</span>APP<span style="color: black; font-size: 10.5pt">会</span>LOAD<span style="color: black; font-size: 10.5pt">很多</span>CLASS<span style="color: black; font-size: 10.5pt">的话</span>,<span style="color: black; font-size: 10.5pt">就很可能出现</span>PermGen space<span style="color: black; font-size: 10.5pt">错误。</span><br /><span style="color: black; font-size: 10.5pt">这种错误常见在</span>web<span style="color: black; font-size: 10.5pt">服务器对</span>JSP<span style="color: black; font-size: 10.5pt">进行</span>pre compile<span style="color: black; font-size: 10.5pt">的时候。</span> </p>
<p><strong></strong>&nbsp;</p>
<p><strong><span style="color: black; font-size: 10.5pt">改正方法，在</span></strong><strong> run.bat </strong><strong><span style="color: black; font-size: 10.5pt">中加入：</span></strong><strong>-Xms512m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m</strong> <br /></p>
<p>&nbsp;</p>
<p><span style="color: black; font-size: 10.5pt">因为项目中引用了很多的</span> jar <span style="color: black; font-size: 10.5pt">包，而这些</span> jar <span style="color: black; font-size: 10.5pt">包中的</span> class <span style="color: black; font-size: 10.5pt">信息会被</span> JBoss <span style="color: black; font-size: 10.5pt">的</span> class loader <span style="color: black; font-size: 10.5pt">加载到</span> PermGen space <span style="color: black; font-size: 10.5pt">区域，在</span> JVM <span style="color: black; font-size: 10.5pt">默认的情况下，该部分空间的大小只有</span> 4M<span style="color: black; font-size: 10.5pt">，在</span> jar <span style="color: black; font-size: 10.5pt">包非常多的情况下，显然是不够用的，所以通过</span> -XX:MaxPermSize=256m <span style="color: black; font-size: 10.5pt">指定最大值后即可解决问题。</span> </p>
<p>&nbsp;</p>
<p><span style="color: black; font-size: 10.5pt">而当出现出现</span>java.lang.OutOfMemoryError: Java heap space <span style="color: black; font-size: 10.5pt">这个异常时，通过调节</span>-Xms512m -Xmx1024m<span style="color: black; font-size: 10.5pt">这个就可以解决。</span> </p>
<p>&nbsp;</p>
<p><span style="color: black; font-size: 10.5pt">另外，这个两个参数</span> -XX:+UseParallelGC -XX:+UseParallelOldGC <span style="color: black; font-size: 10.5pt">让服务并行回收内存空间。但是，这两个参数配置上去以后，也会占用一定的内存空间。</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: small">本文转自博客 <a href="http://www.blogjava.net/fiele/archive/2009/07/27/288609.html">http://www.blogjava.net/fiele/archive/2009/07/27/288609.html</a></span></p><img src ="http://www.blogjava.net/wansong/aggbug/355944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:14 <a href="http://www.blogjava.net/wansong/articles/355944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss AS调优（四） </title><link>http://www.blogjava.net/wansong/articles/355943.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:09:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355943.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355943.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355943.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355943.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355943.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 接上一篇。瘦身（三）&nbsp;如果使用JBossMQ ，你也需要编辑server/slim/deploy/jms/jbossmq-service.xml 和变更 InterceptorLoader? XML 片段，像下面这样:&nbsp;&nbsp;Xml代码 &nbsp;&lt;mbean&nbsp;code="org.jboss.mq.server.jmx.Int...&nbsp;&nbsp;<a href='http://www.blogjava.net/wansong/articles/355943.html'>阅读全文</a><img src ="http://www.blogjava.net/wansong/aggbug/355943.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:09 <a href="http://www.blogjava.net/wansong/articles/355943.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss AS 调优（三） </title><link>http://www.blogjava.net/wansong/articles/355942.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:07:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355942.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355942.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355942.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 接上一节。瘦身（二）如果你使用通过HTTP直接连接Tomcat而不是通过Apache/mod_jk:&nbsp; 辑器打开server/slim/deploy/jbossweb-tomcat50.sar/server.xml，移除/注释下面的XML 片段:&nbsp;&nbsp;Xml代码 &nbsp;&lt;!--&nbsp;A&nbsp;AJP&nbsp;1.3&nbs...&nbsp;&nbsp;<a href='http://www.blogjava.net/wansong/articles/355942.html'>阅读全文</a><img src ="http://www.blogjava.net/wansong/aggbug/355942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:07 <a href="http://www.blogjava.net/wansong/articles/355942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss AS调优（二） </title><link>http://www.blogjava.net/wansong/articles/355941.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:05:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355941.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355941.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355941.html</trackback:ping><description><![CDATA[<div id="blog_content">
<p><span>
<p style="text-align: left; line-height: 12pt" align="left">本文转自<a href="http://xudayu.blog.51cto.com">http://xudayu.blog.51cto.com</a></p></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>&nbsp;<span>瘦身（一） </span></h2>
<p><span><strong>
<p><span>
<p align="left"><strong></strong>&nbsp;</p></span>
<p>&nbsp;</p></strong></span>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>当不使用<span>mail-service服务的时候 (J2EE 标准的 </span></strong><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail"><strong><span>JavaMail</strong></a></span><strong> </strong><strong>客户端<span>) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/mail-service.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/mail* (mail-plugin.jar, mail.jar - </span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail"><span>JavaMail</a></span> stuff) </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/activation.jar (</span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JavaMail"><span>JavaMail</a></span>使用的<span style="font-family: Calibri">Java </span>活动框架【Java Activation Framework】) </p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>当不使用缓存失效服务的时候<span> (</span></strong><span style="font-size: small"><strong>一般在集群配置里作为<span>CMP选择一个beans用与失效缓存</span></strong><strong>) </strong></span></p>
<p style="text-align: left; line-height: 12pt" align="left"><span style="font-size: small"><strong></strong></span>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span> server/slim/deloy/cache-invalidation-service.xml</span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>当不使用<span>J2EE客户端部署服务的时候(</span></strong><span style="font-size: small"><strong>这不是一个很有益的<span>J2EE规格必须服务，对于EAR application-client.xml描述符</span></strong><strong>) </strong></span></p>
<p style="text-align: left; line-height: 12pt" align="left"><span style="font-size: small"><strong></strong></span>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span> server/slim/deploy/client-deployer-service.xml </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>当不使用集成<span>HAR部署和Hibernate会话管理服务的时候 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/hibernate-deployer-service.xml (HAR support) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/jboss-hibernate.jar (HAR support) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/hibernate2.jar (Hibernate itself) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/cglib-full-2.0.1.jar (used by Hibernate to create proxies of POJOs) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/odmg-3.0.jar (由hibernate使用的一些傻瓜试的对象－关系映射行为是从一些傻瓜式的委员会来的[goofy committee]</span><span>http://www.service-architecture.com/database/articles/odmg_3_0.html</span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>不使用<span> Hypersonic的时候 (在生产环境里你可能不使用这个) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p style="text-align: left; line-height: 150%" align="left">注意在默认配置里 <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMQ"><span>JBossMQ</a></span>使用 <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=DefaultDS"><span>DefaultDS</a></span>名字同样被部署，用于为<span>Hypersonic映射. 在配置上对于其他选择的更多信息，见 </span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=ConfigJBossMQPersistence"><span>JBoss MQ Persistence Wiki pages</a></span> . </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/hsqldb-ds.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/hsqldb-plugin.jar </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/hsqldb.jar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>不使用 </strong><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossMQ"><strong><span>JBossMQ</strong></a></span><strong> </strong><strong>的时候<span>(我们的 JMS 服务器)</span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>&nbsp;</strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>the entire server/slim/deploy/jms directory </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/jbossmq.jar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>不使用<span> HTTPInvoker的时候 (</span></strong><span style="font-size: small"><strong>从<span>RMI到HTTP的隧道</span></strong><strong>)</strong></span></p>
<p style="text-align: left; line-height: 12pt" align="left"><span style="font-size: small"><strong>&nbsp;</strong></span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>the entire server/slim/deploy/http-invoker.sar 文件夹 </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>不使用<span> XA 数据源的使用 (分布式 and/or 可恢复的事务)</span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>&nbsp;</strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/jboss-xa-jdbc.rar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不需要<span>JMX-Console 然后删除它 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/jmx-console.war 或者</span>使用别的方法 <a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheJmxConsole"><span>使它安全</span></a> </p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不需要制造<span>JMX调用RMI (警告the shutdown.sh 是否这样做) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/jmx-invoker-adaptor-server.sar </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/jmx-adaptor-plugin.jar</span>&nbsp;或者你可能想正好想用<a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=SecureTheInvokers"><span>安全的 the JMX invoker-adaptor</span></a>顶替 </p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不需要<span>web-console </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/management/web-console.war </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不需要<span>JMX的JSR-77扩充 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/management/console-mgr.sar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你需要<span>web-console 或者 jsr-77 扩充的其中之一 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/management directory entirely </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不使用控制台<span>/email监控警报 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/monitoring-service.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/jboss-monitoring.jar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不通过<span>Properties Service使用富资源编辑器(JMX)或者装载properties到系统properties 里。</span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/properties-service.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/properties-plugin.jar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>此<span>scheduler-service.xml是一个例子，除非你在它的里面放入自己的东西 </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/scheduler-service.xml </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不适用<span>JBoss调度管理 (允许你安排请求依赖MBeans) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/schedule-manager-service.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/scheduler-plugin* (scheduler-plugin.jar, scheduler-plugin-example.jar) </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不需要供应商特定的<span>sql异常援助[handing] (just leave it, really) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/sqlexception-service.xml </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你既没有使用客户端事务管理，也没有缓存连接<span>(我们缓存连接来代替池，例如就JAAS-&gt;DB User 来说&#8212;－使用这个意味着你是个坏人，需要被拍击[using this means you are a bad person and need to be smacked]) .</span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/user-service.xml </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>如果你不使用<span>JBoss的UUID key生成 (大多情况下用于CMP主键生成，但是我们的数据库也同样支持的很好) </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/uuid-key-generator.sar </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/lib/autonumber-plugin.jar </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>user-service.xml </strong><strong>是一个例子 &#8211; 除非你在它里面做一些事情<span> (你自己的mbeans)，你可以移除它. </span></strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong></strong>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>server/slim/deploy/user-service.xml </span></p></div><img src ="http://www.blogjava.net/wansong/aggbug/355941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:05 <a href="http://www.blogjava.net/wansong/articles/355941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBoss AS调优（一） </title><link>http://www.blogjava.net/wansong/articles/355940.html</link><dc:creator>w@ns0ng</dc:creator><author>w@ns0ng</author><pubDate>Sun, 07 Aug 2011 05:02:00 GMT</pubDate><guid>http://www.blogjava.net/wansong/articles/355940.html</guid><wfw:comment>http://www.blogjava.net/wansong/comments/355940.html</wfw:comment><comments>http://www.blogjava.net/wansong/articles/355940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wansong/comments/commentRss/355940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wansong/services/trackbacks/355940.html</trackback:ping><description><![CDATA[<p style="text-align: left; line-height: 150%" align="left">转载： <a href="http://tanyankai.iteye.com/blog/570675">http://tanyankai.iteye.com/blog/570675</a><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBoss4Slimming"><strong><span><br /><br />JBoss4</strong><strong><span>瘦身</span></strong></a></span></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>前言 </strong></p>
<p style="text-align: left; line-height: 150%" align="left">这个建议主要是如果对<a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossAS"><span>JBossAS</a></span>进行调优和瘦身的<span>. 这个概念在多数情况是交叉的。当通过瘦身减少闲置服务线程并不能带来大的性能影响的时候，允许你使用较少的内存和资源对其他性能方便进行调整。当然它可以缩短启动时间。而且，作为一般的安全观念&#8213;&#8213;移除你不使用的服务。我们将分开两个种类: 瘦身和调优. 首先我们使用默认的配置并从那里开始瘦身(对于clustering的话题，将在以后的wiki页面进行讨论 ;-) ). 这个建议不牵扯开发者和管理角色交叉调优的区域开发者和管理角色 (应用程序调优象cache大小一样). 这主要是对于管理调优的建议. </span></p>
<p style="text-align: left; line-height: 150%" align="left">这建议将做技术上非J2EE平台兼容(3.2.6无论如何不顺从)的JBoss实例的有关的那些注意，象除去J2EE关键 服务的那样将导致JBoss 失败TCK。多数性能调优<span>/管理任务工作，在现实世界结构里，在技术上属于这个类别。</span></p>
<p style="text-align: left; line-height: 150%" align="left">假设你已经复制<span>server/default 文件夹并将它重新命名为server/slim. </span></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>调优 </strong></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>Java Virtual Machine Java</strong><strong>虚拟机</strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;对于你的机器和内存大小来调整<a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=TuneVMGarbageCollection"><span>VM<span>垃圾收集</span></a></span>或者<a href="http://java.sun.com/docs/hotspot/gc5.0/gc_tuning_5.html"><span>调整 JDK 5 </span><span>的垃圾收集</span></a><span> </p>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td style="border-bottom: #f0f0f0; border-left: #f0f0f0; background-color: transparent; border-top: #f0f0f0; border-right: #f0f0f0">
<div>
<p>&nbsp;</p></div></td></tr></tbody></table></span>
<p>&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;使用<span>64位的机器和64位的VM，以便你能使用大的heap(堆)大小，通常比2－4GB的大。64位支持在所有最新的SPARC/Solaris 寄存器运行Solaris 9 或者以后的版本是有效的, Itanium 使用 JDK 1.4, 或者在Linux x64 上使用JDK 5. </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;如果你不使用上面的最大<span>32位heap空间(2-4 GB 的heap)，不要使用 &#8211;d64. 使用64位地址需要更多的内存来做同样的工作量，并且对于应用程序不需要如此多的内存来说并不能提供更大优势。</span></p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;除了避免额外小的<span>heaps外还要避免额外大的heaps. (</span>我们不能告诉你具备什么资格，因为它取决于你正做什么). 这影响<span>generational 垃圾收集和扫描heap的总的时间. 有效的调整一个小heap是困难的 (即使你的应用程序仅仅需要使用200MB，如果你使用并行垃圾收集＋CMS，然后你将需要远高于512MB). 特大号的heaps为垃圾收集花费不必要的时间扫描内存。</span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;避开<span> Sun 1.4 VM. JDK 5 主要是在垃圾收集方面非常的好. </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;使用<span> -server 参数除了使用其他-XX:ThreadStackSize=128k (Solaris) 或者 -Xss128k (其他任何平台). 在Solaris 上 -Xss128k 什么也没有做 (你只可以设置较大的线程栈大小). 这允许你每个线程通过使用较少的内存达到创建更多线程的目的。but might result in blown stacks with extremely recursive code. 然而, 128k 栈 is still nothing to shake a stick at. </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;你真的需要明白恰当的<span>generational 垃圾收集调整和你真的已经进行了负载测试 (<span style="text-decoration: underline">OpenSTA</span></span><a href="http://wiki.jboss.org/wiki/Edit.jsp?page=OpenSTA"><span>?</a></span>, JMeter, 等等<span>) 确认是有把握的. </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;你确实将使用一个超过<span>2个处理器的多核心机器，及使用不同的平行和并行垃圾收集选择 (</span>我们谈及这先进的JBoss训练暗示伏笔) 对于最大性能和高拉机回收吞吐量<span>. 不过,你确实需要理解怎么调整才能使得垃圾收集很好的工作。JDK 5大部分是自我调整. </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;JDK 1.4的默认 <span style="text-decoration: underline"><span>NewSize</span></span><a href="http://wiki.jboss.org/wiki/Edit.jsp?page=NewSize"><span>?</a></span> 不是好的猜想<span>. 坏的经验法则: &lt; 20% 是一个好的 <span style="text-decoration: underline">NewSize</span></span><a href="http://wiki.jboss.org/wiki/Edit.jsp?page=NewSize"><span>?</a></span>. 20%以上的消费是危险的，这是<span>JDK令人讨厌的一个，能导致它psychotically运行所有满垃圾回收和从未 unsuspend 或者释放出 足够多的内存. JDK 5 似乎没有展示出这个bug，并且</span>似乎已回升更理智的默认值。 </p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>JBoss/Java on Linux</strong></p>
<p style="text-align: left; line-height: 12pt" align="left">&nbsp;<strong></strong></p>
<p style="text-align: left; line-height: 150%" align="left">如果你正在运行<span>JBoss AS在Linux服务器上，你应该看看这篇文章的作者： Andrew Oliver, Jboss事业部, Red Hat公司, 顾问 ，在 </span><a href="https://rhstack.108.redhat.com/articles/2006/09/18/java-performance-tuning-on-linux-with-andrew-oliver.html"><span>在Linux</span><span>服务器上怎么优化Jboss/Java </span></a>&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>Tomcat </strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;编辑你的<span>server/slim/jbossweb-tomcat5?.sar/server.xml 文件</span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;检查你正在使用的连接器的<span>XML文档. 例如, HTTP 连接器: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;Connector port="8080" address="${jboss.bind.address}"&nbsp;<br />maxThreads="150" minSpareThreads="25" maxSpareThreads="75"&nbsp;<br />enableLookups="false" redirectPort="8443" acceptCount="100"&nbsp;<br />connectionTimeout="20000" disableUploadTimeout="true"/&gt;</p>
<p align="left">&nbsp;</p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;你应该有多于你最大预期<span>25％(经验法则)的线程(maxThreads)来处理负载(将来一次性的并发访问) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;你应该有<span>minSpareThreads 等于恰好比你正常负载多一点</span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;你应该有<span>maxSpareThreads等于恰好比你峰值负载多一点 </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;minSpareThreads 意思是<span> "启动准备就绪, 总是保持至少这些线程来等待处理" </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;maxSpareThreads means "如果我们总是超过<span>minSpareThreads那么总是保持 maxSpareThreads 来等待处理" </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除任何不需要的值和日志。如果你不用<span>JBoss的安全，移除这个安全值 (见下面). </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;Precompile(预编译<span>) JSPs. (这个内置的编译器非常的会，它可能对于小型站点不值得做.) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;在你的<span>sever/slim/jbossweb-tomcat50.sar/conf/web.xml 里关闭开发（"development"）模式</span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>RMI</strong><strong>的远程调用 </strong></p>
<p style="text-align: left; line-height: 150%" align="left">默认情况下<span>, JBoss为进来的每个RMI请求创建一个新线程. 在一个大系统中这一般不是高效率的. 其次,它允许无限制的连接在性能或者通信峰值或者run-away 连接方面创建客户端可能是危险的。为了补救这个你应该考虑转向被集中的</span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=PooledInvokerConfig"><span>池请求</span></a>. </p>
<p align="left"><span style="font-family: Symbol; color: black; font-size: 7pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>编辑<span> server/slim/conf/standardjboss.xml </span></p>
<p align="left"><span style="font-family: Symbol; color: black; font-size: 7pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>通过改变每个XML分段读数把所有代理绑定改变成被集中的池请求：</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;invoker-mbean&gt;jboss:service=invoker,type=jrmp&lt;/invoker-mbean&gt; </p>
<p style="text-align: left; line-height: 150%" align="left">到</p>
<p style="text-align: left; line-height: 150%" align="left">&lt;invoker-mbean&gt;jboss:service=invoker,type=pooled&lt;/invoker-mbean&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">JBoss也有大部分无文件证明的<a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=PooledInvokerHA"><span>PooledInvokerHA</a></span>你可以试试。</p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>Log4j </strong></p>
<p style="text-align: left; line-height: 150%" align="left">日志在性能方面也有重要的影响<span>. 改变日志级别跟踪能给</span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossAS"><span>JBossAS</a></span> 带来蠕虫一样的速度。改变级别为<span> ERROR (或者WARN) 能引人注目的提升速度。 </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;默认情况下<span>, JBoss的日志被打印到控制台和server.log文件里并且它默认使用的日志级别是 "INFO". </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;考虑不记录到<span>System.out (你也能仍旧想改变方向以抓取JVM 错误) </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;考虑改变日志的级别为<span>ERROR. 观察JBoss的log4j配置文件的变化，你可以在其运行的时候改变这个配置。 </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;给你的<span>java class层次增加一个类别过滤器. </span></p>
<p style="text-align: left; line-height: 150%" align="left">关掉打印到控制台的日志（<span>console logging）: </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;编辑<span> server/slim/conf/log4j.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;改变下面的<span>XML 片段: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;root&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref=CONSOLE"/&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="FILE"/&gt;&nbsp;<br />&lt;/root&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">修改成 </p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;root&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="FILE"/&gt;&nbsp;<br />&lt;/root&gt; </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;然后你可以删除此片段<span>: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"&gt;&nbsp;<br />&nbsp;&lt;errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/&gt;&nbsp;<br />&nbsp;&lt;param name="Target" value="System.out"/&gt;&nbsp;<br />&nbsp;&lt;param name="Threshold" value="INFO"/&gt;&nbsp;<br />&nbsp;&lt;layout class="org.apache.log4j.PatternLayout"&gt;&nbsp;<br /><span>&nbsp;&nbsp;&nbsp; &lt;!--</span> The default pattern: Date Priority [Category] Message\n --&gt;&nbsp;<br /><span>&nbsp;&nbsp;&nbsp; </span>&lt;param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/&gt;&nbsp;<br />&nbsp;&lt;/layout&gt;&nbsp;<br />&lt;/appender&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">改变日志的级别<span>: </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;编辑 <span>server/slim/conf/log4j.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;移除<span>/注释 这些XML 片段: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;category name="org.apache"&gt;&nbsp;<br />&nbsp;&lt;priority value="INFO"/&gt;&nbsp;<br />&lt;/category&gt;&nbsp;<br />&nbsp;<br />&lt;!&#8212;极限 org.jgroups 类别为INFO --&gt;&nbsp;<br />&lt;category name="org.jgroups"&gt;&nbsp;<br />&nbsp;&lt;priority value="INFO"/&gt;&nbsp;<br />&lt;/category&gt; </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;改变这个<span>XML片段以改变root类别: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;root&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="CONSOLE"/&gt; &lt;!&#8212;你可能在前面已经移除这个--&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="FILE"/&gt;&nbsp;<br />&lt;/root&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">看上去像这样 </p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;root&gt;&nbsp;<br />&nbsp;&lt;priority value="ERROR" /&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="CONSOLE"/&gt; &lt;!--你可能在前面已经移除这个--&gt;&nbsp;<br />&nbsp;&lt;appender-ref ref="FILE"/&gt;&nbsp;<br />&lt;/root&gt;</p>
<p align="left">另外，如果你使用了<span>hibernate的话：</span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;编辑<span> server/slim/conf/log4j.xml </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;增加如下<span>XML 片段</span></p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;category name="org.hibernate" &gt; <br />&nbsp;&nbsp;&nbsp;&nbsp;&lt;priority value="INFO" /&gt; <br />&lt;/category&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">最后<span>, 在log4j中也许是最重要的事情，在<strong>你拥有的 class 结构上</strong>确保你的极限的日志级别. 假设你正在使用的log4j打算不向System.out打印任何东西. 这将大大的降低log4j的额外开销，并且允许你完全享受益处，像如果调用(log.isDebugEnabled())....如果你那么做，那么你的代码中的所有日志都将通过appender进行格式化, 这个threshold 在appender将被从日志消息中去除出去. 它能产生大量的垃圾信息。假设你的java package 以&#8220;a.b&#8221;开始的话, 在log4j.xml增加一些像这样的信息: </span></p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;!--极限a.b 类别为INFO --&gt;&nbsp;<br />&lt;category name="a.b"&gt;&nbsp;<br />&lt;priority value="INFO"/&gt;&nbsp;<br />&lt;/category&gt; </p>
<p align="left">这个可以增加到你在<span>org.apache 和 org.jboss (见上文)中找到过滤类别的同一区域. </span></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>部署扫描器（<span>Deployment Scanner ）</span></strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;部署扫描器每隔<span>5秒扫描一次，在比较慢的文件系统上尤其吃周期 (*cough* NTFS *cough*). </span></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;见下面的瘦身<span>stuff on ，怎么调整秒数以至于它发生的不那么频繁或者不全部发生。 </span></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>无状态会话<span>Beans（Stateless Session Beans ）</span></strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;EJB 1.x-2.x 无状态会话<span>beans operate with an ill-advised pooling model (required by the specification). 如果你find你需要考虑设置比默认（10）实例要多的最小线程池的大小: </span></p>
<p style="text-align: left; line-height: 150%" align="left">编辑<span> server/slim/conf/standardjboss.xml, 向下滚动: </span></p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;container-configuration&gt;&nbsp;<br />&lt;container-name&gt;Standard Stateless SessionBean&lt;/container-name&gt;&nbsp;<br />&lt;call-logging&gt;false&lt;/call-logging&gt;&nbsp;<br />&lt;invoker-proxy-binding-name&gt;stateless-rmi-invoker&lt;/invoker-proxy-binding-name&gt;&nbsp;<br />&lt;container-interceptors&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">并找到<span>: </span></p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;container-pool-conf&gt;&nbsp;<br />&lt;MaximumSize&gt;100&lt;/MaximumSize&gt;&nbsp;<br />&lt;/container-pool-conf&gt; &nbsp;<br />&lt;/container-configuration&gt;</p>
<p style="text-align: left; line-height: 150%" align="left">改变它为<span>: </span></p>
<p style="text-align: left; line-height: 12pt;background: #eeeeee" align="left">&lt;container-pool-conf&gt;&nbsp;<br />&lt;MinimumSize&gt;100&lt;/MinimumSize&gt;&nbsp;<br />&lt;MaximumSize&gt;100&lt;/MaximumSize&gt;&nbsp;<br />&lt;strictMaximumSize/&gt; <br />&lt;strictTimeout&gt;30000&lt;/strictTimeout&gt;&nbsp;<br />&lt;/container-pool-conf&gt;&nbsp;<br />&lt;/container-configuration&gt;</p>
<p align="left">&nbsp;</p>
<p style="text-align: left; line-height: 150%" align="left">在很大程度上一种服务器环境中不希望这些池增长和缩减<span>(因为它导致内存碎片，不如潜在的堆使用). 从性能上来说, nuber要足够的大以提供保证你的所有请求不阻塞的服务。 </span></p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>CMP </strong><strong>调整 </strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;读这个链接<span>: </span><a href="http://www.artima.com/forums/flat.jsp?forum=141&amp;thread=24532"><span>[url]http://www.artima.com/forums/flat.jsp?forum=141&amp;thread=24532[/url]</a></span> </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;和这个链接<span>: </span><a href="http://www.onjava.com/pub/a/onjava/2003/05/28/jboss_optimization.html"><span>[url]http://www.onjava.com/pub/a/onjava/2003/05/28/jboss_optimization.html[/url]</a></span> </p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;现在<span>ditch CMP 和使用</span><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossHibernate"><span>JBossHibernate</a></span> 代替 </p>
<p style="text-align: left; line-height: 12pt" align="left"><strong>连接池（<span>Connection Pools） </span></strong></p>
<p align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span>&nbsp;不要使用<span>XA版本，除非你真的知道你需要使用它. XA连接的性能不好. </span></p>
<p style="text-align: left; line-height: 150%" align="left"><span style="font-family: Wingdings; color: black; font-size: 10pt">l</span><span style="font-family: Wingdings; color: black; font-size: 7pt">&nbsp;&nbsp;</span>与其在可用的地方利用数据库特定的<span>"ping"支持"check-connection"(检查连接)，或者利用数据库特定驱动的fail-over支持倒不如从不checking connections. (记住并非所有的优化选项都适合你的环境，我们正在讨论的是最佳情况) 。</span></p><img src ="http://www.blogjava.net/wansong/aggbug/355940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wansong/" target="_blank">w@ns0ng</a> 2011-08-07 13:02 <a href="http://www.blogjava.net/wansong/articles/355940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>