﻿<?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-&lt;b&gt;BeanSoft's Java Blog&lt;/b&gt;</title><link>http://www.blogjava.net/beansoft/</link><description>免费电子书/视频&lt;a href="http://www.blogjava.net/beansoft/archive/2008/08/17/222589.html"&gt;《MyEclipse 6 Java 开发中文教程》&lt;/a&gt;作者刘长炯官方博客  专注于 Java 技术</description><language>zh-cn</language><lastBuildDate>Sun, 21 Mar 2010 07:50:14 GMT</lastBuildDate><pubDate>Sun, 21 Mar 2010 07:50:14 GMT</pubDate><ttl>60</ttl><item><title>BEA-000402问题解决 but the maximum number of socket reader threads allowed by the configuration is</title><link>http://www.blogjava.net/beansoft/archive/2010/03/10/315076.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 10 Mar 2010 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/03/10/315076.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/315076.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/03/10/315076.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/315076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/315076.html</trackback:ping><description><![CDATA[<p><a title="http://forums.oracle.com/forums/thread.jspa?threadID=718812" href="http://forums.oracle.com/forums/thread.jspa?threadID=718812">http://forums.oracle.com/forums/thread.jspa?threadID=718812</a></p> <p>&nbsp;</p> <p><a title="http://space.itpub.net/540962/viewspace-604234" href="http://space.itpub.net/540962/viewspace-604234">http://space.itpub.net/540962/viewspace-604234</a></p> <p>&nbsp;</p> <p>问题描述： <p>用户的WEBLOGIC是<a href="http://space.itpub.net/"><u><strong>安装</strong></u></a>在SOLARIS系统下面，版本为9.2MP3,在做压力<a href="http://space.itpub.net/"><u><strong>测试</strong></u></a>时压到50个用户应用就特别慢，weblogic反应特别慢，查看日志中有下面的信息：&lt;Warning&gt;&nbsp;&nbsp; &lt;Socket&gt;&nbsp;&nbsp; &lt;BEA-000402&gt;&nbsp;&nbsp; &lt;There&nbsp;&nbsp; are:&nbsp;&nbsp; 5&nbsp;&nbsp; active&nbsp;&nbsp; sockets,&nbsp;&nbsp; but&nbsp;&nbsp; the&nbsp;&nbsp; maximum&nbsp;&nbsp; number&nbsp;&nbsp; of&nbsp;&nbsp; socket&nbsp;&nbsp; reader&nbsp;&nbsp; threads&nbsp;&nbsp; allowed&nbsp;&nbsp; by&nbsp;&nbsp; the&nbsp;&nbsp; configuration&nbsp;&nbsp; is:&nbsp;&nbsp; 4.&nbsp;&nbsp; You&nbsp;&nbsp; may&nbsp;&nbsp; want&nbsp;&nbsp; to&nbsp;&nbsp; alter&nbsp;&nbsp; your&nbsp;&nbsp; configuration.&gt;&nbsp; <p>问题解决： <p>通过排查发现是因为weblogic <a href="http://space.itpub.net/"><u><strong>server</strong></u></a>使用的64位的JDK，但是在调用32位的性能包调导致这样的错误，通过跟用户沟通用户希望使用32位JDK，JDK改为32位后问题得到解决，压力测试到100用户效果也比较好。 </p><img src ="http://www.blogjava.net/beansoft/aggbug/315076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-03-10 17:45 <a href="http://www.blogjava.net/beansoft/archive/2010/03/10/315076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic 8 监控: wlstat, 方便监控weblogic的Sockets,jvm,jdbc,threads,session</title><link>http://www.blogjava.net/beansoft/archive/2010/03/03/314398.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 03 Mar 2010 04:29:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/03/03/314398.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/314398.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/03/03/314398.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/314398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/314398.html</trackback:ping><description><![CDATA[
		<p>WLSTAT for WLS8 演示版 
</p>
		<p>下载地址: <a title="wlstat0.2.zip" href="http://sshplus.googlecode.com/files/wlstat0.2.zip">wlstat0.2.zip</a> 73.6 KB 
</p>
		<p>推荐访问: BEA Dev2Dev 在线 <a title="http://dev2dev.weblogicfans.net/" href="http://dev2dev.weblogicfans.net/">http://dev2dev.weblogicfans.net/</a></p>
		<p>作者: BeanSoft@126.com , 2010年3月2日, <a href="http://beansoft.blogjava.net">http://beansoft.blogjava.net</a></p>
		<p>改动日志:<br />2010-03-03<br />命令行输出格式化, 移除刷屏功能, 使之跨平台(注意建议使用重定向方式工作, 避免Windows控制台挂掉);<br />加入定时功能.<br />2010-03-02<br />第一版 
</p>
		<p>很早的 dev2dev上有个监控软件 wlstat, 可以很方便的监控单个服务器的监控状况. 很可惜, 这个包无论如何也找不到下载的地方了. 没办法, 我只好自己参考 WebLogic JMX 手册做了个能监控所有服务器状况的东西. 本应用是跨平台的纯Java编写(除了这个Win版本的清屏), 如有兴趣参与测试, 请留言索取! 
</p>
		<p>此版本暂为Win版本, 客户端只在Win下测试过, JVM 版本为 SUN JDK 和 BEA JRockit,服务器端可以为 Win, Linux, Solaris 等不限. 
</p>
		<p>监控 WebLogic 8 集群中所有Server的关键运行参数并输出到CSV日志文件中和实时控制台上, 默认两秒钟刷新一次, 便于日后复查及使用Excel生成监控报表, 支持中英文双语界面. 欢迎反馈宝贵意见. 
</p>
		<p>图形界面实时图表版本正在开发中. 
</p>
		<p>监控的属性列表及输出如下所示:<br />          时间 |         实例名 |           端口 |           状态 |       堆最大值 |         当前堆 |       堆增加值 |         套接字 |     待处理请求 |      吞吐量/秒 |       闲置线程 |   JDBC最大容量 |   JDBC当前容量 |   JDBC总连接数 |         会话数 | 会话数最高纪录 |       总会话数 | <br />        Time |       Server |         Port |        State |      HeapMax |     HeapUsed |    HeapGrown |        Socks |  PendRequest |  Request/Sec |   IdleThread |      JDBCMax |      JDBCCur |    JDBCTotal |   SessionCur |  SessionHigh | SessionTotal | 
</p>
		<p>  3-3 12:20:17 |       myserver |           7001 |        RUNNING |         32576K |         20090K |         20090K |              1 |              0 |              3 |             15 |             30 |              2 |              2 |              0 |              0 |              0 | <br />  3-3 12:20:17 |   new_Server_1 |           7002 |       SHUTDOWN |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 |              0 | 
</p>
		<p>运行说明:<br />1. 修改 classes/jndi.properties, 指向您自己的 WebLogic 服务器地址(建议指向 Admin)<br />2. 修改 run.bat 中的 JDK 版本路径和weblogic.jar路径, Linux/Unix版本请修改 run.sh<br />3. 运行 run.bat/run.sh 即可, run_en.bat/run_en.sh 则是英文版.<br />4. wlstat.csv 可使用 Excel 打开后制作图表<br />5. view_log.bat/view_log.sh 可跟踪 wlstat.csv文件内容 
</p>
		<p>启动参数说明: -t 5000 为指定5秒刷新一次数据, 例如修改 run.bat :<br />%J2SE14%\bin\java -Duser.language=zh -cp ./classes;E:\bea\weblogic81\server\lib\weblogic.jar Main -t 5000 
</p>
		<p>截图: 
</p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/WebLogic8wlstatweblogicSocketsjvmjdbcthr_AD43/wlstat_2.png">
						<img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="wlstat" border="0" alt="wlstat" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/WebLogic8wlstatweblogicSocketsjvmjdbcthr_AD43/wlstat_thumb.png" width="640" height="33" />
				</a>
		</p>
		<p>由于列太多, 大家可以改控制台的字体和列宽来看, 就不会折行了, 如下所示:<br /> <img alt="2010-03-03_101732.png" src="http://www.weblogicfans.net/attachments/month_1003/10030311218e04d27678ee2b50.png" width="379" /></p>
		<p> <img alt="2010-03-03_101813.png" src="http://www.weblogicfans.net/attachments/month_1003/1003031121257c5ab6da280a7e.png" width="379" /></p>
		<p>
		</p>
		<p>图形界面版预览(未发布): </p>
		<p> <img alt="2010-02-25_173450.gif" src="http://www.weblogicfans.net/attachments/month_1003/1003021352e9aabf45d113fbed.gif" width="600" /></p>
<img src ="http://www.blogjava.net/beansoft/aggbug/314398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-03-03 12:29 <a href="http://www.blogjava.net/beansoft/archive/2010/03/03/314398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转: ./startWebLogic.sh启动失败，提示Error initializing Embedded LDAP Server错误</title><link>http://www.blogjava.net/beansoft/archive/2010/02/22/313626.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 22 Feb 2010 06:42:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/02/22/313626.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/313626.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/02/22/313626.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/313626.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/313626.html</trackback:ping><description><![CDATA[<p><a href="http://guanjianfeng.com/archives/817">http://guanjianfeng.com/archives/817</a></p> <p>&nbsp;</p> <p>AIX 5.3 环境下建的Weblogic 8.1.6，在测试期间，之前./startWebLogic.sh一直可以启动，但今天再启动机器运行时就不正常了，显示如下错误信息：  <blockquote> <p>&lt;Mar 1, 2009 2:18:19 PM GMT+08:00&gt; &lt;Emergency&gt; &lt;WebLogicServer&gt;<br>&lt;BEA-000342&gt;&lt;Unable to initialize the server: weblogic.server.<br>ServiceFailureException: Error initializing Embedded LDAP Server<br>- with nested exception:<br>[java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot]&gt;<br>*************************************************************<br>The WebLogic Server did not start up properly.<br>Exception raised: ‘weblogic.server.ServiceFailureException:<br>Error initializing Embedded LDAP Server – with nested exception:<br>[java.lang.ClassCastException: com.octetstring.vde.backend.<br>BackendRoot]‘Reason: weblogic.server.ServiceFailureException:<br>Error initializing Embedded LDAP Server - with nested exception:<br>[java.lang.ClassCastException: com.octetstring.vde.backend.BackendRoot]<br>*************************************************************</p></blockquote> <p>搜索资料后发现，是有人用root用户启动过./startWebLogic.sh，导致EmbeddedLDAP.tran文件的属性为root:system，这样再用weblogic用户去启动WebLogic时该文件就没有权限读写了。如下图：  <p><img style="border-right-width: 0px; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="weblogic222" border="0" alt="weblogic222" src="http://guanjianfeng.com/wp-content/uploads/2009/03/weblogic222.gif" width="533" height="171">  <p>将EmbeddedLDAP.tran文件权限改回weblogic:bea，恢复正常，可以启动WebLogic。  <blockquote> <p>#cd /weblogic_home/AdminServer/data/ldap/ldapfiles<br>#chown weblogic:bea EmbeddedLDAP.tran</p></blockquote><img src ="http://www.blogjava.net/beansoft/aggbug/313626.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-02-22 14:42 <a href="http://www.blogjava.net/beansoft/archive/2010/02/22/313626.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Firefox无须解压缩直接浏览jar/zip文件中的javadoc或html文件及目录</title><link>http://www.blogjava.net/beansoft/archive/2010/02/13/312845.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 13 Feb 2010 11:01:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/02/13/312845.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/312845.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/02/13/312845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/312845.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/312845.html</trackback:ping><description><![CDATA[<p>使用Firefox无须解压缩直接浏览jar/zip文件中的javadoc或html文件</p> <p>&nbsp;</p> <p>经测试只有Firefox支持此用法, 再也不用解压缩超大的文档压缩包来看文档了!</p> <p>地址栏输入: jar:file:///C:/xxxx.zip!/javadocs/index.html</p> <p>即可.</p> <p>&nbsp;</p> <p>如果直接输入ZIP文件地址或者是目录, 那么Firefox会把压缩文件中的目录和文件列表打开, 如下图所示:</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Firefoxjarzipjavadochtml_10B2B/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Firefoxjarzipjavadochtml_10B2B/image_thumb.png" width="800" height="220"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Firefoxjarzipjavadochtml_10B2B/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Firefoxjarzipjavadochtml_10B2B/image_thumb_1.png" width="764" height="222"></a> </p> <p>&nbsp;</p> <p>相关资料来源: <a title="http://jetbrains.net/jira/browse/IDEA-21454?disableRedirect" href="http://jetbrains.net/jira/browse/IDEA-21454?disableRedirect">http://jetbrains.net/jira/browse/IDEA-21454?disableRedirect</a></p><img src ="http://www.blogjava.net/beansoft/aggbug/312845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-02-13 19:01 <a href="http://www.blogjava.net/beansoft/archive/2010/02/13/312845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle字符串拼接</title><link>http://www.blogjava.net/beansoft/archive/2010/02/01/311538.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 01 Feb 2010 10:39:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/02/01/311538.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/311538.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/02/01/311538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/311538.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/311538.html</trackback:ping><description><![CDATA[<p>使用 || 即可进行连续拼接.</p> <p>select 'public static final int ' || NAME || ' = ' || ID || ';'&nbsp; from T_USER order by ID</p><img src ="http://www.blogjava.net/beansoft/aggbug/311538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-02-01 18:39 <a href="http://www.blogjava.net/beansoft/archive/2010/02/01/311538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic各个版本对Spring的支持程度</title><link>http://www.blogjava.net/beansoft/archive/2010/01/25/310714.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 25 Jan 2010 04:15:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/25/310714.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/310714.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/25/310714.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/310714.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/310714.html</trackback:ping><description><![CDATA[<p>现在很多人在使用SSH架构(Spring, Struts, Hibernate)开发, Tomcat 上开发完了, 认为往WebLogic上一放, 就可以正常的运行. 然而实际情况并非这么简单. <p>首先是JDK支持问题, Tomcat 5.0 开始都支持 Java 5和 Java EE 5, 但 WebLogic 8 只支持 JDK 1.4, J2EE 1.3; WebLogic 9 之后才能支持 Java 5, J2EE 1.4; WebLogic 10 支持Java 6, Java EE 5. <p>然后我们在看看 WebLogic 官方的说法: <p>WebLogic 一直大力支持开源项目, 认证的Spring 版本如下: <p>Spring 1.2.0 WebLogic 8 <p>Spring 1.2.5 WebLogic 9 <p>Spring 2.0.1 WebLogic 10 <p>讲了这么多, 是什么意思呢? 那就是您使用SSH架构的时候, 最好看看 WebLogic 最多支持 Spring 多少, 还有 JDK 版本, 否则出了问题, 相对来说您只能去改Spring源码才能解决问题了, 而不是简单的改一下你的应用配置就能搞定. 另外一个建议就是不要搞什么都用最新版, 因为老版本用的人多, 相对来说要稳定很多, 所以不要一看Spring升级了你也跟着升级, 这在WebLogic上是行不通的.</p><img src ="http://www.blogjava.net/beansoft/aggbug/310714.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-25 12:15 <a href="http://www.blogjava.net/beansoft/archive/2010/01/25/310714.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>微软发布所有版本IE均受影响的挂马漏洞补丁,建议所有人更新</title><link>http://www.blogjava.net/beansoft/archive/2010/01/23/310596.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 23 Jan 2010 06:12:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/23/310596.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/310596.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/23/310596.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/310596.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/310596.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Windows 2000: Internet Explorer 5.01 Service Pack 4 Internet Explorer 6 Service Pack 1  Windows XP: Internet Explorer 6 Internet Explorer 6 (64-bit) Internet Explorer 7 Internet Explorer 7 (64-bit) In...&nbsp;&nbsp;<a href='http://www.blogjava.net/beansoft/archive/2010/01/23/310596.html'>阅读全文</a><img src ="http://www.blogjava.net/beansoft/aggbug/310596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-23 14:12 <a href="http://www.blogjava.net/beansoft/archive/2010/01/23/310596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:Oracle varchar, varchar2的区别</title><link>http://www.blogjava.net/beansoft/archive/2010/01/22/310453.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 21 Jan 2010 16:29:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/22/310453.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/310453.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/22/310453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/310453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/310453.html</trackback:ping><description><![CDATA[<p><a title="http://blog.csdn.net/sunny110/archive/2006/05/10/721766.aspx" href="http://blog.csdn.net/sunny110/archive/2006/05/10/721766.aspx">http://blog.csdn.net/sunny110/archive/2006/05/10/721766.aspx</a> <p>varchar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 存放固定长度的字符数据，最长2000个字符。 <p>varchar2&nbsp;&nbsp;&nbsp; 存放可变长字符数据，最大长度为4000字符。，最大長度為4000字符。 <p>varchar&nbsp;&nbsp;&nbsp;&nbsp; 是标准sql提供的数据类型。 <p>varchar2&nbsp; 是oracle提供的独特的数据类型。 <p>oracle保证在任何版本中该数据类型向上和向下兼容，但不保证varchar。 <p>总之，如果想新版本的数据库兼容就不要用varchar,如果想和其他数据库兼容就不要用varchar2。 <p><a href="http://www.cnblogs.com/boulder19830907/archive/2007/11/09/954104.html">char、varchar和varchar2的区别(转)</a> <p>&nbsp; <h4> <p>区别： <br>1．CHAR的长度是固定的，而VARCHAR2的长度是可以变化的， 比如，存储字符串“abc"，对于CHAR (20)，表示你存储的字符将占20个字节(包括17个空字符)，而同样的VARCHAR2 (20)则只占用3个字节的长度，20只是最大值，当你存储的字符小于20时，按实际长度存储。 <br>2．CHAR的效率比VARCHAR2的效率稍高。 <br>3．目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串，但是oracle不这样做，尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2，这个类型不是一个标准的VARCHAR，它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力，Oracle建议使用VARCHAR2而不是VARCHAR。 <br>何时该用CHAR，何时该用varchar2？ <br>CHAR与VARCHAR2是一对矛盾的统一体，两者是互补的关系. <br>VARCHAR2比CHAR节省空间，在效率上比CHAR会稍微差一些，即要想获得效率，就必须牺牲一定的空间，这也就是我们在数据库设计上常说的‘以空间换效率’。 <br>VARCHAR2虽然比CHAR节省空间，但是如果一个VARCHAR2列经常被修改，而且每次被修改的数据的长度不同，这会引起‘行迁移’(Row Migration)现象，而这造成多余的I/O，是数据库设计和调整中要尽力避免的，在这种情况下用CHAR代替VARCHAR2会更好一些。</h4> <p>char中还会自动补齐空格，因为你insert到一个char字段自动补充了空格的,但是select 后空格没有删除</p><img src ="http://www.blogjava.net/beansoft/aggbug/310453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-22 00:29 <a href="http://www.blogjava.net/beansoft/archive/2010/01/22/310453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Firefox 3.6 正式版于今天正式(2010-01-22)发布</title><link>http://www.blogjava.net/beansoft/archive/2010/01/21/310440.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 21 Jan 2010 14:03:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/21/310440.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/310440.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/21/310440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/310440.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/310440.html</trackback:ping><description><![CDATA[<p><img alt="http://img.photobucket.com/albums/v374/vishaal_here/Firefox.png" src="http://img.photobucket.com/albums/v374/vishaal_here/Firefox.png"> <p>&nbsp; <p>中文版下载地址:</p> <p><a title="http://download.mozilla.org/?product=firefox-3.6&amp;os=win&amp;lang=zh-CN" href="http://download.mozilla.org/?product=firefox-3.6&amp;os=win&amp;lang=zh-CN">http://download.mozilla.org/?product=firefox-3.6&amp;os=win&amp;lang=zh-CN</a></p> <p><a href="http://download.mozilla.org/?product=firefox-3.6&amp;os=osx&amp;lang=zh-CN">http://download.mozilla.org/?product=firefox-3.6&amp;os=osx&amp;lang=zh-CN</a></p> <p><a href="http://download.mozilla.org/?product=firefox-3.6&amp;os=linux&amp;lang=zh-CN">http://download.mozilla.org/?product=firefox-3.6&amp;os=linux&amp;lang=zh-CN</a> </p> <p>&nbsp;</p> <p>英文版:</p> <blockquote> <p><strong><a href="http://download.mozilla.org/?product=firefox-3.6&amp;os=win&amp;lang=en-US">Windows</a></strong> <p><strong><a href="http://download.mozilla.org/?product=firefox-3.6&amp;os=osx&amp;lang=en-US">Mac OS X</a></strong> <p><strong><a href="http://download.mozilla.org/?product=firefox-3.6&amp;os=linux&amp;lang=en-US">Linux</a></strong>﻿</p></blockquote> <p>原文: <a href="http://www.askvg.com/mozilla-firefox-3-6-final-version-available-for-download/">Mozilla Firefox 3.6 Final Version Available for Download</a><img src ="http://www.blogjava.net/beansoft/aggbug/310440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-21 22:03 <a href="http://www.blogjava.net/beansoft/archive/2010/01/21/310440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2极速表单验证开源框架发布(MIT许可)</title><link>http://www.blogjava.net/beansoft/archive/2010/01/20/310199.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 20 Jan 2010 03:30:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/20/310199.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/310199.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/20/310199.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/310199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/310199.html</trackback:ping><description><![CDATA[
		<p>
				<img alt="Logo" src="http://code.google.com/p/struts-plus/logo?logo_id=1263898530" />  <a title="http://code.google.com/p/struts-plus/" href="http://code.google.com/p/struts-plus/">http://code.google.com/p/struts-plus/</a></p>
		<p>
		</p>
		<p>
		</p>
		<p>完整说明文档请下载: <a title="http://struts-plus.googlecode.com/files/Struts2QuickValidation.pdf" href="http://struts-plus.googlecode.com/files/Struts2QuickValidation.pdf">http://struts-plus.googlecode.com/files/Struts2QuickValidation.pdf</a>  
</p>
		<p>效果演示: 
</p>
		<p>
				<img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Struts2MIT_A069/clip_image002_3.jpg" width="494" height="578" />
		</p>
		<p>
		</p>
		<p>Struts Plus, Struts + 项目, 计划包含极速表单验证框架, 权限管理等子模块. 目前主要关注于 Struts 2 方面的生产力提高项目, 主要基于注解方式进行增强, 并提供抽象层, 使项目仅仅依赖于 Struts 本身, 而不需要强制您使用某种业务层和数据层框架. 项目的许可采用MIT协议, 您可自由的使用本项目, 但需遵循MIT协议保留本人版权签名及MIT协议本身. 
</p>
		<p>本文主要讲述子模块Struts 2 极速表单验证框架(Struts 2 QuickFormValidation). 
</p>
		<p>本验证机制基于表达式和注解(Annotation), 验证规则的扩展通过实现验证接口进行. 
</p>
		<p>
				<b>诞生历史:</b>
		</p>
		<p>
				<b>
				</b>
		</p>
		<p>2009年12月18日晚提出框架原理, 并于2009年12月19日晨提出实现思路, 最终框架核心初步完成于2009年12月20日(周日), 2010-01-20日整理发布. 
</p>
		<p>在项目的开发中, 表单验证需要用去开发者大量的时间, 尤其是为了保证前后台的验证规则一致时, 更是需要大量的人力物力. 虽然Struts 2本身的验证框架可以保证前后台一致, 但在使用和整合方式上, 需要编写大量的Validation XML文件, 费力费时容易出错, 尤其是实际开发中需要反复调整各种验证规则及其组合, 这时就更加困难; 扩展Struts 2的验证框架更是需要比较繁琐的步骤. 针对这些挑战, 笔者试图提供一种简便易用的方式来进行表单验证, 即基于Java注解和验证规则表达式. 
</p>
		<p>如下面的代码即可实现如下的验证要求: 1) 用户名不能为空, 最小长度5, 最大长度10, 只能输入英文字母; 2) 年龄字段只能输入数字, 最小值为18, 最大值为100; 验证失败时, 转向input页面并显示出错信息: ${validationErrors}. 
</p>
		<table border="1" cellspacing="0" cellpadding="0">
				<tbody>
						<tr>
								<td valign="top" width="568">
										<p>@FormValidator(input="form_tag", value="user.name,用户名,required min-length-5 max-length-10 validate-alpha;" + 
</p>
										<p>"age,年龄,validate-digits min-value-18 max-value-100;") 
</p>
										<p>
												<b>public</b> String form_tag() <b>throws</b> Exception { 
</p>
										<p>
												<b>return</b>
												<i>SUCCESS</i>; 
</p>
										<p>}</p>
								</td>
						</tr>
				</tbody>
		</table>
		<ul>
				<li>
						<a name="子模块1:Struts_2_极速表单验证框架(已推出)">最快速的后台表单验证框架</a>
				</li>
				<li>简洁,快速的验证语法 
</li>
				<li>无需编写验证提示信息 
</li>
				<li>错误消息在指定地方显示 
</li>
				<li>支持组合验证 
</li>
				<li>易于扩展 
</li>
				<li>基于标准的Java Annotation添加验证,易于和现有项目的无缝集成 
</li>
				<li>特殊应用场景支持,如:密码确认,结束日期必须大于开始日期 
</li>
				<li>支持前后台一致的验证规则</li>
		</ul>
		<p>本框架主要是为了和前台基于JavaScript的开源验证框架RapidValidation(<a href="http://code.google.com/p/rapid-validation/">http://code.google.com/p/rapid-validation/</a> )使用统一的验证规则, 最大限度的减少重复的后台验证代码, 使用方式简便, 扩展方便. 
</p>
		<p>本框架依赖于: 
</p>
		<p>l Struts 2 
</p>
		<p>l Java 5或者更高版本 
</p>
		<p>
		</p>
		<p>…. 
</p>
		<h3>
				<a name="_Toc251749754">1 下载本项目</a>
		</h3>
		<p>您可访问<a href="http://code.google.com/p/struts-plus/downloads/list">http://code.google.com/p/struts-plus/downloads/list</a> 来获取最新源代码包 
</p>
		<table border="1" cellspacing="0" cellpadding="0">
				<tbody>
						<tr>
								<td valign="top">
										<p>
												<b>文件名</b>
												<b>
												</b>
										</p>
								</td>
								<td valign="top" width="41%">
										<p>
												<b>说明</b>
												<b>
												</b>
										</p>
								</td>
								<td valign="top">
										<p>
												<b>大小</b>
												<b>
												</b>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top">
										<p>
												<u>
														<a href="http://struts-plus.googlecode.com/files/struts2-quickvalidation-plugin-1.0-src.jar">struts2-quickvalidation-plugin-1.0-src.jar </a>
												</u>
										</p>
								</td>
								<td valign="top" width="41%">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-plugin-1.0-src.jar&amp;can=2&amp;q=">Struts 2 QuickFormValidation 1.0 sources 源码 </a>
												<a href="http://code.google.com/p/struts-plus/downloads/list?q=label:Featured">Featured</a>
										</p>
								</td>
								<td valign="top">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-plugin-1.0-src.jar&amp;can=2&amp;q=">26.8 KB </a>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top">
										<p>
												<u>
														<a href="http://struts-plus.googlecode.com/files/struts2-quickvalidation-plugin-1.0.jar">struts2-quickvalidation-plugin-1.0.jar </a>
												</u>
										</p>
								</td>
								<td valign="top" width="41%">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-plugin-1.0.jar&amp;can=2&amp;q=">Struts 2 QuickFormValidation 1.0 jar </a>
												<a href="http://code.google.com/p/struts-plus/downloads/list?q=label:Featured">Featured</a>
										</p>
								</td>
								<td valign="top">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-plugin-1.0.jar&amp;can=2&amp;q=">26.8 KB </a>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top">
										<p>
												<u>
														<a href="http://struts-plus.googlecode.com/files/struts2-quickvalidation-demo.war">struts2-quickvalidation-demo.war </a>
												</u>
										</p>
								</td>
								<td valign="top" width="41%">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-demo.war&amp;can=2&amp;q=">演示war包,部署至Tomcat6运行 </a>
												<a href="http://code.google.com/p/struts-plus/downloads/list?q=label:Featured">Featured</a>
										</p>
								</td>
								<td valign="top">
										<p>
												<a href="http://code.google.com/p/struts-plus/downloads/detail?name=struts2-quickvalidation-demo.war&amp;can=2&amp;q=">3.4 MB </a>
										</p>
								</td>
						</tr>
						<tr>
								<td valign="top">
										<p>
												<a href="http://struts-plus.googlecode.com/files/Javascript_RapidValidation.pdf">Javascript_RapidValidation.pdf</a>
										</p>
								</td>
								<td valign="top" width="41%">
										<p>JavaScript Rapid Validation框架的详细使用及规则说明文档(转载)</p>
								</td>
								<td valign="top">
										<p>176KB</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>
		</p>
		<h3>
				<a name="_Toc251749755">1 演示应用</a>
		</h3>
		<p>可下载示例应用来体验Struts极速验证框架, 下载地址为: 
</p>
		<p>
				<a href="http://struts-plus.googlecode.com/files/struts2-quickvalidation-demo.war">http://struts-plus.googlecode.com/files/struts2-quickvalidation-demo.war</a> . 放入Tomcat后即可查看运行效果. 您可以本demo应用为基础快速的进行开发. 
</p>
		<p>本演示包含三个内容: 
</p>
		<p>纯后台表单验证 
</p>
		<p>前后台一致表单验证(前台验证基于RaplidValidation) 
</p>
		<p>前后台一致表单验证(Struts 2 Form 标签) 
</p>
		<p>本war包中的唯一的.java文件源码如下: 
</p>
		<table border="1" cellspacing="0" cellpadding="0">
				<tbody>
						<tr>
								<td valign="top" width="568">
										<p>
												<b>package</b> actions; 
</p>
										<p>
												<b>import</b> com.opensymphony.xwork2.ActionSupport; 
</p>
										<p>
												<b>import</b> common.validation.FormValidator; 
</p>
										<p>
												<b>public</b>
												<b>class</b> HelloWorldAction <b>extends</b> ActionSupport { 
</p>
										<p>// 或者implements Action { 
</p>
										<p>@FormValidator(input="form", value="user.name,用户名,required min-length-5 max-length-10 validate-alpha;" + 
</p>
										<p>"age,年龄,validate-digits min-value-18 max-value-100;" + 
</p>
										<p>"password,密码,required;" + 
</p>
										<p>"password2,重复密码,required equals-password-原始密码;" + 
</p>
										<p>"email,,validate-email;" + 
</p>
										<p>"gender,性别,validate-one-required;" + 
</p>
										<p>"ip,,validate-ip;" + 
</p>
										<p>"date,生日,validate-date;" + 
</p>
										<p>"num1,数字1,validate-number;" + 
</p>
										<p>"num2,数字2,validate-number less-than-num1-数字1;" + 
</p>
										<p>"float,数字范围,float-range-1-10;" + 
</p>
										<p>"address,地址,validate-chinese;" + 
</p>
										<p>"zip,邮编,validate-zip;" + 
</p>
										<p>"id_num,身份证,validate-id") 
</p>
										<p>
												<b>public</b> String form() <b>throws</b> Exception { 
</p>
										<p>
												<b>return</b>
												<i>SUCCESS</i>; 
</p>
										<p>} 
</p>
										<p>@FormValidator(input="form_js", value="user.name,用户名,required min-length-5 max-length-10 validate-alpha;" + 
</p>
										<p>"age,年龄,validate-digits min-value-18 max-value-100;" + 
</p>
										<p>"password,密码,required;" + 
</p>
										<p>"password2,重复密码,required equals-password-原始密码;" + 
</p>
										<p>"email,,validate-email;" + 
</p>
										<p>"gender,性别,validate-one-required;" + 
</p>
										<p>"ip,,validate-ip;" + 
</p>
										<p>"date,生日,validate-date;" + 
</p>
										<p>"num1,数字1,validate-number;" + 
</p>
										<p>"num2,数字2,validate-number less-than-num1-数字1;" + 
</p>
										<p>"float,数字范围,float-range-1-10;" + 
</p>
										<p>"address,地址,validate-chinese;" + 
</p>
										<p>"zip,邮编,validate-zip;" + 
</p>
										<p>"id_num,身份证,validate-id") 
</p>
										<p>
												<b>public</b> String form_js() <b>throws</b> Exception { 
</p>
										<p>
												<b>return</b>
												<i>SUCCESS</i>; 
</p>
										<p>} 
</p>
										<p>@FormValidator(input="form_tag", value="user.name,用户名,required min-length-5 max-length-10 validate-alpha;" + 
</p>
										<p>"age,年龄,validate-digits min-value-18 max-value-100;") 
</p>
										<p>
												<b>public</b> String form_tag() <b>throws</b> Exception { 
</p>
										<p>
												<b>return</b>
												<i>SUCCESS</i>; 
</p>
										<p>} 
</p>
										<p>}</p>
								</td>
						</tr>
				</tbody>
		</table>
		<p>下面是三个演示的效果: 
</p>
		<p>
				<img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Struts2MIT_A069/clip_image001_3.jpg" width="563" height="647" />
		</p>
		<p>
		</p>
		<p>
				<img style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title="clip_image003" border="0" alt="clip_image003" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Struts2MIT_A069/clip_image003_3.jpg" width="520" height="302" />
		</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/310199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-20 11:30 <a href="http://www.blogjava.net/beansoft/archive/2010/01/20/310199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2010-1-12 百度被黑 是时候告别充斥广告的百度了</title><link>http://www.blogjava.net/beansoft/archive/2010/01/12/309097.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 12 Jan 2010 01:52:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/12/309097.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/309097.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/12/309097.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/309097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/309097.html</trackback:ping><description><![CDATA[<p>现在时间是: 9:51 <a href="http://www.baidu.com">www.baidu.com</a> 依然无法访问 <p>今天早上7时许，百度出现访问中断的情况，查询域名baidu.com的WHOIS信息后发现百度域名出现不可理解的问题。目前问题并未解决，百度也并没有对此发表回应。<br><strong>目前Baidu.com的DNS服务器被更换，同时主域名已经被解析到一个荷兰的IP，并且访问百度旗下子域名会被跳转到雅虎的错误页面，WHOIS数据也正在不断被刷新中。</strong><br>8:20更新:有网友曾经被定向到一个黑页“Iranian CyberArmy”上，域名被盗取或劫持的可能性相当大，不过百度如此大的请求数量是任何一个黑页服务器也无法抵御的，因此只能是访问失败。回想起twitter上次域名被转向，和这次攻击有着惊人的相似。<br>8:30更新:百度DNS数据已经被改回，但WHOIS数据依然没有刷新。<br>8:36更新:有网友提供了被黑图像，上面的文字说明是“Iranian Cyber Army”，网页提供的信息这样写到：ارتش سایبریایران در اعتراض به دخالت های سايتهاي بيگانه و صهیونیستی در امور داخلیکشورمان و پخش اخبار دروغ و تفرقه برانگیز راه اندازي شده است。<br>9:10更新:被转向的伊朗页面显示“This account is suspended”。更新一系列图片。<br>9:15更新:图片上那个IP解析出来是pink2.warez-host.com，主页目前已经被拖垮，网页快照显示其数据中心在伊朗、荷兰与德国，提供“离岸主机托管服务”。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8:36更新:被黑图像出现,果然是伊朗网军<br>Domain Name: BAIDU.COM<br>Registrar: REGISTER.COM, INC.<br>Whois Server: whois.register.com<br>Referral URL: <a href="http://www.register.com">http://www.register.com</a><br>Name Server: YNS1.YAHOO.COM<br>Name Server: YNS2.YAHOO.COM<br>Status: ok<br>Updated Date: 11-jan-2010<br>Creation Date: 11-oct-1999<br>Expiration Date: 11-oct-2014<br>Registrant:<br>Domain Discreet<br>ATTN: baidu.com<br>Rua Dr. Brito Camara, n 20, 1<br>Funchal, Madeira 9000-039<br>PT<br>Phone: 1-902-7495331<br>Email: <a href="mailto:036f37850a14115101201f9483195f63@domaindiscreet.com">036f37850a14115101201f9483195f63@domaindiscreet.com</a><br>Registrar Name....: Register.com<br>Registrar Whois...: whois.register.com<br>Registrar Homepage: <a href="http://www.register.com">www.register.com</a><br>Domain Name: baidu.com<br>Created on..............: 1999-10-11<br>Expires on..............: 2014-10-11<br>Administrative Contact:<br>Domain Discreet<br>ATTN: baidu.com<br>Rua Dr. Brito Camara, n 20, 1<br>Funchal, Madeira 9000-039<br>PT<br>Phone: 1-902-7495331<br>Email: <a href="mailto:036f376a0a14115100199c0316d64ebb@domaindiscreet.com">036f376a0a14115100199c0316d64ebb@domaindiscreet.com</a><br>Technical Contact:<br>Domain Discreet<br>ATTN: baidu.com<br>Rua Dr. Brito Camara, n 20, 1<br>Funchal, Madeira 9000-039<br>PT<br>Phone: 1-902-7495331<br>Email: <a href="mailto:036f37860a14115101c8a6d69ced14a8@domaindiscreet.com">036f37860a14115101c8a6d69ced14a8@domaindiscreet.com</a><br>DNS Servers:<br>yns1.yahoo.com<br>yns2.yahoo.com</p><img src ="http://www.blogjava.net/beansoft/aggbug/309097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-12 09:52 <a href="http://www.blogjava.net/beansoft/archive/2010/01/12/309097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MyEclipse 8.0 GA 注册机</title><link>http://www.blogjava.net/beansoft/archive/2010/01/08/308733.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 08 Jan 2010 08:20:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/08/308733.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/308733.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/08/308733.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/308733.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/308733.html</trackback:ping><description><![CDATA[<p></p> <p>8.0GA支持 Struts 2.</p> <p>import java.io.BufferedReader;<br>import java.io.IOException;<br>import java.io.InputStreamReader;<br>public class MyEclipseGen {<br>private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.";<br>public String getSerial(String userId, String licenseNum) {<br>&nbsp;&nbsp; java.util.Calendar cal = java.util.Calendar.getInstance();<br>&nbsp;&nbsp; cal.add(1, 3);<br>&nbsp;&nbsp; cal.add(6, -1);<br>&nbsp;&nbsp; java.text.NumberFormat nf = new java.text.DecimalFormat("000");<br>&nbsp;&nbsp; licenseNum = nf.format(Integer.valueOf(licenseNum));<br>&nbsp;&nbsp; String verTime = new StringBuilder("-").append(<br>&nbsp;&nbsp;&nbsp;&nbsp; new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))<br>&nbsp;&nbsp;&nbsp;&nbsp; .append("0").toString();<br>&nbsp;&nbsp; String type = "YE3MP-";<br>&nbsp;&nbsp; String need = new StringBuilder(userId.substring(0, 1)).append(type)<br>&nbsp;&nbsp;&nbsp;&nbsp; .append("300").append(licenseNum).append(verTime).toString();<br>&nbsp;&nbsp; String dx = new StringBuilder(need).append(LL).append(userId)<br>&nbsp;&nbsp;&nbsp;&nbsp; .toString();<br>&nbsp;&nbsp; int suf = this.decode(dx);<br>&nbsp;&nbsp; String code = new StringBuilder(need).append(String.valueOf(suf))<br>&nbsp;&nbsp;&nbsp;&nbsp; .toString();<br>&nbsp;&nbsp; return this.change(code);<br>}<br>private int decode(String s) {<br>&nbsp;&nbsp; int i;<br>&nbsp;&nbsp; char[] ac;<br>&nbsp;&nbsp; int j;<br>&nbsp;&nbsp; int k;<br>&nbsp;&nbsp; i = 0;<br>&nbsp;&nbsp; ac = s.toCharArray();<br>&nbsp;&nbsp; j = 0;<br>&nbsp;&nbsp; k = ac.length;<br>&nbsp;&nbsp; while (j &lt; k) {<br>&nbsp;&nbsp;&nbsp; i = (31 * i) + ac[j];<br>&nbsp;&nbsp;&nbsp; j++;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; return Math.abs(i);<br>}<br>private String change(String s) {<br>&nbsp;&nbsp; byte[] abyte0;<br>&nbsp;&nbsp; char[] ac;<br>&nbsp;&nbsp; int i;<br>&nbsp;&nbsp; int k;<br>&nbsp;&nbsp; int j;<br>&nbsp;&nbsp; abyte0 = s.getBytes();<br>&nbsp;&nbsp; ac = new char[s.length()];<br>&nbsp;&nbsp; i = 0;<br>&nbsp;&nbsp; k = abyte0.length;<br>&nbsp;&nbsp; while (i &lt; k) {<br>&nbsp;&nbsp;&nbsp; j = abyte0[i];<br>&nbsp;&nbsp;&nbsp; if ((j &gt;= 48) &amp;&amp; (j &lt;= 57)) {<br>&nbsp;&nbsp;&nbsp;&nbsp; j = (((j - 48) + 5) % 10) + 48;<br>&nbsp;&nbsp;&nbsp; } else if ((j &gt;= 65) &amp;&amp; (j &lt;= 90)) {<br>&nbsp;&nbsp;&nbsp;&nbsp; j = (((j - 65) + 13) % 26) + 65;<br>&nbsp;&nbsp;&nbsp; } else if ((j &gt;= 97) &amp;&amp; (j &lt;= 122)) {<br>&nbsp;&nbsp;&nbsp;&nbsp; j = (((j - 97) + 13) % 26) + 97;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; ac[i] = (char) j;<br>&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp; }<br>&nbsp;&nbsp; return String.valueOf(ac);<br>}<br>public MyEclipseGen() {<br>&nbsp;&nbsp; super();<br>}<br>public static void main(String[] args) {<br>&nbsp;&nbsp; try {<br>&nbsp;&nbsp;&nbsp; System.out.println("please input register name:");<br>&nbsp;&nbsp;&nbsp; BufferedReader reader = new BufferedReader(new InputStreamReader(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.in));<br>&nbsp;&nbsp;&nbsp; String userId = null;<br>&nbsp;&nbsp;&nbsp; userId = reader.readLine();<br>&nbsp;&nbsp;&nbsp; MyEclipseGen myeclipsegen = new MyEclipseGen();<br>&nbsp;&nbsp;&nbsp; String res = myeclipsegen.getSerial(userId, "5");<br>&nbsp;&nbsp;&nbsp; System.out.println("Serial:" + res);<br>&nbsp;&nbsp;&nbsp; reader.readLine();<br>&nbsp;&nbsp; } catch (IOException ex) {<br>&nbsp;&nbsp; }<br>}<br>} </p><img src ="http://www.blogjava.net/beansoft/aggbug/308733.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-08 16:20 <a href="http://www.blogjava.net/beansoft/archive/2010/01/08/308733.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发必备: 免费仿Vista图标库下载(PNG,ICO格式)</title><link>http://www.blogjava.net/beansoft/archive/2010/01/01/307960.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 31 Dec 2009 16:50:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2010/01/01/307960.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/307960.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2010/01/01/307960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/307960.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/307960.html</trackback:ping><description><![CDATA[
		<p>
				<a href="http://www.visualpharm.com/icon_sets/download_free_must_have_icon_set.zip">
						<img title="Download Must Have Icons" alt="Download Must Have Icons" src="http://www.visualpharm.com/i2/download_button.png" />
				</a>
		</p>
		<p style="MARGIN-TOP: 6px; MARGIN-LEFT: 12px">download_free_must_have_icon_set.zip, 4.28 MB<br />Contains the icons in all sizes,<br />Windows, Mac and PNG formats<br /><br /><img title="Windows Vista icons for everyday use. The most popular icons based on 5 years in icon design." alt="Windows Vista icons for everyday use. The most popular icons based on 5 years in icon design." src="http://www.visualpharm.com/icon_sets/download_free_must_have_icon_set.jpg" /> </p>
<img src ="http://www.blogjava.net/beansoft/aggbug/307960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2010-01-01 00:50 <a href="http://www.blogjava.net/beansoft/archive/2010/01/01/307960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2快速后台验证框架使用说明书(文档整理)</title><link>http://www.blogjava.net/beansoft/archive/2009/12/22/306868.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 22 Dec 2009 01:20:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/12/22/306868.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/306868.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/12/22/306868.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/306868.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/306868.html</trackback:ping><description><![CDATA[<p><b>Struts2</b><b>快速后台验证框架</b><b>使用说明书</b><b></b> <p>作者: 刘长炯 <p>日期: 2009-12-20 <p>版本: 0.1 <p>目录 <p><a href="#_Toc249167379">简介... 1</a> <p><a href="#_Toc249167380">整合步骤... 1</a> <p><a href="#_Toc249167381">验证规则表达式详解... 5</a> <p><a href="#_Toc249167382">和RapidValidation配合实现前后台一致验证... 7</a> <p><a href="#_Toc249167383">如何扩展验证规则?. 8</a> <p><a href="#_Toc249167384">完整示例应用... 10</a> <h3><a name="_Toc249167379">简介</a></h3> <p>本框架主要是为了和前台基于JavaScript的开源验证框架RapidValidation使用统一的验证规则, 最大限度的减少重复的后台验证代码, 使用方式简便, 扩展方便. <p>本框架依赖于: <p>Struts 2 <p>Java 5或者更高版本 <p>GET/POST协议(支持带文件上传的表单, 依赖于Commons-Upload组件) <h3><a name="_Toc249167380">整合步骤</a></h3> <p>1. 将文件<b>struts2-quickvalidation-plugin-1.0.jar</b>放入WEB-INF/lib目录下; <p>2. 修改您自己的代码的src/struts.xml中的package定义继承自quickValidation; <p>示例代码: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>&lt;?xml version="1.0" encoding="UTF-8" ?&gt; <p>&lt;!DOCTYPE struts PUBLIC <p>"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" <p>"http://struts.apache.org/dtds/struts-2.0.dtd"&gt; <p>&lt;struts&gt; <p>&lt;package name="test" namespace="" extends="<b>quickValidation</b>"&gt; <p>&lt;action name="helloworld" class="actions.HelloWorldAction"&gt; <p>&lt;result name="index"&gt;/index.jsp&lt;/result&gt; <p>&lt;result name="success"&gt;/helloworld.jsp&lt;/result&gt; <p>&lt;/action&gt; <p>&lt;/package&gt; <p>&lt;/struts&gt;</p></td></tr></tbody></table> <p>3. 使用注解加入验证规则表达式; <p>在每个需要调用的Action的入口方法处, 加入<b>@FormValidator</b>注解. <p>注解的完整语法如下: <p>@common.validation.FormValidator(input="出错时需要返回的result别名", enabled=<b>true/false</b>, value="表单参数名称1,表单参数中文提示信息1,规则1 规则2…; 表单参数名称2,表单参数中文提示信息2,规则1 规则2…;更多字段验证信息") <p><b>input</b>参数: <b>可选</b>. 如果不指定, 则出错时仍然继续进入到Action方法中; 如果指定, 则在表单验证出错时, 返回到给定的result中, 例如: 原始表单输入页面或者统一的错误输出页面; <p><b>enabled</b>参数: <b>可选</b>. 是否启用此验证规则, 如果不指定, 则忽略解析注解, 不进行任何验证; <p><b>value</b>参数: <b>必填选项</b>, 可输入一个或者多个表单参数验证规则. 简单说就是: [字段1验证配置];[字段2验证配置];…. 虽然不建议, 然而字段验证配置可以留空, 此时不会进行任何验证处理. <p>而每个<b>验证配置</b>的格式如下: <p>表单参数名称: <b>必填选项</b>. 指向输入的表单控件的名称(input的name); <p>表单参数中文提示信息: <b>可选</b>. 如果为空, 则和表单参数名称相同. 不为空时, 则显示在出错时的信息提示的开头位置; <p>规则1 规则2…: <b>可选.</b> 理论上可加入任意多个验证规则, 以<b>单个空格</b>隔开. 在验证开始后, 依次进行每个规则的验证并加入提示信息. 需要注意的是, 除required规则之外的所有规则只有当用户输入的字段值非空时, 才进行有效性验证, 如此便可避免所有字段都成为必填字段的问题发生. <p><b>每个规则</b>本身则由两部分组成: 规则名-规则子名-参数1-参数2-参数3-…. <p>规则名和规则子名是固定名称, 不能任意填写, 这两个名称对应一个具体的规则实现类. <p>其中<b>参数</b>是<b>必填选项</b>, 参数的意义则需要参考下一节的<a href="#_验证规则表达式详解">验证规则表达式</a>中的说明. 下面举例说明若干验证规则: <p>required 这是特殊规则, 不带规则子名; <p>float-range-1-20 其中float-range分别是规则名和规则子名, 而1和20则分别是两个参数. <p>特别需要注意的是有负数时的情况此时参数列表变为: float-range-<b>-1</b>--20, 此时参数值分别为-1和-20. <p>如果需要给另一字段加入验证规则, 则以<b>分号</b>隔开. <p>下面是若干验证的示例及其解释: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="322"> <p><b>规则</b></p></td> <td valign="top" width="246"> <p><b>解释</b></p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator</p></td> <td valign="top" width="246"> <p>空的验证规则, 不进行任何操作</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator("username,用户名,required min-length-5")</p></td> <td valign="top" width="246"> <p>对username字段进行验证, 规则为 必填, 最小长度为5; 出错时分别提示: <p>用户名不能为空 <p>用户名的长度不能小于5, 当前长度为1. <p>由于没有指定input参数, 所以当验证失败时, 仍然会继续进入到业务逻辑处理, 相关的错误信息则存入request的attribute中.</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator("username, ,required min-length-5")</p></td> <td valign="top" width="246"> <p>由于没有指定字段的中文提示, 因此出错时将提示: <p>username的长度不能小于5, 当前长度为1.</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator(<b>input="index"</b>,value=" username,用户名,required min-length-5”)</p></td> <td valign="top" width="246"> <p>这大概是最常用格式的验证规则的写法了. 此例和上例的区别为: 所以当验证失败时, 将进入input参数所指定的出错信息显示页面.</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator(input="index",<b>enabled=false,</b>value=" username,用户名,required min-length-5”)</p></td> <td valign="top" width="246"> <p>忽略所有验证规则处理, 常用于调试阶段.</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator(input="index",value=" username,用户名,required min-length-5;password2,<b>重复密码</b>,required equals-password-<b>原始密码</b>;”)</p></td> <td valign="top" width="246"> <p>此规则加入了对重复密码字段的验证, 出错时将提示: <p><b>重复密码</b>和<b>原始密码</b>的输入不一致</p></td></tr> <tr> <td valign="top" width="322"> <p>@FormValidator(input="index",value="username,用户名,required min-length-5;password2,<b>重复密码</b>,required equals-password;”)</p></td> <td valign="top" width="246"> <p>此规则省略了另一字段的中文描述, 出错时将提示: <p><b>重复密码</b>和<b>前面</b>的输入不一致</p></td></tr> <tr> <td valign="top" width="322">&nbsp;</td> <td valign="top" width="246">&nbsp;</td></tr> <tr> <td valign="top" width="322">&nbsp;</td> <td valign="top" width="246">&nbsp;</td></tr></tbody></table> <p>以下为一个完整的Action类示例代码: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p><b>import</b> com.opensymphony.xwork2.ActionSupport; <p><b>import</b> common.validation.FormValidator; <p><b>public</b> <b>class</b> HelloWorldAction <b>extends</b> ActionSupport { <p>@FormValidator(input="index", value="username,用户名,required min-length-5 max-length-10 validate-alpha;" + <p>"age,年龄,validate-digits min-value-18 max-value-100;password,密码,required;" + <p>"password2,重复密码,required equals-password-原始密码;" + <p>"gender,性别, validate-one-required") <p><b>public</b> String execute() <b>throws</b> Exception { <p><b>return</b> <i>SUCCESS</i>; <p>} <p>}</p></td></tr></tbody></table> <p>4. 修改前台显示验证结果. <p>根据Action的不同, 前台的显示划分为两类: <p>普通的错误显示: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>所有错误信息: ${validationErrors}</p></td></tr></tbody></table> <p>返回的内容是一个字符串, 显示了所有的出错信息, 而出错字体的颜色则需要用户自己去设置. <p>出错信息的显示格式是以&lt;br&gt;分开的, 例如: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>用户名不能为空&lt;br&gt;密码不能为空&lt;br&gt;重复密码不能为空&lt;br&gt;性别必须至少选中一项&lt;br&gt;</p></td></tr></tbody></table> <p>另一种推荐的做法是让Action继承自Struts2中的ActionSupport, 此时则可用Struts 2的标签来显示出错信息, 可定位到具体的字段: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; <p>&lt;s:actionerror /&gt; <p>&lt;s:fielderror/&gt; <p>&lt;s:form action="helloworld.action" method="post"&gt; <p>&lt;s:textfield name="username" label="用户名" /&gt; <p>&lt;s:password name="password" label="密码" /&gt; <p>&lt;s:submit/&gt; <p>&lt;/s:form&gt;</p></td></tr></tbody></table> <p>或者使用纯JSP来编写页面来定位到单条错误: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>用户名: &lt;input name=username value=${param.username}&gt; ${errors.username[0]}</p></td></tr></tbody></table> <p>下面给出这两种写法的完整示例: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>&lt;%@ page pageEncoding="UTF-8"%&gt; <p>&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; <p>&lt;html&gt; <p>&lt;head&gt; <p>&lt;style&gt; <p>.errorMessage {color:red;} <p>.errorLabel {font-weight:bold} <p>&lt;/style&gt; <p>&lt;title&gt;测试页面&lt;/title&gt; <p>&lt;/head&gt; <p>&lt;body&gt; <p>&lt;s:actionerror /&gt; <p>&lt;form action="helloworld.action" method=post enctype="multipart/form-data"&gt; <p>用户名: &lt;input name=username value=${param.username}&gt; ${errors.username[0]} &lt;br&gt; <p>年龄: &lt;input name=age value=${param.age}&gt;&lt;br&gt; <p>密码: &lt;input name=password&gt;&lt;br&gt; <p>密码重复: &lt;input name=password2&gt;&lt;br&gt; <p>邮件: &lt;input name=email&gt;&lt;br&gt; <p>性别: &lt;input type=checkbox name=a&gt;男 &lt;input type=checkbox name=a&gt;女&lt;br&gt; <p>IP地址: &lt;input name=ip&gt;&lt;br&gt; <p>数字1: &lt;input name=num1&gt; 数字2: &lt;input name=num2&gt; &lt;br&gt; <p>日期:&lt;input name=date&gt;&lt;br&gt; <p>附件: &lt;input name=file type=file&gt;&lt;br&gt; <p>&lt;input type=submit value="提交"&gt; <p>&lt;/form&gt; <p>&lt;span class="errorMessage"&gt; <p>${validationErrors} <p>&lt;/span&gt; <p>Struts 2表单标签示例: <p>&lt;s:fielderror/&gt; <p>&lt;s:form action="helloworld.action" method="post"&gt; <p>&lt;s:textfield name="username" label="用户名" /&gt; <p>&lt;s:password name="password" label="密码" /&gt; <p>&lt;s:submit/&gt; <p>&lt;/s:form&gt; <p>&lt;/body&gt; <p>&lt;/html&gt;</p></td></tr></tbody></table> <h3><a name="_Toc249167381"></a><a name="_验证规则表达式详解"></a>验证规则表达式详解</h3> <p>说明: 加红色背景的部分是目前尚不支持的验证规则; 加黄色背景的是增加了第二个可选参数的规则. <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top"> <p><b>验证表达式</b></p></td> <td valign="top"> <p><b>描述</b></p></td> <td valign="top"> <p><b>示例</b></p></td></tr> <tr> <td valign="top"> <p>required</p></td> <td valign="top"> <p>非空域,全部空格也算空 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-number </p></td> <td valign="top"> <p>一个有效数 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-digits </p></td> <td valign="top"> <p>只能包含0-9任意个数字 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-alpha </p></td> <td valign="top"> <p>只能是字母a-z, A-Z </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-alphanum </p></td> <td valign="top"> <p>只能是字母和数字的组合</p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-email </p></td> <td valign="top"> <p>只能是有效的email </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-url </p></td> <td valign="top"> <p>只能是有效的url地址 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-one-required </p></td> <td valign="top"> <p>至少有一个被选中,例如一组checkbox, radiobutton,它们最好包含在一个div和span中 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-integer </p></td> <td valign="top"> <p>只能是整数,可以有正负号 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-ip </p></td> <td valign="top"> <p>有效的IP地址 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>min-length-$number </p></td> <td valign="top"> <p>最小长度是$number <b>(</b><b>此处$some表示一个特定的值)</b></p></td> <td valign="top"> <p>最小长度为8: min-length-8</p></td></tr> <tr> <td valign="top"> <p>max-length-$number </p></td> <td valign="top"> <p>最大长度是$number </p></td> <td valign="top"> <p>最大长度为8: max-length-8</p></td></tr> <tr> <td valign="top"> <p>max-value-$number </p></td> <td valign="top"> <p>输入域的最大值是$number </p></td> <td valign="top"> <p>最大值为8.1: max-value-8.1</p></td></tr> <tr> <td valign="top"> <p>min-value-$number </p></td> <td valign="top"> <p>输入域的最小值是$number </p></td> <td valign="top"> <p>最大值为-8.1: max-value--8.1</p></td></tr> <tr> <td valign="top"> <p>equals-$otherInputId-$otherInputLabel</p></td> <td valign="top"> <p>必须和某个input field相等,用于密码两次输入验证等,$otherInputLabel是可选项,用来描述另一字段信息</p></td> <td valign="top"> <p>equals-password <p>重复密码和原始密码输入不一致: <p>equals-password-原始密码</p></td></tr> <tr> <td valign="top"> <p>less-than-$otherInputId-$otherInputLabel</p></td> <td valign="top"> <p>小于某个input field less-than-otherInputId,多用于结束日期不能小于开始日期的需求,$otherInputLabel是可选项,用来描述另一字段信息</p></td> <td valign="top"> <p>注:相等时也不能通过</p></td></tr> <tr> <td valign="top"> <p>great-than-$otherInputId-$otherInputLabel</p></td> <td valign="top"> <p>大于某个input field less-than-otherInputId,$otherInputLabel是可选项,用来描述另一字段信息</p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-date-$dateFormat </p></td> <td valign="top"> <p>只能是日期,$dateFormat为日期格式,$dateFormat的可选,默认格式为yyyy-MM-DD </p></td> <td valign="top"> <p>validate-date-yyyy年MM月dd日</p></td></tr> <tr> <td valign="top"> <p><strike>validate-file-$type1-$type2-$typeX </strike></p></td> <td valign="top"> <p><strike>验证文件输入域选择的文件类型只能为声明的$type1 – $typeX中的一种 </strike></p></td> <td valign="top"> <p><strike>validate-file-png-jpeg</strike></p></td></tr> <tr> <td valign="top"> <p>float-range-$minValue-$maxValue</p></td> <td valign="top"> <p>必须是$minValue到$maxValue的一个浮点数 </p></td> <td valign="top"> <p>1至20: float-range-1-20</p></td></tr> <tr> <td valign="top"> <p>int-range-$minValue-$maxValue</p></td> <td valign="top"> <p>必须是$minValue到$maxValue的一个整数 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>length-range-$minLength-$maxLength </p></td> <td valign="top"> <p>输入字符串的长度必须在$minLength到$maxLength之间 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-pattern-$RegExp </p></td> <td valign="top"> <p>通过自定义正则表达式$RegExp来验证输入域的正确性</p></td> <td valign="top"> <p>vaidate-pattern-/a/gi</p></td></tr> <tr> <td valign="top"> <p>validate-chinese </p></td> <td valign="top"> <p>只能是中文(以下为中国的相关验证) </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-phone </p></td> <td valign="top"> <p>有效的电话</p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-mobile-phone </p></td> <td valign="top"> <p>有效的手机号 </p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-id-number</p></td> <td valign="top"> <p>验证是否有效的身份证号码</p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-zip</p></td> <td valign="top"> <p>验证邮政编码</p></td> <td valign="top">&nbsp;</td></tr> <tr> <td valign="top"> <p>validate-qq</p></td> <td valign="top"> <p>验证QQ号码</p></td> <td valign="top">&nbsp;</td></tr></tbody></table> <h3><a name="_Toc249167382">和RapidValidation</a>配合实现前后台一致验证</h3> <p>RapidValidation是专注于前台的验证框架, 例如下面的例子: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>&lt;!-- 为form增加required-validate class,标识需要验证form --&gt; <p>&lt;form id='helloworld' action="#" class='required-validate'&gt; <p><b>helloworld:</b>&lt;/br&gt; <p>&lt;!--通过class添加验证: required表示不能为空,min-length-15表示最小长度为15 --&gt; <p>&lt;textarea name='<b>content</b>' class='<b>required min-length-15</b>'&gt;&lt;/textarea&gt;&lt;/br&gt; <p>&lt;input type='submit' value='Submit'/&gt; <p>&lt;input type='reset' value='Reset'/&gt; <p>&lt;/form&gt;</p></td></tr></tbody></table> <p>其对应的后台验证规则为: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p>@FormValidator(<b>input="index"</b>,value=" <b>content</b>,<b>helloworld</b>,<b>required min-length-15</b>”)</p></td></tr></tbody></table> <p>请注意比较异同, 不同部分已经以<b>红色粗体</b>进行了区分, 相同部分则以<b>绿色粗体</b>标识. <p>大家可以看到, 两者很容易就实现了一致的前后台验证规则. <h3><a name="_Toc249167383">如何扩展验证规则?</a></h3> <p>要扩展验证只需要实现IValidator即可即可, 并将实现类放入包 common.quickvalid.validators 下. 下面是<b>IValidator</b>接口定义: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p><b>package</b> common.quickvalid.validators; <p><b>import</b> java.util.Map; <p>/** <p>* 验证器接口. <p>* <b>@author</b> beansoft <p>* 日期: 2009-12-20 <p>*/ <p><b>public</b> <b>interface</b> IValidator { <p>/** <p>* 实现验证方法. <p>* <b>@param</b> fieldName 字段name <p>* <b>@param</b> fieldDescription 出错时的字段描述信息 <p>* <b>@param</b> params 参数列表 &lt;String key, String[] values&gt; 表单参数Map <p>* <b>@param</b> args 参数列表 <p>* <b>@return</b> 验证信息, 为空时表示没有任何出错信息, 通过验证 <p>*/ <p><b>public</b> String doValidation(String fieldName, String fieldDescription, Map&lt;String, String[]&gt; params, String... args) ; <p><b>public</b> String[] getArgs(); <p>/** <p>* 设置参数列表 <p>* <b>@param</b> args <p>*/ <p><b>public</b> <b>void</b> setArgs(String[] args); <p><b>public</b> String getExpression(); <p>/** <p>* 设置原始表达式, 用于日期, 正则等验证方式, 避免和 - 号冲突. <p>* <b>@param</b> Expression <p>*/ <p><b>public</b> <b>void</b> setExpression(String expression); <p>}</p></td></tr></tbody></table> <p>类名有一定规则, 将第一个减号替换为下划线即可, 例如: <p><b><i>length-range-$minLength-$maxLength</i></b> 对应的类名是: <b><i>length_range</i></b>. <p>下面则给出一个实现类, 供参考: <table border="1" cellspacing="0" cellpadding="0"> <tbody> <tr> <td valign="top" width="568"> <p><b>package</b> common.quickvalid.validators; <p><b>import</b> java.util.Map; <p>/** <p>* 单个表单域验证 <p>* <p>* 非空域时才进行字符串验证. <p>* 最大长度验证 <p>* <b>@author</b> beansoft <p>* <p>*/ <p><b>public</b> <b>class</b> max_length <b>implements</b> IValidator { <p><b>public</b> String doValidation(String fieldName, String fieldDescription, <p>Map&lt;String, String[]&gt; params, String... args) { <p><b>super</b>.setParams(params); <p>String value = params.getValue(fieldName)[0]; <p><b>int</b> length = 0; <p><b>try</b> { <p>length = Integer.<i>parseInt</i>(args[0]); <p>} <b>catch</b>(Exception ex) {} <p><b>if</b>(value != <b>null</b> &amp;&amp; value.length() &gt; 0 &amp;&amp; value.trim().length() &gt; 0) { <p><b>if</b>(value.trim().length() &gt; length) { <p><b>return</b> fieldDescription + "的长度不能大于" + length + ", 当前长度为" + value.trim().length(); <p>} <p>} <p><b>return</b> <b>null</b>; <p>} <p>/** <p>忽略getter和setter,和普通Java类无区别. <p>getXx(); <p>setXxx(); <p>*/ <p>}</p></td></tr></tbody></table> <h3><a name="_Toc249167384">完整示例应用</a></h3> <p>请参考项目<b>quickvalidemo</b>, 可在MyEclipse6.0或者更高版本中执行.</p><img src ="http://www.blogjava.net/beansoft/aggbug/306868.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-12-22 09:20 <a href="http://www.blogjava.net/beansoft/archive/2009/12/22/306868.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Weblogic 11 集群和节点管理器配置快速入门视频(单服务器版)</title><link>http://www.blogjava.net/beansoft/archive/2009/12/09/305310.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Wed, 09 Dec 2009 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/12/09/305310.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/305310.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/12/09/305310.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/305310.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/305310.html</trackback:ping><description><![CDATA[<p>Weblogic 11 集群和节点管理器配置快速入门视频(单服务器版) , 无讲解, 太忙了, 没时间加语音讲解了. <p>by 刘长炯<br>2009-12  <p><a href="http://blogjava.net/beansoft">http://blogjava.net/beansoft</a><br>合作伙伴: <a href="http://weblogicfans.net">http://weblogicfans.net</a> <p>提示: 如果您觉得视频播放速度过快, 可点击顶部的 &gt; 按钮进行单帧浏览. <p>&nbsp;</p> <p>下载 <a href="http://tomcatmonitor.googlecode.com/files/wls11_cluster.swf"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://www.gstatic.com/codesite/ph/images/dl_arrow.gif"></a> <a href="http://tomcatmonitor.googlecode.com/files/wls11_cluster.swf">wls11_cluster.swf</a>&nbsp;&nbsp; 6.2 MB  <p>&nbsp; <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Weblogic11_F2EB/image_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Weblogic11_F2EB/image_thumb.png" width="626" height="360"></a>  <p></p> <p>&nbsp;</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Weblogic11_F2EB/image_4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/Weblogic11_F2EB/image_thumb_1.png" width="472" height="517"></a></p><img src ="http://www.blogjava.net/beansoft/aggbug/305310.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-12-09 17:17 <a href="http://www.blogjava.net/beansoft/archive/2009/12/09/305310.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>北医三院耳鼻喉专家出诊时间表</title><link>http://www.blogjava.net/beansoft/archive/2009/12/08/305160.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 08 Dec 2009 06:34:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/12/08/305160.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/305160.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/12/08/305160.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/305160.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/305160.html</trackback:ping><description><![CDATA[<p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/023f47f91cea_CCE5/%E5%8C%97%E5%8C%BB%E4%B8%89%E9%99%A2%E8%80%B3%E9%BC%BB%E5%96%89%E4%B8%93%E5%AE%B6%E5%87%BA%E8%AF%8A%E6%97%B6%E9%97%B4%E8%A1%A8_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="北医三院耳鼻喉专家出诊时间表" border="0" alt="北医三院耳鼻喉专家出诊时间表" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/023f47f91cea_CCE5/%E5%8C%97%E5%8C%BB%E4%B8%89%E9%99%A2%E8%80%B3%E9%BC%BB%E5%96%89%E4%B8%93%E5%AE%B6%E5%87%BA%E8%AF%8A%E6%97%B6%E9%97%B4%E8%A1%A8_thumb.jpg" width="640" height="480"></a></p><img src ="http://www.blogjava.net/beansoft/aggbug/305160.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-12-08 14:34 <a href="http://www.blogjava.net/beansoft/archive/2009/12/08/305160.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts 2 配置拦截所有异常并显示为&amp;quot;系统模块正在升级中&amp;quot;</title><link>http://www.blogjava.net/beansoft/archive/2009/12/08/305158.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 08 Dec 2009 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/12/08/305158.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/305158.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/12/08/305158.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/305158.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/305158.html</trackback:ping><description><![CDATA[<p>如此配置后 即使出现数据库异常 也能捕获并给予友好提示  <p>首先在struts.xml中定义全局的结果和异常映射包, 定义为一个默认的 package<br>&lt;!-- 默认的异常捕捉机制 --&gt;<br>&lt;package name="default" extends="struts-default"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;global-results&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;result name="Exception"&gt;/Exception.jsp&lt;/result&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/global-results&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;global-exception-mappings&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;exception-mapping exception="java.lang.Exception" result="Exception"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/global-exception-mappings&gt;<br>&lt;/package&gt;<br>接着修改我们自己的package继承自 default:<br>&lt;!-- 用户模块, 子路径名 /user - /user/list.do --&gt;<br>&lt;package name="user" namespace="/user" extends="default"&gt;<br>...  <p>最后在 Exception.jsp 中写入下面的文字:<br>&lt;%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%&gt;<br>对不起, 系统模块正在升级维护中, 如有疑问, 请联系客服: XXXXXX</p><img src ="http://www.blogjava.net/beansoft/aggbug/305158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-12-08 14:27 <a href="http://www.blogjava.net/beansoft/archive/2009/12/08/305158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FileUtil.java</title><link>http://www.blogjava.net/beansoft/archive/2009/11/23/303370.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 23 Nov 2009 10:56:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/23/303370.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/303370.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/23/303370.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/303370.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/303370.html</trackback:ping><description><![CDATA[<p>import java.io.*;  <p>/**<br> * FileUtil. Simple file operation class. <br> * <br> * @author BeanSoft<br> * <br> */<br>public class FileUtil {<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * The buffer.<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; protected static byte buf[] = new byte[1024];  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Read content from local file. FIXME How to judge UTF-8 and GBK, the<br>&nbsp;&nbsp;&nbsp;&nbsp; * correct code should be: FileReader fr = new FileReader(new<br>&nbsp;&nbsp;&nbsp;&nbsp; * InputStreamReader(fileName, "ENCODING")); Might let the user select the<br>&nbsp;&nbsp;&nbsp;&nbsp; * encoding would be a better idea. While reading UTF-8 files, the content<br>&nbsp;&nbsp;&nbsp;&nbsp; * is bad when saved out.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name to read<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String readFileAsString(String fileName) throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String content = new String(readFileBinary(fileName));  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return content;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 读取文件并返回为给定字符集的字符串.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param encoding<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String readFileAsString(String fileName, String encoding) throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String content = new String(readFileBinary(fileName), encoding);  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return content;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 读取文件并返回为给定字符集的字符串.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param encoding<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String readFileAsString(InputStream in) throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String content = new String(readFileBinary(in));  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return content;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Read content from local file to binary byte array.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name to read<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws Exception<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static byte[] readFileBinary(String fileName) throws Exception {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileInputStream fin = new FileInputStream(fileName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return readFileBinary(fin);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 从输入流读取数据为二进制字节数组.<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param streamIn<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static byte[] readFileBinary(InputStream streamIn) throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BufferedInputStream in = new BufferedInputStream(streamIn);  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByteArrayOutputStream out = new ByteArrayOutputStream(10240);  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int len;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((len = in.read(buf)) &gt;= 0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.write(buf, 0, len);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in.close();  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return out.toByteArray();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Write string content to local file.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name will write to<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param content<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return true if success<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static boolean writeFileString(String fileName, String content)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileWriter fout = new FileWriter(fileName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(content);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Write string content to local file using given character encoding.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name will write to<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param content<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param encoding<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the encoding<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return true if success<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static boolean writeFileString(String fileName, String content,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String encoding) throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileName), encoding);  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(content);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Write binary byte array to local file.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name will write to<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param content<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; binary byte array<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return true if success<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static boolean writeFileBinary(String fileName, byte[] content)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileOutputStream fout = new FileOutputStream(fileName);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(content);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 检查文件名是否合法.文件名字不能包含字符\/:*?"&lt;&gt;|<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName文件名,不包含路径<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return boolean is valid file name<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static boolean isValidFileName(String fileName) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean isValid = true;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String errChar = "\\/:*?\"&lt;&gt;|"; //<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fileName == null || fileName.length() == 0) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isValid = false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; errChar.length(); i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (fileName.indexOf(errChar.charAt(i)) != -1) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; isValid = false;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return isValid;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * 把非法文件名转换为合法文件名.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String replaceInvalidFileChars(String fileName) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuffer out = new StringBuffer();  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; fileName.length(); i++) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char ch = fileName.charAt(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Replace invlid chars: \\/:*?\"&lt;&gt;|<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; switch (ch) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '\\':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '/':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case ':':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '*':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '?':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '\"':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '&lt;':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '&gt;':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case '|':<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.append('_');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; out.append(ch);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return out.toString();<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Convert a given file name to a URL(URI) string.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; the file to parse<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return - URL string<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static String filePathToURL(String fileName) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String fileUrl = new File(fileName).toURI().toString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return fileUrl;<br>&nbsp;&nbsp;&nbsp; }  <p>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * Write string content to local file.<br>&nbsp;&nbsp;&nbsp;&nbsp; * <br>&nbsp;&nbsp;&nbsp;&nbsp; * @param fileName -<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; local file name will write to<br>&nbsp;&nbsp;&nbsp;&nbsp; * @param content<br>&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String text<br>&nbsp;&nbsp;&nbsp;&nbsp; * @return true if success<br>&nbsp;&nbsp;&nbsp;&nbsp; * @throws IOException<br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; public static boolean appendFileString(String fileName, String content)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throws IOException {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OutputStreamWriter fout = new OutputStreamWriter(new FileOutputStream(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fileName, true), "GBK");  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.write(content);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fout.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return true;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public static void main(String[] args) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(replaceInvalidFileChars("<a href="http://www.abc.com/&quot;));">http://www.abc.com/"));</a><br>&nbsp;&nbsp;&nbsp; }<br>}</p><img src ="http://www.blogjava.net/beansoft/aggbug/303370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-23 18:56 <a href="http://www.blogjava.net/beansoft/archive/2009/11/23/303370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>酷6网员工吐血猝死澄清 死因或是急性心肌炎</title><link>http://www.blogjava.net/beansoft/archive/2009/11/20/303021.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 20 Nov 2009 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/20/303021.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/303021.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/20/303021.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/303021.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/303021.html</trackback:ping><description><![CDATA[<p><a href="http://it.people.com.cn/GB/42891/42894/10417392.html">http://it.people.com.cn/GB/42891/42894/10417392.html</a> <p>　　11月19日消息，近日酷6网研发部一名员工不幸猝死，有相关消息称该员工因连续加班而致疲劳过度，在岗位上吐血猝死。对此，酷6网今日向赛迪网发来声明，对此事作出公开澄清。<br>　　酷6网在声明中称，“经公安机关调查认定，其突然死亡属于自身身体状况原因导致，与外力无关。”此外，据声明中透露，法医根据症状分析，死因有可能是急性病毒性心肌炎。酷6网还表示已经号召公司员工为去世员工进行募捐，其中CEO李善友个人捐款5万元，公司爱心捐助总计达到8万元。此外，酷6网还为其家属额外准备抚恤金10万元，并准备为该员工申请工伤保险金等，预计约30万元。<br><b>以下为声明全文：</b><br>　　近日，关于我公司职员离世一事，外界存在着种种传言，酷6网特就此事发表声明。<br>　　在2009年11月10日中午12时左右，我公司员工罗耀明在经过写字楼B区某公司门口时突然倒地不起，路经人员及时拨打急救电话求助，后经送北医三院急救，终因抢救无效病逝。经公安机关调查认定，其突然死亡属于自身身体状况原因导致，与外力无关。法医根据症状分析，死因有可能是急性病毒性心肌炎。2009年11月18日上午，公司协助罗耀明家属举行了追悼仪式，公司CEO李善友等多位公司高层及同事出席，今日罗耀明父母将携其骨灰返回家乡。<br>　　罗耀明于2009年7月28日入职，到11月10日离世，在公司三个月的工作中，个人工作能力突出，是一个很有潜力并对公司文化非常认同的技术骨干。对其意外离开，公司上下非常悲痛，事发当天即通知家属来京，并在过去的几天公司高层一直陪同，积极处理相关后事，罗耀明父母也对此向公司表示了感谢。在这期间，公司发出的“慰问捐款倡议书”得到了全体同学的响应，大家都积极为耀明捐款，在公司CEO李善友个人捐款5万元的带领下，最终爱心捐助达到8万元。同时，公司为其家属额外准备抚恤金10万元，以示慰问。公司为耀明家属支付了全部来京的食宿、交通、丧葬等费用。另外，公司还在积极准备相应的法律文件，为耀明申请工伤保险金等，预计约30万元。<br>　　对于罗耀明的离开， 公司上下都十分悲痛，从离世到追悼的短短几天，公司投入了巨大的人力、物力、财力妥善处理此事，公司相关领导奔波于医院、公安、保险公司各相关机构之间，始终保持负责、认真、坦诚、透明的做事态度，无论是爱心捐款，还是抚恤金以及申请工伤保险金等事宜都积极落实，一一与逝者家属通报，得到了逝者家属的感谢。<br>　　酷6网作为国内知名的主流视频媒体，始终保持“以人为本”的公司经营原则，在这个事情处理过程中酷6网坦诚，公开、负责；公司高层积极、主动。我们希望媒体各界尊重事实，尊重逝者，“愿死者安息，愿生者节哀”，也希望广大的朋友们能够爱惜身体，珍惜健康！ <img src ="http://www.blogjava.net/beansoft/aggbug/303021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-20 11:07 <a href="http://www.blogjava.net/beansoft/archive/2009/11/20/303021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Microsoft Office Professional Plus 2010 Beta 版公开下载</title><link>http://www.blogjava.net/beansoft/archive/2009/11/19/302989.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 19 Nov 2009 14:46:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/19/302989.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/302989.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/19/302989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/302989.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/302989.html</trackback:ping><description><![CDATA[微软公开了 Office 2010 Beta 版的下载, 请点击这里下载:<br /><br /><blockquote><p><span style="TEXT-DECORATION: underline"><strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.microsoft.com');" href="http://www.microsoft.com/office/2010/en/download-office-professional-plus/default.aspx" target="_blank">Microsoft Office Professional Plus 2010 Beta</a></strong></span></p><p><span style="TEXT-DECORATION: underline"><strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.microsoft.com');" href="http://www.microsoft.com/office/2010/en/visio/download.aspx" target="_blank">FREE Microsoft Visio 2010 Beta</a></strong></span></p><p><span style="TEXT-DECORATION: underline"><strong><a onclick="javascript:pageTracker._trackPageview('/outbound/article/www.microsoft.com');" href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=27d81b1c-18ae-4983-8e1c-224bb747eb99" target="_blank">FREE Microsoft Office Web Apps Beta</a></strong></span></p></blockquote><img src ="http://www.blogjava.net/beansoft/aggbug/302989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-19 22:46 <a href="http://www.blogjava.net/beansoft/archive/2009/11/19/302989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:java汉字转拼音代码(很全,可以解决2w多个汉字)</title><link>http://www.blogjava.net/beansoft/archive/2009/11/13/302176.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 13 Nov 2009 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/13/302176.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/302176.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/13/302176.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/302176.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/302176.html</trackback:ping><description><![CDATA[<p><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" src="http://www.blogjava.net/images/blogjava_net/beansoft/23599/o_CnToSpell.png"></p> <p>&nbsp;</p> <p>&nbsp;</p> <p><a title="http://www.blogjava.net/images/blogjava_net/beansoft/23599/o_CnToSpell.png" href="http://www.blogjava.net/images/blogjava_net/beansoft/23599/o_CnToSpell.png">http://www.blogjava.net/images/blogjava_net/beansoft/23599/o_CnToSpell.png</a></p> <p>&nbsp;</p> <p>将此图片下载后, 后缀改为 RAR, 打开即可, 内含 Java 代码.</p><img src ="http://www.blogjava.net/beansoft/aggbug/302176.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-13 09:53 <a href="http://www.blogjava.net/beansoft/archive/2009/11/13/302176.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内地累计报告甲型流感重症病例242例 死亡30例</title><link>http://www.blogjava.net/beansoft/archive/2009/11/10/301765.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 10 Nov 2009 02:00:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/10/301765.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301765.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/10/301765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301765.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301765.html</trackback:ping><description><![CDATA[<p><a title="http://www.moh.gov.cn/publicfiles/business/htmlfiles/mohbgt/s3582/200911/44422.htm" href="http://www.moh.gov.cn/publicfiles/business/htmlfiles/mohbgt/s3582/200911/44422.htm">http://www.moh.gov.cn/publicfiles/business/htmlfiles/mohbgt/s3582/200911/44422.htm</a></p> <p>卫生部甲型H1N1流感防控工作信息通报  <p>中华人民共和国卫生部&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; www.moh.gov.cn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2009-11-09&nbsp;&nbsp; 20:20:42  <hr width="80%">  <p>（二〇〇九年十一月九日） <p>卫生部新闻办公室 <p>卫生部通报，11月6日15时至11月9日15时，我国内地报告甲型H1N1流感确诊病例4551例。截止11月9日，我国内地31个省市自治区报告59478例甲型H1N1流感确诊病例，已治愈44662例。累计报告重症病例242例，已治愈53例，死亡30例。 <p>截至11月9日12时，国家食品药品监管局累计完成批签发235批次3960.0万人。全国31个省（区、市）和新疆生产建设兵团累计签收甲型H1N1流感疫苗仍为2631万人份。全国31个省份和新疆生产建设兵团均已开展对重点人群的接种工作，累计完成接种874.5万人。</p><img src ="http://www.blogjava.net/beansoft/aggbug/301765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-10 10:00 <a href="http://www.blogjava.net/beansoft/archive/2009/11/10/301765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开封18岁高中生感染甲流死亡 系河南省首例</title><link>http://www.blogjava.net/beansoft/archive/2009/11/10/301763.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 10 Nov 2009 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/10/301763.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301763.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/10/301763.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301763.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301763.html</trackback:ping><description><![CDATA[<p>哎呀 河南也出事了…</p> <p>&nbsp; <p>开封18岁高中生感染甲流死亡 系河南省首例  <p>2009年11月09日18:08 　 <a href="http://www.chinanews.com.cn/">中国新闻网</a>  <p>中新社郑州十一月九日电 (记者李志全)河南开封一名十八岁高中生因<a href="http://news.qq.com/zt/2009/zlg/">甲流</a>重症抢救无效，于九日上午死亡。这是河南省出现的首例甲流死亡病例。  <p>河南省卫生厅通报称，该厅主要官员已带领所属应急、疾控、医政等部门负责人和河南省疾控、临床专家，立即赶赴开封调查处理。  <p>经初步调查，死亡患者为男性，系开封尉氏县的一名高中学生。一周前，该患者因受凉出现发热、咳嗽等感冒症状，在当地医疗机构治疗效果不佳。因病情加重，于本月七日晚十时左右入住河南大学淮河医院，其间病情持续加重，于八日上午病危。经市级专家组会诊，怀疑为甲流重症，后经实验室检测为阳性，会诊结果为甲流重症、重症肺炎。  <p>据介绍，河南省卫生厅于八日当晚接到报告后，立即派出省级临床专家组赴开封指导救治，认为诊断正确。后虽经积极组织抢救，治疗无效，于九日上午死亡。  <p>河南省卫生厅要求专家组和开封市卫生局认真对该死亡病例救治过程和在此之前的就医过程进行回顾调查，总结重症救治的经验教训，为各地甲流重症救治工作提供借鉴。  <p><strong>内地<a href="http://news.qq.com/zt/2009/zlg/">甲流</a>死亡病例不完全汇总： </strong> <p>11月09日 河南：<a href="http://news.qq.com/a/20091109/001998.htm">开封18岁高中生感染甲流死亡 系河南省首例</a>  <p>11月09日 福建：<a href="http://news.qq.com/a/20091109/002083.htm">出现首例甲流死亡病例 患者有多种基础性疾病</a>  <p>11月06日 甘肃：<a href="http://news.qq.com/a/20091106/000007.htm">出现首例甲流死亡病例 死者是33岁男性</a>  <p>11月05日 辽宁：<a href="http://news.qq.com/a/20091106/002063.htm">出现首例甲流死亡病例 系鞍山居民</a>  <p>11月05日 宁夏：<a href="http://news.qq.com/a/20091105/002039.htm">确诊首例甲型H1N1流感死亡病例</a>  <p>11月05日 河北：<a href="http://news.qq.com/a/20091105/001919.htm">出现首例甲流死亡病例 死者为中学生</a>  <p>11月05日 新疆：<a href="http://news.qq.com/a/20091105/000876.htm">新增一例甲流死亡病例 为中学学生</a>  <p>10月31日 湖南：<a href="http://news.qq.com/a/20091102/001816.htm">一例甲流危重病人死亡 患者为14岁中学生</a>  <p>10月31日 黑龙江：<a href="http://news.qq.com/a/20091031/001903.htm">出现首例甲型H1N1流感死亡病例</a>  <p>10月27日 北京：<a href="http://news.qq.com/a/20091028/001776.htm">北京航空航天大学1名学生患甲流医治无效死亡</a>  <p>10月26日 新疆：<a href="http://news.qq.com/a/20091027/001718.htm">新疆首次出现1例甲型H1N1流感死亡病例</a>  <p>10月17日 青海：<a href="http://news.qq.com/a/20091017/000194.htm">出现内地第2例甲流死亡病例</a>  <p>10月07日 西藏：<a href="http://news.qq.com/a/20091006/000991.htm">报告内地首例甲流死亡病例 为18岁女性</a><img src ="http://www.blogjava.net/beansoft/aggbug/301763.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-10 09:57 <a href="http://www.blogjava.net/beansoft/archive/2009/11/10/301763.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:log4j日志异步化大幅提升系统性能</title><link>http://www.blogjava.net/beansoft/archive/2009/11/09/301675.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 09 Nov 2009 03:50:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/09/301675.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301675.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/09/301675.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301675.html</trackback:ping><description><![CDATA[<p>来自: <a href="http://raymondhekk.javaeye.com/blog/229937">log4j日志异步化大幅提升系统性能 </a></p> <div id="page"> <div id="content" class="clearfix"> <div id="main"> <div class="blog_main"> <div class="blog_title"><strong>关键字: log4j 性能</strong> </div> <div class="blog_content"> <div style="text-indent: 21pt">经过大型J2EE项目实测，Log4j的日志输出对系统性能有比较显著的影响，尤其是日志输入量比较大时，例如：系统并发量很大，显示Hibernate的sql和参数日志，或日志级别较低DEBUG或INFO时等。</div> <div style="text-indent: 21pt">使用Async Logger控制日志输出可以显著改善系统性能。</div> <div style="text-indent: 21pt">&nbsp;</div> <div style="text-indent: 21pt">&nbsp;</div> <div style="text-indent: 21pt">1） 测试用例：同步文件日志输出</div> <div style="text-indent: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 测试功能：模块管理功能，</div> <div style="text-indent: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出Hibernate SQL和参数，输出到文件，配置如下：</div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender name="Hibernate_SQL" class="org.apache.log4j.DailyRollingFileAppender"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="File" value="log/Hibernate_SQL.log" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="Append" value="true" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="DatePattern" value="'.'yyyy-MM-dd-HH" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;layout class="org.apache.log4j.PatternLayout"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="ConversionPattern" value="%d [%-5p](%C,%L) - %m%n" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/layout&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/appender&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;category name="org.hibernate.SQL"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority value="TRACE" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="Hibernate_SQL" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/category&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;category name="org.hibernate.type"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority value="TRACE" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="Hibernate_SQL" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/category&gt;</span></div> <div style="text-indent: 21pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 运用JMeter进行压力测试，线程数50，运行4次，计算请求平均响应值（Rame-up Period: 1， 循环次数：1）</div> <div style="text-indent: 21pt">&nbsp;</div> <div style="text-indent: 21pt">&nbsp;</div> <div>测试结果：AVG: <span style="color: black">12565ms</span></div> <div>&nbsp;</div> <div style="text-indent: 21pt"><span style="color: black; font-size: 12pt">&nbsp;&nbsp;&nbsp; </span>2） 测试用例：异步文件日志输出</div> <div><span style="color: black; font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Log4j.xml </span><span style="color: black; font-size: 12pt">配置修改如下：</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; &lt;appender name="ASYNC_Hibernate_SQL" class="org.apache.log4j.AsyncAppender"&gt;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp; &lt;param name="BufferSize" value="512"/&gt;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="Hibernate_SQL"/&gt; </span></div> <div><span style="color: blue">&nbsp;&nbsp; &lt;/appender&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; &lt;category name="org.hibernate.SQL"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority value="TRACE" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="ASYNC_Hibernate_SQL" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; &lt;/category&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; &lt;category name="org.hibernate.type"&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority value="TRACE" /&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="ASYNC_Hibernate_SQL" /&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; &lt;/category&gt;</span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; </span></div> <div><span style="color: blue">&nbsp;&nbsp;&nbsp; </span><span style="color: blue">在BufferSize为 32， 64，128，256，512，2048时测试的请求平均耗时，及较测试用例1中的性能提高率对比如下所示：</span></div> <table style="border-collapse: collapse; margin-left: 5.4pt" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">同步，异步日志性能对比分析</span></div></td> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">（每次50并发，运行4次）</span></div></td> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="146"> <div>&nbsp;</div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">sync 日志输出</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">原时间消耗</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; padding-top: 0cm" valign="top" width="146"> <div>&nbsp;</div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; background: #99cc00; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div>&nbsp;</div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; background: #99cc00; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="background: #99cc00; color: black; font-size: 12pt">12565</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div>&nbsp;</div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">async 日志输出</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div>&nbsp;</div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div>&nbsp;</div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; background: #99cc00; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="background: #99cc00; color: black; font-size: 12pt">缓冲区大小</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; background: #99cc00; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="background: #99cc00; color: black; font-size: 12pt">平均耗时</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; background: #99cc00; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="background: #99cc00; color: black; font-size: 12pt">性能提高率</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">32</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">6744</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">46.33%</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">64</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">8487</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">32.46%</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">128</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">6899</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">45.09%</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">256</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">6606</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">47.43%</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">512</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">7306</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">41.85%</span></div></td></tr> <tr> <td style="padding-bottom: 0cm; padding-left: 5.4pt; width: 134.15pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="179"> <div><span style="color: black; font-size: 12pt">2048</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 163.55pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="218"> <div><span style="color: black; font-size: 12pt">3406</span></div></td> <td style="border-left: medium none; padding-bottom: 0cm; padding-left: 5.4pt; width: 109.5pt; padding-right: 5.4pt; border-top: medium none; padding-top: 0cm" valign="top" width="146"> <div><span style="color: black; font-size: 12pt">72.89%</span></div></td></tr></tbody></table> <div>&nbsp;</div> <div>&nbsp;&nbsp;&nbsp; 从结果可以看出，性能提高率最高<span> 47%。最低32%。缓冲为256时性能改善最佳， 提高47%</span></div> <div>&nbsp;&nbsp;&nbsp; </div> <div>结论：使用<span>Log4j的J2EE应用，日志的优化对系统性能有显著影响：</span></div> <div>&nbsp;&nbsp;&nbsp;&nbsp; 1）尽量减少不必要的日志输出，尤其要避免<span> root logger上过低级别的输出，避免在生产环境上向控制台输出日志。例如，下面的配置是很影响性能的，：</span></div> <div>&nbsp;&nbsp;&nbsp; &lt;root&gt;</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;priority value="DEBUG" /&gt;&nbsp; </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;appender-ref ref="CONSOLE" &gt;&nbsp;&nbsp; </div> <div>&nbsp;&nbsp;&nbsp; &lt;/root&gt;</div> <div>&nbsp;&nbsp;&nbsp; 2） 使用<span>Async logger输出日志，buffersize在相应日志频率下，越大越好，对于大型项目，可以选2048以上值。</span></div></div></div></div></div></div><img src ="http://www.blogjava.net/beansoft/aggbug/301675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-09 11:50 <a href="http://www.blogjava.net/beansoft/archive/2009/11/09/301675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic 最新版本下载地址</title><link>http://www.blogjava.net/beansoft/archive/2009/11/09/301659.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 09 Nov 2009 02:18:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/09/301659.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301659.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/09/301659.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301659.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301659.html</trackback:ping><description><![CDATA[<p><a title="http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html" href="http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html">http://www.oracle.com/technology/software/products/ias/htdocs/wls_main.html</a></p> <p>&nbsp;</p> <p>其它中间件下载地址</p> <p><a title="http://www.oracle.com/technology/software/products/middleware/index.html" href="http://www.oracle.com/technology/software/products/middleware/index.html">http://www.oracle.com/technology/software/products/middleware/index.html</a></p> <p>&nbsp;</p> <table border="0" cellspacing="0" summary="" cellpadding="0" width="100%"> <tbody> <tr> <td valign="top" width="100%"> <table border="0" cellspacing="0" summary="" cellpadding="0" width="100%"> <tbody> <tr> <td valign="top" width="100%"> <table style="height: 1px" id="rg10020" border="0" cellspacing="0" summary="" cellpadding="0" width="100%"> <tbody> <tr align="left"> <td style="padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px" valign="top" width="100%"> <table border="0" cellspacing="1" cellpadding="10" width="100%"> <tbody> <tr> <td width="100%"> <table border="0" cellspacing="5" cellpadding="0" width="100%"> <tbody> <tr valign="top" align="left"> <td colspan="2"> <table border="0" cellspacing="0" cellpadding="0" width="785"> <tbody> <tr> <td></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy">Microsoft Windows</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy">Linux</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy">Solaris</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy">Additional Platforms</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top">Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE - Package Installer<br><br><br>Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE - Package Installer (International Languages)<br><br><br>Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE - Net Installer <br><br><br>Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) - Net Installer <br><br><br>Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) - Package Installer <br><br><br>Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) - Package Installer (International Languages) <br><br><br><span class="bodycopy">More Info</span><a style="cursor: pointer"><span class="showstate"><img align="absMiddle" src="http://www.oracle.com/technology/software/products/ias/htdocs/files/show.gif"> </span></a><span class="bodycopy"><br><br></span></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">x86: 756 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/oepe11_wls1031.exe" name="file5" t_align="justify">File1</a><br><br><br><br>x86: 788 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/oepe11_ccjk_wls1031.exe" name="file7">File1</a> <br><br><br><br><br>x86: 38 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/net_oepe11_wls1031.exe" name="file9">File1<br><br><br><br><br><br><br><br><br></a>x86: 570 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/wls1031_win32.exe" name="file13" t_align="justify">File1</a><br><br><br><br>x86: 602 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/wls1031_ccjk_win32.exe" name="file17" t_align="justify">File1</a> </td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">x86: 773 MB<br><a class="textA" href="http://download.oracle.com/otn/linux/middleware/11g/wls/oepe11_wls1031_linux32.bin" name="file6">File1</a><br><br><br><br>x86: 805 MB<br><a class="textA" href="http://download.oracle.com/otn/linux/middleware/11g/wls/oepe11_ccjk_wls1031_linux32.bin" name="file8" t_align="justify">File1<br></a><br><br><br><br>x86: 42 MB<br><a class="textA" href="http://download.oracle.com/otn/linux/middleware/11g/wls/net_oepe11_wls1031_linux32.bin" name="file10">File1</a> <br><br><br><br><br><br><br><br><br>x86: 587 MB<br><a class="textA" href="http://download.oracle.com/otn/linux/middleware/11g/wls/wls1031_linux32.bin" name="file14">File1</a> <br><br><br><br>x86: 619 MB<br><a class="textA" href="http://download.oracle.com/otn/linux/middleware/11g/wls/wls1031_ccjk_linux32.bin" name="file18">File1</a> </td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>SPARC: 64 MB<br><a class="textA" href="http://download.oracle.com/otn/solaris/middleware/11g/wls/net_wls1031_solaris32.bin" name="file11">File1</a> <br><br><br><br>SPARC: 519 MB<br><a class="textA" href="http://download.oracle.com/otn/solaris/middleware/11g/wls/wls1031_solaris32.bin" name="file15" t_align="justify">File1</a> <br><br><br><br>SPARC:551 MB<br><a class="textA" href="http://download.oracle.com/otn/solaris/middleware/11g/wls/wls1031_ccjk_solaris32.bin" name="file19" t_align="justify">File1</a> <br></td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>Generic: 11 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/net_wls1031_generic.jar" name="file12">File1</a> <br><br><br><br>Generic: 581 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/wls1031_generic.jar" name="file16">File1</a> <br><br><br><br>Generic: 613 MB<br><a class="textA" href="http://download.oracle.com/otn/nt/middleware/11g/wls/wls1031_ccjk_generic.jar" name="file20">File1</a> </td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr> <tr> <td bgcolor="#ffffff" colspan="13"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table><span class="bodycopy"> <div id="sc1" class="switchcontent"> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#cccccc"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top" width="149">Descriptions:</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td bgcolor="#cccccc" width="749"> <ul class="bodycopy"> <li><span class="boldbodycopy">Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE - Package Installer</span> - This installer includes the Oracle WebLogic Server 11gR1 (10.3.1) package installer. This installer also includes Oracle Enterprise Pack for Eclipse 11g (11.1.1.1) which is Oracle's free Eclipse-based IDE for Java EE, Web Application, and Web Service development deploying to Weblogic Server. <br><br> <li><span class="boldbodycopy">Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE</span> - Package Installer (International Languages) - This installer includes the Oracle WebLogic Server 11gR1 (10.3.1) international languages (Japanese, Korean, Simplified Chinese, Traditional Chinese languages) package installer. This installer also includes Oracle Enterprise Pack for Eclipse 11g (11.1.1.1) which is Oracle's free Eclipse-based IDE for Java EE, Web Application, and Web Service development deploying to Weblogic Server. <br><br> <li><span class="boldbodycopy">Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) + OEPE - Net Installer</span> - The Net Installer is a download manager and installation program that allows you to download and install only the WebLogic Server components you select, without having to download the entire WebLogic Server installation package. You can always add more WebLogic Server components to your installation at a later time if you wish. This installer also includes Oracle Enterprise Pack for Eclipse 11g (11.1.1.1) which is Oracle's free Eclipse-based IDE for Java EE, Web Application, and Web Service development deploying to Weblogic Server. <br><br> <li><span class="boldbodycopy">Oracle WebLogic Server 11<i>g</i>R1 (10.3.1) - Package Installer (International Languages)</span> - This installer includes the Oracle WebLogic Server 11gR1 (10.3.1) international languages (Japanese, Korean, Simplified Chinese, Traditional Chinese languages) package installer. <br><br> <li><span class="boldbodycopy">Additional Platforms</span> - To use WebLogic Server with 64-bit JVM's on Linux and Solaris or to use WLS on other supported platforms, use the WebLogic Server Generic Installer. Unlike the platform-specific installers for Windows, Linux and Solaris, the generic installer does not include a JVM/JDK. For installer additonal installer location information, please see <a class="bodylink" href="http://www.oracle.com/WLS%2011gR1%20Installers_post.xls" target="_blank">this spreadsheet</a>. For instructions on using the generic installer program, see: <a class="bodylink" href="http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14142/start.htm#i1077535" target="_blank">http://download.oracle.com/docs/cd/E12839_01/doc.1111/e14142/start.htm#i1077535</a>. </li></ul></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table></div></span><span class="bodycopy"> <div id="sc1" class="switchcontent"></div></span> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#ffffff" valign="top">Oracle WebLogic Server 10.3 - Net Installer<br><br><br><br>Oracle WebLogic Server 10.3 - Package Installer<br><br><br></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">x86: 39 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/net_server103_win32.exe" name="file66">File1</a><br><br><br><br>x86: 742 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/server103_win32.exe" name="file71">File1</a></td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">x86: 42 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/net_server103_linux32.bin" name="file67" t_align="justify">File1</a><br><br><br><br>x86: 748 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/server103_linux32.bin" name="file72">File1</a></td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">SPARC: 47 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/net_server103_solaris32.bin" name="file68" t_align="justify">File1</a><br><br><br><br>SPARC: 463 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/server103_solaris32.bin" name="file73">File1</a> </td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">Generic: 8 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/net_server103_generic.jar" name="file69">File1</a> <br><br><br><br>Generic: 473 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server103/server103_generic.jar" name="file70">File1</a> </td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top"><font color="#ff0000">Mandatory for 10.3 Net/Package Installers:</font><br><br>- <a class="bodylink" href="http://www.oracle.com/technology/deploy/security/alerts/alert_cve2008-3257.html">Security Advisory</a> <br>- <a class="bodylink" href="http://download.oracle.com/otn/bea/weblogic/server103/WLSWebServerPlugins1.0.1150354-Apache.zip">Apache Plug-ins zip</a><br>- <a class="bodylink" href="http://download.oracle.com/docs/cd/E15051_01/wls/docs103//plugins/apache.html#wp131399">Instructions</a></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top">Oracle WebLogic Server 10.0 MP2<br><br>Oracle WebLogic Server 9.2 MP3<br><br></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">x86: 820 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/V16484-01.zip" name="file1">File1</a><br><br>x86: 636 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server923_win32.exe.zip" name="file63">File1</a> </td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">x86: 829 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/V16486-01.zip" name="file2">File1</a><br><br>x86: 639 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server923_linux32.bin.zip" name="file64">File1</a> </td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">SPARC: 765 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/V16488-01.zip" name="file3">File1</a><br><br>SPARC: 598 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/server923_solaris32.bin.zip" name="file65">File1</a></td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#ffffff" valign="top">Oracle WebLogic SIP Server 3.1<br><br><br></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">x86: 371 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/B48308-01.zip" name="file4">File1</a></td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">x86: 379 MB<br><a class="textA" href="http://download.oracle.com/otn/bea/weblogic/B46920-01.zip" name="file4a">File1</a></td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">&nbsp; </td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">&nbsp;</td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top"><span class="bodycopy">Documentation Library</span><br></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top" colspan="9"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><span class="bodycopy"><a class="textA" href="http://download.oracle.com/docs/cd/E12839_01/wls.htm" target="_blank">All</a></span></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table><br><br> <table border="0" cellspacing="0" cellpadding="0" width="785"> <tbody> <tr> <td class="secondNav" colspan="13"><span class="parahead1">Additional Fusion Middleware Downloads</span> <br></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td colspan="11"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td>&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="boldbodycopy"> <div align="center">Microsoft Windows</div></td> <td bgcolor="#cccccc"> <div align="center"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></div></td> <td class="boldbodycopy"> <div align="center">Linux</div></td> <td bgcolor="#cccccc"> <div align="center"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></div></td> <td class="boldbodycopy"> <div align="center">Solaris</div></td> <td bgcolor="#cccccc"> <div align="center"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></div></td> <td class="boldbodycopy"> <div align="center"></div></td> <td bgcolor="#cccccc"> <div align="center"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></div></td> <td class="boldbodycopy"> <div align="center"></div></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top">Oracle Coherence<br><br></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top" colspan="5"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><span class="bodycopy"><a class="textA" href="http://www.oracle.com/technology/software/products/ias/htdocs/coherence.html" target="_blank">All versions</a></span></td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr> <tr> <td bgcolor="#ffffff" colspan="13"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table><span class="bodycopy"> <div id="sc1" class="switchcontent"></div></span> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#ffffff" valign="top">Oracle JRockit<br><br></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top" colspan="5"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><span class="bodycopy"><a class="textA" href="http://www.oracle.com/technology/software/products/jrockit/index.html" target="_blank">All versions</a></span></td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">&nbsp;</td> <td bgcolor="#cccccc" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#cccccc" valign="top">Oracle WebLogic Operations Control<br><br></td> <td bgcolor="#ffffff"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top" colspan="5"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><span class="bodycopy"><a class="textA" href="http://www.oracle.com/technology/software/products/wloc/index.html" target="_blank">All versions</a></span></td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#ffffff" valign="top"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#cccccc" valign="top">&nbsp;</td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td></tr></tbody></table> <table border="0" cellspacing="0" cellpadding="0" width="785" bgcolor="#ffffff"> <tbody> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="149" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="140" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="120" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="125" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="124" height="1"></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td></tr> <tr> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1" height="1"></td> <td class="boldbodycopy" bgcolor="#ffffff" valign="top">Oracle WebLogic Server 11<i>g</i> Release 1 Virtual Edition Early Access<br><br></td> <td bgcolor="#cccccc"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"></td> <td class="bodycopy" bgcolor="#ffffff" valign="top" colspan="5"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><img border="0" src="http://www.oracle.com/files/spacer_transp.gif" width="1"><span class="bodycopy"><a class="textA" href="http://www.oracle.com/technology/software/products/ias/htdocs/wls-virtual-index.html" target="_blank">All versions</a></span></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table></td></tr></tbody></table><img src ="http://www.blogjava.net/beansoft/aggbug/301659.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-09 10:18 <a href="http://www.blogjava.net/beansoft/archive/2009/11/09/301659.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic JDBC 驱动的配置</title><link>http://www.blogjava.net/beansoft/archive/2009/11/09/301658.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 09 Nov 2009 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/09/301658.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301658.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/09/301658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301658.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301658.html</trackback:ping><description><![CDATA[<p>问: weblogic 有自带的哪些数据库的驱动程序吗？  <p>答: C:\bea\wlserver_10.0\server\ext 下有  <p>默认只有Oracle和mysql, sqlserver的  <p>&nbsp;</p> <p>其它驱动 可以扔到目录里  <p>&nbsp;</p> <p>C:\bea\wlserver_10.0\server\lib</p> <p>这是全局的</p> <p>另外</p> <p>C:\bea\user_projects\domains\base_domain\lib  <p>&nbsp;</p> <p>这是每个domain下的共享目录</p> <p>&nbsp;</p> <p>如果是weblogic 8 对不起 只能手工改启动脚本了 加到 classpath 里</p> <p>.. oracle 安装目录下 都有一个 jdbc 目录  <p>驱动包classes12.jar用于JDK 1.2和JDK 1.3，而ojdbc14.jar用于JDK 1.4及以上</p><img src ="http://www.blogjava.net/beansoft/aggbug/301658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-09 10:15 <a href="http://www.blogjava.net/beansoft/archive/2009/11/09/301658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Spring和WebLogic版本兼容的一点小提示</title><link>http://www.blogjava.net/beansoft/archive/2009/11/06/301429.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 06 Nov 2009 06:14:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/06/301429.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301429.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/06/301429.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301429.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301429.html</trackback:ping><description><![CDATA[<h3>关于Spring和WebLogic版本兼容的一点小提示</h3> <p><a href="http://www.weblogicfans.net/tag.php?name=Spring">Spring</a>, <a href="http://www.weblogicfans.net/tag.php?name=WebLogic">WebLogic</a>, <a href="http://www.weblogicfans.net/tag.php?name=%CC%E1%CA%BE">提示</a> <p>首先 WebLogic 的各个版本和 JDK 绑定的很紧, 或者说是专门针对某个 JDK 优化过的代码, 因此, WebLogic 不是说随意修改启动 JDK 都能运行, 高了和低了都不能启动, 举个例子:<br>WebLogic 8 支持 JDK 1.4, 那么用 JDK 1.5 或者 JDK 1.3 都不能正常启动, 这一点和 Tomcat 是很不一样的.<br>为什么要扯这个话题呢? 是因为 Spring 的各个版本也对 JDK 略有限制, 并非各个版本的 Spring 都可以在 WebLogic 上正常运行. 有很多同志还在用 WebLogic 8( JDK 1.4), 那么提醒大家, 现在最新的很多开源框架都是不支持或者不直接支持 JDK 1.4 了, 大部分都需要 JDK 1.5 以上版本, 例如 Spring 2.5, Struts 2(Struts 2 需要一个特殊的包才能跑在 JDK 1.4 上), 至于 JPA, 大家根本不要想它能在 WebLogic 8 上跑, 因为 JPA 依赖于 Java 5 的注解.<br>建议用最新版的 WebLogic 来开发项目, 这样BUG和问题都会少的多.<br>请参考文末的 Spring 文档的说明: <a href="http://docs.huihoo.com/spring/2.5.x/zh-cn/new-in-2.html">http://docs.huihoo.com/spring/2.5.x/zh-cn/new-in-2.html</a><br><strong>Java SE 与 Java EE 支持</strong><br>Spring Framework继续保持与所有Java版本的兼容性 - 从Java 1.4.2开始(包括1.4.2)。这意味着spring对Java1.4.2,Java 5和 Java 6都支持， 但是Spring Framework的一些高级功能无法在1.4.2中使用。从Spring 2.5起,Spring框架完全支持Java 6，而Spring 2.0则对Java 5支持比较好。<br>此外，Spring延续了对J2EE 1.3及更高版本的兼容性，同时对Java EE 5提供完全支持。也就是说，Spring可以继续在应用服务器中运行，包括 BEA WebLogic 8.1, 9.0, 9.2 和 10, IBM WebSphere 5.1, 6.0 和 6.1, Oracle OC4J 10.1.3 和 11, JBoss 3.2, 4.0 和 4.2, 以及 Tomcat 4.1, 5.0, 5.5 和 6.0, Jetty 4.2, 5.1 和 6.1, Resin 2.1, 3.0 和 3.1 还有 GlassFish V1 和 V2. <p>&nbsp;</p> <p>&nbsp;</p> <p>另外 edoc 上也描述了 WebLogic 9 中运行 Spring 可能出现的问题, 地址:<br><a href="http://edocs.weblogicfans.net/wl ... esolved.html#spring">http://edocs.weblogicfans.net/wl ... esolved.html#spring</a><br>建议大家没事多阅读 edoc...<br>WebLogic Server 上的 Spring Framework<br>WebLogic Server 上的 Spring Framework  <p>更改请求编号 <br>描述和变通方法或解决方案 <br>找到位置 <br>解决位置  <p>CR242675 <br>在 RMI 类加载器中发生了 NullPointerException。 <br><strong>变通方法或解决方案</strong>： <br>请与 BEA 客户支持联系以获取 WebLogic Server/Spring 合并修补程序。 <br>9.0 <br>9.2  <p>CR236708 <br>在 Hibernate 3 和 WebLogic Server 之间存在 Antlr 冲突。 <br><strong>变通方法或解决方案</strong>： <br>将 Antlr2.7.5.jar 放在 CLASSPATH 中的 weblogic.jar 之前。 <br>8.1SP05、9.0 <br>9.2  <p>CR242923 <br>T3 运行时无法对包含基元类型的类描述符进行解码。 <br><strong>变通方法或解决方案</strong>： <br>请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。 <br>9.0 <br>9.2  <p>CR242883 <br>IIOP 运行时无法对包含基元类型的类描述符进行解码。 <br><strong>变通方法或解决方案</strong>： <br>请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。 <br>9.0 <br>9.2  <p>CR237532 <br>Spring Framework 存在 Web 应用程序类加载问题。 <br><strong>变通方法或解决方案</strong>： <br>请与 BEA 客户支持联系以获取 WebLogic Server-Spring 合并修补程序。 <br>8.1SP05、9.0 <br>9.2  <p>CR241195 <br>在 Spring Pet Clinic 示例应用程序中更新记录会导致以下错误： <br>java.lang.IllegalStateException: Cannot access session scope since the <br>requested page does not participate in a session. at <br>weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:273) <br>at javax.servlet.jsp.jstl.core.Config.get(Config.java:145) at <br>javax.servlet.jsp.jstl.core.Config.find(Config.java:393) at <br>org.apache.taglibs.standard.tag.common.fmt.TimeZoneSupport.getTimeZone(TimeZoneSupport.java:140) <br><strong>变通方法或解决方案</strong>： <br>将 includes.jsp 文件中的第一行标记为注释。 <br>9.0 <br>9.2  <p>CR244683 <br>HP-UX 需要 jdk150_01，而不是 jdk150_03。 <br><strong>变通方法或解决方案</strong>： <br>在 medrec-spring 目录中，使用 jdk150_01 替换 jdk150_03。 <br>9.0 <br>9.2  <p>CR244693 <br>当您从远程计算机上访问 MedRec-Spring 时，MedRec-Spring 退出功能不起作用。 <br><strong>变通方法或解决方案</strong>： <br>不从远程计算机访问 MedRec-Spring 应用程序，并且不将 localhost 用于请求重定向。 <br>9.0 <br>9.2  <p>CR244691 <br>对 WebLogic 管理控制台的 Spring 扩展仅支持 Web 应用程序 (.war) 文件，无法用于监视非 .war 文件（如 MedRec-Spring）中的 Spring Bean。 <br>9.0 <br>9.2  <p>CR243957 <br>使用 CTRL-C 关闭 WebLogic Server 时，如果正在破坏 bean domainMBeanServerConnection，则可能会发生关闭异常。 <br><strong>变通方法或解决方案</strong>： <br>使用标志 -Dweblogic.slc=true 以便确定启动和停止 domainRuntimeServerService 的时间。 <br>9.0 <br>9.2  <p>CR280985 <br>无法通过将 countries_mbeans.war 应用程序复制到 WebLogic Server 域目录的 autodeploy 目录来自动部署该应用程序。countries_mbeans.war Web 应用程序是一个 Spring 测试扩展应用程序。 <br><strong>变通方法或解决方案</strong>： <br>使用 WebLogic Server 管理控制台来部署 countries_mbeans.war Web 应用程序，而不是自动部署。 <br>9.2  <p>CR301115 <br>在 Spring Pet Clinic 示例应用程序中运行单元测试会导致以下错误： <br>从 weblogic.xml.jaxp.RegistrySAXTransformerFactory 中找不到有效的处理器版本实现 <br><strong>变通方法或解决方案： </strong><br>通过将以下条目添加到 $java.home/lib/jaxp.properties 文件来定义 XML 解析器类：  <ul> <li>javax.xml.transform.TransformerFactory=org.apache.xalan.processor.TransformerFactoryImpl  <li>javax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl  <li>javax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl  <li>javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</li></ul><br>9.2  <p>CR300748 <br>访问部署到 WebLogic Server 9.2 的 tiles-samples 时会出现异常。 <br>9.2 </p><img src ="http://www.blogjava.net/beansoft/aggbug/301429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-06 14:14 <a href="http://www.blogjava.net/beansoft/archive/2009/11/06/301429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic Server 11g节点管理器和Machine配置单机版（Windows）</title><link>http://www.blogjava.net/beansoft/archive/2009/11/06/301428.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 06 Nov 2009 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/06/301428.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301428.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/06/301428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301428.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301428.html</trackback:ping><description><![CDATA[<p><b>WebLogic Server 11g</b><b>节点管理器和</b><b>Machine</b><b>配置单机版（</b><b>Windows</b><b>）</b> <p>（本文讲述如何在WebLogic Server 11g上配置集群中的节点服务器，以及通过控制台启动和停止服务器） <p>2009-11-6 <p>作者: 刘长炯 <a href="mailto:BeanSoft@126.com">BeanSoft@126.com</a> <p>&nbsp; <p><a href="http://beansoft.blogjava.net/">http://beansoft.blogjava.net/</a> <p>&nbsp; <p>合作伙伴: <a href="http://www.weblogicfans.net/">http://www.weblogicfans.net/</a> <p>&nbsp; <p>下载PDF: <a title="http://tomcatmonitor.googlecode.com/files/WebLogic_Server_11g_NodeMan_sp.zip" href="http://tomcatmonitor.googlecode.com/files/WebLogic_Server_11g_NodeMan_sp.zip">http://tomcatmonitor.googlecode.com/files/WebLogic_Server_11g_NodeMan_sp.zip</a> 1.1MB <img src ="http://www.blogjava.net/beansoft/aggbug/301428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-06 14:05 <a href="http://www.blogjava.net/beansoft/archive/2009/11/06/301428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>迟来的新闻: iBATIS 3 beta 5 发布</title><link>http://www.blogjava.net/beansoft/archive/2009/11/05/301244.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Thu, 05 Nov 2009 04:02:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/05/301244.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/301244.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/05/301244.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/301244.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/301244.html</trackback:ping><description><![CDATA[<p><a href="http://ibatis.apache.org/#"><img style="border-bottom: 0px; border-left: 0px; border-top: 0px; border-right: 0px" border="0" alt="iBATIS Data Mapper process" src="http://ibatis.apache.org/images/flow_sm.jpg"></a></p> <p>项目主页: <a title="http://ibatis.apache.org/" href="http://ibatis.apache.org/">http://ibatis.apache.org/</a></p> <p>当您不会调优 Hibernate 但精通 JDBC/SQL 的时候, 表设计不符合 OO 规则的时候, 系统的业务逻辑靠存储过程的时候, iBATIS 是您的不二之选.</p> <p>&nbsp;</p> <h3>iBATIS 3 Beta 5</h3> <p><small>Posted by Clinton Begin on Nov 1, 2009</small> <p>Only a few minor issues were submitted over the last few weeks, and all have been addressed. It's been pretty quiet, and so I'm gaining more confidence in this release. Could Beta 5 be the one that goes GA? Only you can say for sure. Give it a try, and let us know!  <p><a href="http://ibatis.apache.org/java.cgi">Get iBATIS 3.0 from the Java page …</a> <p>&nbsp; <p>中文教程:  <ul> <li><a href="http://svn.apache.org/">..</a> <li><a href="http://svn.apache.org/iBATIS-SqlMaps-2-Tutorial_cn.pdf">iBATIS-SqlMaps-2-Tutorial_cn.pdf</a> <li><a href="http://svn.apache.org/iBATIS-SqlMaps-2_cn.pdf">iBATIS-SqlMaps-2_cn.pdf</a></li></ul> <p>&nbsp; <p>参考资料: <li> <h5><a href="http://www.blogjava.net/beansoft/archive/2008/03/31/189795.html"><em>iBATIS</em>的代码生成工具Abator 1.1的Eclipse插件版使用视频- BeanSoft's <b>...</b></a></h5> <p>2008年3月31日 <b>...</b> Abator可以从数据库生成<em>iBATIS</em>的映射文件和实体类，DAO等，今天也发现很久没更新的<em>iBATIS</em>在2008年3月25日推出了新版本：<em>iBATIS</em> 2.3.1 Beta。 <b>...</b><br><cite>www.blogjava.net/beansoft/archive/2008/.../189795.html - </cite><a href="http://203.208.37.132/search?q=cache:WZlQbLHGzg4J:www.blogjava.net/beansoft/archive/2008/03/31/189795.html+iBATIS&amp;cd=1&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy2-Qm1iPPVDmVlYhlZ05z_ixQub4Lg">网页快照</a> - <a href="http://www.google.cn/search?hl=zh-CN&amp;domains=www.blogjava.net/beansoft&amp;sitesearch=www.blogjava.net/beansoft&amp;newwindow=1&amp;oe=GB2312&amp;q=related:www.blogjava.net/beansoft/archive/2008/03/31/189795.html">类似结果</a></p> <li> <h5><a href="http://www.blogjava.net/beansoft/archive/2008/04/02/190341.html">分享两个小代码：<em>ibatis</em>简单示例和在浏览器中同时选中多文件上传 <b>...</b></a></h5> <p>http://cid-519b3f7aa2172030.skydrive.live.com/self.aspx/Public/<em>ibatis</em>/<em>ibatis</em>.zip IMB 这是个我写的<em>iBATIS</em>的入门单表映射例子，MySQL开发，注释完整，表还是我常用 <b>...</b><br><cite>www.blogjava.net/beansoft/archive/2008/.../190341.html - </cite><a href="http://203.208.37.132/search?q=cache:fAVuLQJf7bIJ:www.blogjava.net/beansoft/archive/2008/04/02/190341.html+iBATIS&amp;cd=2&amp;hl=zh-CN&amp;ct=clnk&amp;gl=cn&amp;st_usg=ALhdy2-UhaCac9cl-NNI_xsByqAAPgz51g">网页快照</a> - <a href="http://www.google.cn/search?hl=zh-CN&amp;domains=www.blogjava.net/beansoft&amp;sitesearch=www.blogjava.net/beansoft&amp;newwindow=1&amp;oe=GB2312&amp;q=related:www.blogjava.net/beansoft/archive/2008/04/02/190341.html">类似结果</a></p></li><img src ="http://www.blogjava.net/beansoft/aggbug/301244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-05 12:02 <a href="http://www.blogjava.net/beansoft/archive/2009/11/05/301244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>原创轻量级SQL Insert语句生成器</title><link>http://www.blogjava.net/beansoft/archive/2009/11/03/300937.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 03 Nov 2009 09:17:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/03/300937.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300937.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/03/300937.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300937.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300937.html</trackback:ping><description><![CDATA[
		<p>参考: <a href="/beansoft/archive/2009/05/24/277713.html">本人原创工具类: StringUtil</a></p>
		<p>程序输出: 
</p>
		<p>
				<strong>insert into User ( name, age ) values( 'BeanSoft', 27 )</strong>
		</p>
		<p>
		</p>
		<p>import java.util.*; 
</p>
		<p>import StringUtil; 
</p>
		<p>/**<br />* 生成 Insert SQL 语句的类.<br />* @author beansoft<br />* @date 2009-4-5<br />*/<br />public class SQLInsert extends HashMap&lt;String, Object&gt; {<br />    private String table;// 表格名<br />    private String columns;// 列名表, 以逗号隔开<br />    /** 是否检查列名有效性 */<br />    private boolean checkColumn = true;<br />    /** 是否允许重复设置列值, 默认允许 */<br />    private boolean allowDuplicate = true;<br />    /** 列表, 保存可能的列名 */<br />    private List&lt;String&gt; columnList = new ArrayList&lt;String&gt;();<br />    public SQLInsert() {}<br />    /**<br />     * 给定表名和列名(用来检验)的构造器.<br />     * @param table - 表名<br />     * @param columns - 列名(用来检验)<br />     */<br />    public SQLInsert(String table, String columns) {<br />        setTable(table);<br />        setColumns(columns);<br />    }<br />    public static void main(String[] args) {<br />        SQLInsert insert = new SQLInsert();<br />        insert.setTable("User");<br />        insert.setColumns("name, age");<br />        insert.put("name", "BeanSoft");<br />        insert.put("age", 27);<br />        System.out.println(insert);<br />    }<br />    public String toString() {<br />        if(table == null || table.length() == 0) {<br />            throw new Error("对不起, 请调用 setTable() 指定表名");<br />        }<br />        String sql = "insert into " + table + " ( ";<br />        String values = "values( ";<br />        if(this.size() == 0) {<br />            throw new Error("对不起, 没有任何列值, 无法生成 INSERT 语句");<br />        }  else if(columnList.size()  == 0){<br />            // 尝试从主键列表生成列名列表<br />            String[] cols = this.keySet().toArray(new String[0]);<br />            for(String col: cols) {<br />                columnList.add(col);<br />            }<br />        }<br />//        System.out.println("columnList=" + columnList.size());<br />        if(columnList.size() &gt; 0 ) {<br />            for (int i = 0; i &lt; columnList.size(); i++) {<br />                String col = columnList.get(i);<br />                Object value = this.get(col);<br />                if(value == null &amp;&amp; checkColumn) {<br />                    throw new Error("对不起, 列[" + col + "]的值为空");<br />                }<br />                sql += col;<br />                if(!StringUtil.isNumeric(value + "")) {<br />                    values += "'" + value + "'";<br />                } else {<br />                    values += value;<br />                }<br />                if (columnList.size() &gt; 1 &amp;&amp; (i != columnList.size() - 1)) {<br />                    sql += (", ");<br />                    values += (", ");<br />                }<br />            }<br />        } 
</p>
		<p>        sql += (" ) ");<br />        values += (" )"); 
</p>
		<p>//        System.out.println("自动生成的 sql = " + sql + values);<br />        return sql + values;<br />    } 
</p>
		<p>    /**<br />     * @param columns the 列名表, 以逗号隔开 to set<br />     */<br />    public void setColumns(String columns) {<br />        this.columns = columns;<br />        columnList.clear();<br />        if(columns != null) {<br />            // 替换空格等字符, 否则解析会出错<br />            StringBuffer buff = new StringBuffer();<br />            for(int i = 0; i &lt; columns.length(); i++) {<br />                char ch = columns.charAt(i);<br />                if(Character.isSpaceChar(ch)) {<br />                    continue;<br />                }<br />                buff.append(ch);<br />            }<br />            String[] cols = buff.toString().split(",");<br />//            System.out.println("cols.length=" + cols.length);<br />            for(String col: cols) {<br />                columnList.add(col);<br />            }<br />        }<br />    } 
</p>
		<p>    /**<br />     * @return the 是否允许重复设置列值, 默认允许<br />     */<br />    public boolean isAllowDuplicate() {<br />        return allowDuplicate;<br />    } 
</p>
		<p>    /**<br />     * @param allowDuplicate the 是否允许重复设置列值, 默认允许 to set<br />     */<br />    public void setAllowDuplicate(boolean allowDuplicate) {<br />        this.allowDuplicate = allowDuplicate;<br />    } 
</p>
		<p>    /**<br />     * @return the 是否检查列名有效性<br />     */<br />    public boolean isCheckColumn() {<br />        return checkColumn;<br />    } 
</p>
		<p>    /**<br />     * @param checkColumn the 是否检查列名有效性 to set<br />     */<br />    public void setCheckColumn(boolean checkColumn) {<br />        this.checkColumn = checkColumn;<br />    } 
</p>
		<p>    /**<br />     * @return the 列名表, 以逗号隔开<br />     */<br />    public String getColumns() {<br />        return columns;<br />    } 
</p>
		<p>    /**<br />     * 表格名<br />     * @return<br />     */<br />    public String getTable() {<br />        return table;<br />    } 
</p>
		<p>    /**<br />     * 表格名<br />     * @param table<br />     */<br />    public void setTable(String table) {<br />        this.table = table;<br />    }<br />}</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/300937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-03 17:17 <a href="http://www.blogjava.net/beansoft/archive/2009/11/03/300937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DropBox 超实用的免费文件网络同步、备份、分享工具</title><link>http://www.blogjava.net/beansoft/archive/2009/11/03/300880.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 03 Nov 2009 05:20:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/03/300880.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300880.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/03/300880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300880.html</trackback:ping><description><![CDATA[<p><a title="http://www.iplaysoft.com/dropbox.html" href="http://www.iplaysoft.com/dropbox.html">http://www.iplaysoft.com/dropbox.html</a></p> <p>&nbsp;</p> <p>现在拥有多台电脑或经常奔走使用多台不同电脑的朋友可以说是灰常灰常的普遍了。相信很多朋友都是使用U盘来储存一些日常使用的程序、工作文档等文件资料以便在每台电脑上都能顺利地工作。但大家有没遇到过，有时在某台电脑上修改了某文档，忘记了复制回U盘里，去到另一台电脑才发现那个文档并不是最新的。当这样的情况出现的次数比较多时，该文档的版本将会非常多且混乱，又需要一番心机去比较整理才行了。这时，你是否觉得如果这些文件/文档能<a href="http://www.iplaysoft.com/dropbox.html">自动同步</a>那该是多好啊！<br><a href="http://www.iplaysoft.com/dropbox.html">DropBox</a> 就是一款非常好用的<strong>免费网络文件同步工具</strong>(当然它也算是一个服务)。当你在电脑A使用DropBox时，指定文件夹里所有文件的改动均会自动地“<a href="http://www.iplaysoft.com/dropbox.html">同步</a>”到DropBox的服务器，当下次你在电脑B需要使用这些文件时，你只需登录你的账户，所有被同步的文件均会自动下载到B电脑中，同样，你在电脑B对某文件的修改，也会体现在电脑A上，而所有这一切均是全自动的，这样你的文件可以说是随时随地都能保持着最新了，下面我们一起来看看<a href="http://www.iplaysoft.com/dropbox.html">DropBox</a>吧……<br>&nbsp;&nbsp;&nbsp; 使用Dropbox前，需要先安装它的桌面客户端，<a href="http://www.iplaysoft.com/dropbox.html">DropBox</a> 提供了Windows、Mac和 Linux 版本，可以跨平台实现文件同步！并且它还提供Web访问功能，当你在不方便安装客户端的地方可以通过Web在浏览器访问你的文件，将它们下载回来使用。 <p><img alt="DropBox 超实用的免费文件网络同步、备份、分享工具" src="http://img.iplaysoft.com/wp-content/uploads/2008/472/xf_7815668_2.jpg"><br>通过Web浏览器访问我的文件 <p>&nbsp;&nbsp;&nbsp; DropBox 的 Windows 版客户端与Windows 集成得很好（Mac版的我还没用过不好说），直接将文件拷贝进设定好的同步目录，它们就能瞬间（总之很快啦）实现文件同步。当该文件的图标左下角出现绿色的钩钩就表示它已经同步好了。当然Dropbox还可以自动同步更新修改后的文件。并且，你还可以设置文件夹属性为公开或者私有，甚至将其共享给朋友共同操作编辑。除此而外，Dropbox还提供版本控制，即使误删文档也能够复原。 <p><img alt="DropBox 超实用的免费文件网络同步、备份、分享工具" src="http://img.iplaysoft.com/wp-content/uploads/2008/472/xf_7815668_3.jpg"><br>同步完成的文件左下角会出现绿色的钩子 <p><strong>DropBox的特性：</strong><br>1、处基本的客户端外，Dropbox 提供 web 访问，可以很方便地在任何地方访问自己的文件。<br>2、Dropbox提供文件共享功能，并且能支持文件下载地址的外链（非下载页面）；Dropbox 文件链接路径的形式都是“固定目录+文件名” 文件名是完全自定义的，而不像有些网盘把文件名变成一串随机数字。 <p><img alt="DropBox 超实用的免费文件网络同步、备份、分享工具" src="http://img.iplaysoft.com/wp-content/uploads/2008/472/xf_7815668_4.jpg"><br>DropBox可以很方便地复制文件的下载地址与朋友分享 <p>3、免费用户拥有2G容量，对很多人来说已经足够了，并且免费用户稳定性也极高，至少我到现在均没发现连接失败的情况，上传下载速度在国内均很快，完全可以接受的。<br>4、提供文件<a href="http://www.iplaysoft.com/dropbox.html">版本控制功能</a>，这个功能可以说是灰常爽的！！接触过编程的朋友如果用过SVN/CVS等版本控制的话，就知道它有多爽了。<br>5、你对文件修改后不需要手动去上传文件，Dropbox会自动在后台为你静默同步的。同样，在别的电脑修改文件后你也不需手动下载，Dropbox也会自动为你更新本地的文件的。<br>6、Dropbox 对图片的支持更好，它整合了相册功能，让你的照片同步更方便。 <p><img alt="DropBox 超实用的免费文件网络同步、备份、分享工具" src="http://img.iplaysoft.com/wp-content/uploads/2008/472/xf_7815668_5.jpg"><br>Dropbox 整合相册功能 <p>7、Dropbox 具有协同合作的功能，可以邀请朋友共同对某一文件夹内的文件进行编辑与更新。<br>&nbsp;&nbsp;&nbsp; 由于<a href="http://www.iplaysoft.com/dropbox.html">DropBox</a>的同步特性，我们可以很方便地打造出一些很实用的同步应用。例如 <strong>DropBox同步</strong> <a href="http://www.iplaysoft.com/websaver.html">网博士</a>、<strong>OneNote</strong>、<strong>网文快捕</strong>等软件的数据库打造无处不在的笔记本。如果你使用EverNote3，虽然它本身提供网络同步功能，可是免费用户仅有40M/月的流量，基本上都不够用的，这时我们也可以用DropBox同步EverNote的数据库，实现山寨版的同步功能，呵呵。又如将 DropBox 与 KeePass 合用打造移动密码库、同步你的工作目录、编程代码、文档报表、相册照片……<br>&nbsp;&nbsp;&nbsp; 总的来说对<a href="http://www.iplaysoft.com/dropbox.html">Dropbox</a>的印象很深刻，它已经远远不只是一款网络硬盘那么简单了！它可能不是最好的数据备份解决方案或文件分享的网络硬盘，但它跨平台的同步功能和版本控制功能足以让它在一系列web服务中脱颖而出…… <p>这里有官方的演示视频，很简单的，不懂英文一样可以看的明白。^^<br>点击这里<a href="https://www.getdropbox.com/screencast#">观看看官方原版</a>(更清晰) <p>文件详情： DropBox<br>发布日期： 2009.01.05<br>官方网站： <a href="http://www.getdropbox.com">http://www.getdropbox.com</a><br>文件发布： <a href="http://www.iplaysoft.com">异次元</a> <p><strong>下载地址：</strong> <a href="http://dl.iplaysoft.com/files/140.html">DropBox Windows版</a>&nbsp; |&nbsp; <a href="http://www.iplaysoft.com/dropbox.html">来自异次元</a>&nbsp; |&nbsp; <a href="http://dl.iplaysoft.com/files/141.html">Mac版</a>&nbsp; |&nbsp; <a href="http://dl.iplaysoft.com/files/142.html">Linux版</a> | <a href="https://www.getdropbox.com/referrals/NTI1Mjc4MTk">注册帐号</a><img src ="http://www.blogjava.net/beansoft/aggbug/300880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-03 13:20 <a href="http://www.blogjava.net/beansoft/archive/2009/11/03/300880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WebLogic Server 11g 集群配置单服务器版(Windows) 原创PDF</title><link>http://www.blogjava.net/beansoft/archive/2009/11/02/300750.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 02 Nov 2009 08:23:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/02/300750.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300750.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/02/300750.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300750.html</trackback:ping><description><![CDATA[
		<p>
				<a title="http://tomcatmonitor.googlecode.com/files/WebLogicServer11gCluster_SingleMachine.pdf" href="http://tomcatmonitor.googlecode.com/files/WebLogicServer11gCluster_SingleMachine.pdf">http://tomcatmonitor.googlecode.com/files/WebLogicServer11gCluster_SingleMachine.pdf</a> 892KB</p>
		<p> </p>
		<p>
				<a href="/images/blogjava_net/beansoft/WindowsLiveWriter/WebLogicServer11gWindows_E62B/image_4.png">
						<img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/WebLogicServer11gWindows_E62B/image_thumb_1.png" width="587" height="612" />
				</a>
		</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/300750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-02 16:23 <a href="http://www.blogjava.net/beansoft/archive/2009/11/02/300750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat内存溢出总结（转）</title><link>http://www.blogjava.net/beansoft/archive/2009/11/02/300662.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 02 Nov 2009 03:56:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/02/300662.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300662.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/02/300662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300662.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300662.html</trackback:ping><description><![CDATA[<p><a title="http://www.beckdim.cn/?p=110" href="http://www.beckdim.cn/?p=110">http://www.beckdim.cn/?p=110</a></p> <p>&nbsp;</p> <p>在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的，当然处理方式也不一样。<br>这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.OutOfMemoryError: Java heap space<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.OutOfMemoryError: PermGen space<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.OutOfMemoryError: unable to create new native thread.<br>对于前两种情况，在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。（-Xms -Xmx -XX:PermSize&nbsp; -XX:MaxPermSize）<br>最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。<br>第一种：是堆溢出。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在JVM中如果98％的时间是用于GC且可用的 Heap size 不足2％的时候将抛出此异常信息。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没有内存泄露的情况下，调整-Xms -Xmx参数可以解决。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xms:初始堆大小 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xmx:最大堆大小 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但堆的大小受下面三方面影响：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.相关操作系统的数据模型（32-bt还是64-bit）限制；（32位系统下，一般限制在1.5G~2G；我在2003 server 系统下（物理内存：4G和6G，jdk：1.6）测试 1612M，64为操作系统对内存无限制。）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.系统的可用虚拟内存限制；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.系统的可用物理内存限制。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 堆的大小可以使用 java -Xmx***M&nbsp; version 命令来测试。支持的话会出现jdk的版本号，不支持会报错。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m <p>第二种：永久保存区域溢出<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域，它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理，所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。<a href="http://www.javaeye.com/topic/80620?page=1">http://www.javaeye.com/topic/80620?page=1</a> 的帖子有讨论的这个问题。可能是由于这些框架会动态class，而且jvm的gc是不会清理PemGen space的，导致内存溢出。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这一个一般是加大-XX:PermSize&nbsp; -XX:MaxPermSize 来解决问题。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:PermSize 永久保存区域初始大小<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -XX:PermSize 永久保存区域初始最大值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这一般结合第一条使用，比如 set JAVA_OPTS= -Xms1024m -Xmx1024m&nbsp; -XX:PermSize=128M -XX:PermSize=256M<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一点需要注意：java -Xmx***M&nbsp; version 命令来测试的最大堆内存是 -Xmx与 -XX:PermSize的 和 比如系统支持最大的jvm堆大小事1.5G，那&nbsp; -Xmx1024m&nbsp; -XX:PermSize=768M 是无法运行的。<br>第三种：无法创建新的线程。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种现象比较少见，也比较奇怪，主要是和jvm与系统内存的比例有关。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G)，并且它至少要占用可用内存的一半。有人发现，在线程个数很多的情况下，你分配给JVM的内存越多，那么，上述错误发生的可能性就越大。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 产生这种现象的原因如下（<a href="http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html">从这个blog中了解到原因：http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html</a>）： <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每一个32位的进程最多可以使用2G的可用内存，因为另外2G被操作系统保留。这里假设使用1.5G给JVM，那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载，那么真正剩下的也许只有400M，现在关键的地方出现了：当你使用Java创建一个线程，在JVM的内存里也会创建一个Thread对象，但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范)，操作系统会在余下的400兆内存里创建这个物理线程，而不是在JVM的1500M的内存堆里创建。在jdk1.4里头，默认的栈大小是256KB，但是在jdk1.5里头，默认的栈大小为1M每线程，因此，在余下400M的可用内存里边我们最多也只能创建400个可用线程。 <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这样结论就出来了，要想创建更多的线程，你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。 <p>给出一个有关能够创建线程的最大个数的估算公式： <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于jdk1.5而言，假设操作系统保留120M内存：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在2000/XP/2003的boot.ini里头有一个启动选项，好像是：<strong>/PAE /3G</strong> ，可以让用户进程最大内存扩充至3G，这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因此这种情况需要结合操作系统进行相关调整。 <p>因此：我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。 <p>参考资料（从这些资料中受益良多）：<br><a href="http://www.javaeye.com/topic/80620?page=1">http://www.javaeye.com/topic/80620?page=1</a><br><a href="http://ggmm.blog.sohu.com/117545379.html">http://ggmm.blog.sohu.com/117545379.html</a><br><a href="http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html">http://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html</a><br><a href="http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html">http://www.wujianrong.com/archives/2006/12/javalangoutofmemoryerror_permg.html</a> <p>from:http://www.blogjava.net/george/archive/2009/08/18/291579.html</p><img src ="http://www.blogjava.net/beansoft/aggbug/300662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-02 11:56 <a href="http://www.blogjava.net/beansoft/archive/2009/11/02/300662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java.net.SocketException: Too many open files 问题的解决办法</title><link>http://www.blogjava.net/beansoft/archive/2009/11/02/300661.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Mon, 02 Nov 2009 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/02/300661.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300661.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/02/300661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300661.html</trackback:ping><description><![CDATA[<p>Oct 31, 2009 8:14:25 AM org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket<br>WARNING: Reinitializing ServerSocket<br>Oct 31, 2009 8:14:25 AM org.apache.tomcat.util.net.PoolTcpEndpoint acceptSocket<br>SEVERE: Endpoint ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=8080] ignored exception: java.net.SocketException: Too many open files<br>java.net.SocketException: Too many open files<br>&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.socketAccept(Native Method)<br>&nbsp;&nbsp;&nbsp; at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)<br>&nbsp;&nbsp;&nbsp; at java.net.ServerSocket.implAccept(ServerSocket.java:450)<br>&nbsp;&nbsp;&nbsp; at java.net.ServerSocket.accept(ServerSocket.java:421)<br>&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:61)<br>&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:408)<br>&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:71)<br>&nbsp;&nbsp;&nbsp; at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)<br>&nbsp;&nbsp;&nbsp; at java.lang.Thread.run(Thread.java:595) <p>这是Tomcat报的错误， Google一把，看到如下解释： <p><a title="http://www.cnitblog.com/rd416/archive/2008/08/07/47724.aspx" href="http://www.cnitblog.com/rd416/archive/2008/08/07/47724.aspx">http://www.cnitblog.com/rd416/archive/2008/08/07/47724.aspx</a> <p>linux 上tomcat 服务器抛出socket异常“文件打开太多”的问题 <br>java.net.SocketException: Too many open files<br>at java.net.PlainSocketImpl.socketAccept(Native Method)<br>at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)<br>at java.net.ServerSocket.implAccept(ServerSocket.java:450)<br>at java.net.ServerSocket.accept(ServerSocket.java:421)<br>at org.apache.tomcat.util.net.DefaultServerSocketFactory.acceptSocket(DefaultServerSocketFactory.java:60)<br>at org.apache.tomcat.util.net.PoolTcpEndpoint.acceptSocket(PoolTcpEndpoint.java:407)<br>at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:70)<br>at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)<br>at java.lang.Thread.run(Thread.java:595) <p>原本以为是tomcat的配置或是应用本身的问题，"谷歌"一把后才发现，该问题的根本原因是由于系统文件资源的限制导致的。 <p>具体可以参考<a href="http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html">http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html</a><br>的说明。具体的解决方式可以参考一下：<br>1。ulimit -a 查看系统目前资源限制的设定。<br>&nbsp;&nbsp; [root@test security]# umlimit -a <br>-bash: umlimit: command not found<br>[root@test security]# ulimit -a<br>core file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -c) 0<br>data seg size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -d) unlimited<br>file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -f) unlimited<br>max locked memory&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -l) unlimited<br>max memory size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -m) unlimited<br>open files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-n) 1024<br>pipe size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (512 bytes, -p) 8<br>stack size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -s) 8192<br>cpu time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (seconds, -t) unlimited<br>max user processes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-u) 7168<br>virtual memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -v) unlimited<br>[root@test security]# <br>通过以上命令，我们可以看到open files 的最大数为1024<br>那么我们可以通过一下命令修改该参数的最大值<br>2. ulimit -n 4096<br>[root@test security]# ulimit -n 4096<br>[root@test security]# ulimit -a<br>core file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -c) 0<br>data seg size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -d) unlimited<br>file size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (blocks, -f) unlimited<br>max locked memory&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -l) unlimited<br>max memory size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -m) unlimited<br>open files&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-n) 4096<br>pipe size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (512 bytes, -p) 8<br>stack size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -s) 8192<br>cpu time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (seconds, -t) unlimited<br>max user processes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (-u) 7168<br>virtual memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (kbytes, -v) unlimited <p>这样我们就修改了系统在同一时间打开文件资源的最大数，基本解决以上问题。 <p>以上部分是查找网络上的解决方法。设置了之后段时间内有作用。 <p>后来仔细想来，问题还是要从根本上解决，于是把以前的代码由认真地看了一遍。终于找到了，罪魁祸首。 <p>在读取文件时，有一些使用的BufferedReader 没有关闭。导致文件一直处于打开状态。造成资源的严重浪费。 <p>修改之后的简单代码如下： <p>public void test(){<br>&nbsp;&nbsp;&nbsp; BufferedReader reader =null;<br>try{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader = 读取文件;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String line = "";<br>while( ( ine=reader.readLine())!=null){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其他操作<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; } catch (IOException e){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(e);<br>&nbsp;&nbsp;&nbsp; } finally{&nbsp; <br>if(reader !=null){<br>try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reader.close();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } catch (IOException e) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e.printStackTrace();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>} <p>以上只是我的个人见解，希望对大家有所帮助。</p><img src ="http://www.blogjava.net/beansoft/aggbug/300661.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-02 11:55 <a href="http://www.blogjava.net/beansoft/archive/2009/11/02/300661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转: 河北大学生就业报告:计算机专业毕业生失业最严重</title><link>http://www.blogjava.net/beansoft/archive/2009/11/01/300569.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sun, 01 Nov 2009 06:29:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/11/01/300569.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300569.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/11/01/300569.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300569.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300569.html</trackback:ping><description><![CDATA[<p>这是来自于CSDN的新闻: 2009-10-27 17:40 <a title="http://news.csdn.net/a/20091027/214360.html" href="http://news.csdn.net/a/20091027/214360.html">http://news.csdn.net/a/20091027/214360.html</a></p> <p><strong>转载注: 盲目参加所谓的包就业 Java 培训, 需谨慎!　现在就业形势确实不容乐观,　这不是广告和托们能改变的!</strong></p> <p>26日，由麦可思研究院(MyCOS Institute)撰写的《2009年河北省大学毕业生就业报告》完成。记者从报告中获悉，原为热门专业的计算机科学与技术、英语、国际经济与贸易、法学、工商管理连续两年失业严重。<br>(博讯 boxun.com) <p>5专业连续两年失业严重　<br>麦可思调查的河北省2008届本科各专业大类中，工学毕业半年后就业率最高，为90%；农学(72%)相对较低，理学(86%)、经济学 (84%)、医学(81%)和法学(80%)也均低于河北省(87%)和全国的本科毕业生毕业半年后平均就业率(88%)。麦可思调查的河北省2008届高职高专专业大类中，轻纺食品大类毕业半年后就业率最高，为90%；医药卫生大类毕业半年后就业率最低，仅为69%，远低于我省2008届高职高专毕业生的半年后平均就业率(82%)。<br>河北省2008届本科毕业生毕业半年后失业量最多的10个专业占了本科失业量的36.2%，其中有5个专业同时也是2007届失业最多的专业：计算机科学与技术、英语、国际经济与贸易、法学、工商管理。调控这些连续造成较大失业量的专业招生结构，并适当调整此类专业的在校学生结构，可以较快地改善总体就业状况。另一方面，河北省2008届高职高专毕业生毕业半年后失业量最多的10个专业占了高职高专失业量的33.1%。<br>大学毕业生最不愿去区县<br>从就业城市类型期待来看，河北省2008届大学毕业生对就业地域的期望不是完全合理的。河北省2008届大学毕业生最愿意去的是副省级城市和直辖市，最不愿意去的是区县。<br>据悉，该报告基于对河北省2008届大学毕业生半年后的调查研究，对2008届河北省大学毕业生的就业流向、就业与收入、工作能力、求职、就业与教育公平、自主创业、读研与留学、大学毕业生的满意度等做出了全面的研究分析。调查覆盖了河北省本科院校与高职高专院校中的101所，本省2008届大学毕业生9223人；在河北省就业的2008届大学毕业生3437人；生源地在河北省的2008届大学毕业生7806人。虽然抽样覆盖了本省大部分的各类学校，但主要指标具有统计科学的总体代表性，不排除个别指标上可能有一定代表性误差 <img src ="http://www.blogjava.net/beansoft/aggbug/300569.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-11-01 14:29 <a href="http://www.blogjava.net/beansoft/archive/2009/11/01/300569.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CryEngine 3 高清演示视频下载及截图</title><link>http://www.blogjava.net/beansoft/archive/2009/10/30/300402.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 30 Oct 2009 10:51:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/30/300402.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300402.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/10/30/300402.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300402.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300402.html</trackback:ping><description><![CDATA[<p><a title="http://download906.filefront.com/j52lngeu5rlg/14723977/CryEngine3_Beauty.zip" href="http://download906.filefront.com/j52lngeu5rlg/14723977/CryEngine3_Beauty.zip">http://download906.filefront.com/j52lngeu5rlg/14723977/CryEngine3_Beauty.zip</a> 109MB</p> <p><a href="http://www.mycryengine.com">www.mycryengine.com</a></p> <p>&nbsp;</p> <p>德国人 不得不让人佩服 一直都很强悍</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_180923_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_180923" border="0" alt="10] CryEngine3_Beauty.mov_20091030_180923" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_180923_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181019_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181019" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181019" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181019_thumb.png" width="640" height="360"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181112_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181112" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181112" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181112_thumb.png" width="1280" height="720"></a> </p> <p>&nbsp;</p> <p></p> <p></p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181144_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181144" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181144" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181144_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181203_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181203" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181203" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181203_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181217_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181217" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181217" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181217_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181225_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181225" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181225" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181225_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181235_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181235" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181235" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181235_thumb.png" width="1280" height="720"></a> </p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181239_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181239" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181239" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181239_thumb.png" width="1280" height="720"></a> </p> <p>&nbsp;</p> <p><a href="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181307_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="10] CryEngine3_Beauty.mov_20091030_181307" border="0" alt="10] CryEngine3_Beauty.mov_20091030_181307" src="http://www.blogjava.net/images/blogjava_net/beansoft/WindowsLiveWriter/CryEngine3_FF90/10%5D%20CryEngine3_Beauty.mov_20091030_181307_thumb.png" width="1280" height="720"></a></p><img src ="http://www.blogjava.net/beansoft/aggbug/300402.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-30 18:51 <a href="http://www.blogjava.net/beansoft/archive/2009/10/30/300402.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>祝贺中国成功研制天河一号千万亿次超级计算机 成功集成 INTEL CUP + AMD GPU</title><link>http://www.blogjava.net/beansoft/archive/2009/10/30/300303.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Fri, 30 Oct 2009 01:47:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/30/300303.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/300303.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/10/30/300303.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/300303.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/300303.html</trackback:ping><description><![CDATA[<p><a title="http://www.sinaimg.cn/dy/slidenews/8_img/2009_44/199_10429_951671.jpg" href="http://www.sinaimg.cn/dy/slidenews/8_img/2009_44/199_10429_951671.jpg">http://www.sinaimg.cn/dy/slidenews/8_img/2009_44/199_10429_951671.jpg</a> </p> <p>&nbsp;</p> <p>来源地址:　<a title="http://slide.mil.news.sina.com.cn/slide_8_199_1671.html#p=4" href="http://slide.mil.news.sina.com.cn/slide_8_199_1671.html#p=4">http://slide.mil.news.sina.com.cn/slide_8_199_1671.html#p=4</a></p> <p>阅读新闻: <a title="http://it.sohu.com/20091030/n267854978.shtml" href="http://it.sohu.com/20091030/n267854978.shtml">http://it.sohu.com/20091030/n267854978.shtml</a></p> <p>“天河一号”不仅为国内首台千万亿次超级计算机，而且采用了创新的系统架构设计，达到了很高的能效。这台超级计算机一共使用了6144个INTEL通用多核处理器和5120个AMD图形加速处理器，内存总容量达到了98TB，点对点通信带宽为40Gbps，而共享磁盘总容量则达到了惊人的1PB，相当于4个藏书量为2700万册的国家图书馆。</p> <p>&nbsp;</p> <p><img src="http://www.sinaimg.cn/dy/slidenews/8_img/2009_44/199_10429_951671.jpg"></p><img src ="http://www.blogjava.net/beansoft/aggbug/300303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-30 09:47 <a href="http://www.blogjava.net/beansoft/archive/2009/10/30/300303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Crytek releases CryENGINE&amp;reg; 3</title><link>http://www.blogjava.net/beansoft/archive/2009/10/27/299882.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 27 Oct 2009 02:12:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/27/299882.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/299882.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/10/27/299882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/299882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/299882.html</trackback:ping><description><![CDATA[<p><a title="http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=160&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=8d98a47e0c" href="http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=160&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=8d98a47e0c">http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=160&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=8d98a47e0c</a></p> <p>&nbsp;</p> <h4>Crytek releases CryENGINE® 3</h4> <p>Oct 14, 2009 <p><img title="" border="0" alt="" src="http://www.crytek.com/fileadmin/user_upload/news/2009/news_20090311.gif" width="190" height="114"> <h5>All-in-one multiplatform development solution  <p>now available for licensees</h5> <p><strong>Frankfurt a. M. (Germany), October 14th 2009 - </strong>Crytek GmbH (“Crytek”) is excited to announce that their latest all-in-one development solution CryENGINE 3 is now available for all developers. CryENGINE 3 is the first game development platform for Xbox 360, PlayStation 3, MMO, DX9/DX10 that also is truly Next-Gen-Ready - with scalable computation and graphics for all major upcoming platforms. It provides the complete game engine to create AAA quality next generation games, and includes the redesigned CryENGINE 3 Sandbox™ level editor, a production-proven, 3rd generation “What you see is what you play” (WYSIWYP) - tool designed by and for professional developers.  <p>CryENGINE 3 also introduces CryENGINE 3 Live Create™. It allows developers to work with a single editor, but see and play the results in real-time on PC, PS3 and Xbox360, hooked up to a single dev PC.&nbsp; The engine takes care of the conversion and optimization of assets in real-time; enables instant, cross-platform changes to any part of game creation and as a result materially increases the speed, quality and significantly reduces the risk of multiplatform development.  <p>“With CryENGINE 3 we are releasing the best development solution available today and tomorrow. With its scalable graphics and computation it is next-gen ready and with new features like CryENGINE 3 Live Create the best choice for game developers and companies developing serious games applications alike. It is the only game engine solution that enables real-time development and can ensure teams are able to maximise their own creativity, save budget and create greater gaming experiences.” said&nbsp; Cevat Yerli, CEO &amp; President of Crytek.  <p> “We’re delighted to launch CryENGINE 3 and we look forward to seeing what developers achieve with our all-new technology. CryENGINE 3 isn’t just about providing our trademark highest-quality graphics and our out of the box AI and physics for the first time on consoles – it also delivers real benefits to all disciplines in games development.&nbsp; Programmers will create awesome new effects and gameplay; art, design and audio teams can play as they create with the fastest, entirely real-time WYSIWYP pipeline ever, materially reducing development time and risk – even producers, project managers and suits will love CryENGINE 3!&nbsp; Of course, our international team of more than 20 dedicated support staff are available right now to help our licensees make the most of CryENGINE 3; at their studio or at one of our support centres around the world.” added Carl Jones, Director of Business Development CryENGINE.  <p>CryENGINE® is the underlying technology for Crytek’s critically acclaimed games Far Cry, Crysis, Crysis Warhead and NCsoft’s recently released MMORPG blockbuster AION. It has already been licensed to a number of major game companies around the globe, including several recent serious games training and simulation projects.&nbsp; CryENGINE®3 is the underlying technology for the highly anticipated Crysis®2.  <p><strong>About Crytek GmbH</strong> <p>Crytek GmbH ("Crytek") is one of the world’s leading independent development studios for interactive entertainment with its headquarters in Frankfurt am Main (Germany) and additional studios in Kiev (Ukraine), Budapest (Hungary), Sofia (Bulgaria), Seoul (South Korea) and Nottingham (UK).  <p>Crytek is dedicated to creating exceptionally high quality video games for the PC and next-generation consoles, powered by their proprietary cutting edge 3D-Game-Technology CryENGINE®.&nbsp;&nbsp; <p>Since its foundation in 1999, Crytek created the multi-award winning PC titles Far Cry®, Crysis®, awarded best PC Game of E3 2007 and Best Technology at the 2008 Game Developers Choice Awards and Crysis Warhead®, awarded Best Graphics Technology at IGN Best of 2008 Awards.  <p>Crytek, Crysis, Crysis Warhead and CryENGINE are registered trademarks or trademarks of Crytek GmbH in the USA, Germany and/or other countries.  <p>All other trademarks are the property of their respective owners. <img src ="http://www.blogjava.net/beansoft/aggbug/299882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-27 10:12 <a href="http://www.blogjava.net/beansoft/archive/2009/10/27/299882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Changyou.com Limited to License CryENGINE&amp;reg; 3 &amp;ndash; SOHU 太有钱了！</title><link>http://www.blogjava.net/beansoft/archive/2009/10/27/299880.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Tue, 27 Oct 2009 02:11:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/27/299880.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/299880.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/10/27/299880.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/299880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/299880.html</trackback:ping><description><![CDATA[<p><a title="http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=161&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=f8e013b4a4" href="http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=161&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=f8e013b4a4">http://www.crytek.com/news/news/?tx_ttnews%5Btt_news%5D=161&amp;tx_ttnews%5BbackPid%5D=1&amp;cHash=f8e013b4a4</a></p> <p>&nbsp; <p><a href="http://www.crytek.com/news/">News</a> <p><a></a><a></a> <h4>Changyou.com Limited to License CryENGINE® 3 </h4> <p>Oct 20, 2009 <p><img title="" border="0" alt="" src="http://www.crytek.com/fileadmin/user_upload/news/2009/news_20092010.gif" width="190" height="114"> <h5>Premier Chinese online brand chooses Crytek’s game development solution to bring great gaming experiences to their customers</h5> <p><strong>Frankfurt a. M. (Germany), Beijing (China), October 11th 2009 - </strong>Crytek GmbH (“Crytek”) is excited to announce that Changyou.com Limited（a member of SOHU group） is their first Chinese licensee for CryENGINE 3. Changyou.com Limited has updated its product plan and it will use Crytek’s latest all-in-one game development solution to bring great gaming experiences to their millions of customers.&nbsp; <p>“We’re excited about working together with the Changyou, China’s premier online brand, and we look forward to seeing what their teams create with our technology.&nbsp; We know Changyou’s developers can set a phenomenal benchmark with CryENGINE 3 for interactivity and graphical quality in games from China.&nbsp;&nbsp; As with all our licensing partners, we’ll be giving Changyou dedicated support to ensure that games built on CryENGINE 3 achieve the scale and quality that our engine uniquely allows.” added Carl Jones, Director of Global Business Development for CryENGINE.  <p>CryENGINE 3 is the first development platform for Xbox 360, PlayStation 3, MMO, DX9/DX10 that also is truly Next-Gen-Ready - with scalable computation and graphics for all major upcoming platforms. It provides the complete game engine to create AAA quality next generation games, and includes the CryENGINE 3 Sandbox™ level editor, a production-proven, 3rd generation “What you see is what you play” (WYSIWYP) - tool designed by and for professional developers. CryENGINE 3 comes with significant new features specifically designed for console, online, MMO and Next-Gen game development.  <p><strong>About </strong><strong>Changyou</strong><strong>.com</strong> <p>Changyou.com (NASDAQ: CYOU) is a leading developer and operator of online games in China. We began operations in 2003 as Sohu.com’s massively multi-player online games (“MMORPG”) business unit, before our carve-out as a separate, stand-alone company in December 2007 and subsequent listing on the NASDAQ Global Select Market in April 2009. We now operate one of the most popular MMORPGs in China, and have enjoyed strong growth in user data and revenues for our games. Our leading in-house technology platform includes an advanced 2.5D graphics engine, a uniform game development platform, effective anti-cheating and anti-hacking technologies, proprietary cross-networking technology and advanced data protection technology  <p><strong>About Crytek GmbH</strong> <p>Crytek GmbH ("Crytek") is one of the world’s leading independent development studios for interactive entertainment with its headquarters in Frankfurt am Main (Germany) and additional studios in Kiev (Ukraine), Budapest (Hungary), Sofia (Bulgaria), Seoul (South Korea) and Nottingham (UK).  <p>Crytek is dedicated to creating exceptionally high quality video games for the PC and next-generation consoles, powered by their proprietary cutting edge 3D-Game-Technology CryENGINE®.&nbsp;&nbsp; <p>Since its foundation in 1999, Crytek created the multi-award winning PC titles Far Cry®, Crysis®, awarded best PC Game of E3 2007 and Best Technology at the 2008 Game Developers Choice Awards and Crysis Warhead®, awarded Best Graphics Technology at IGN Best of 2008 Awards.  <p>Crytek, Crysis, Crysis Warhead and CryENGINE are registered trademarks or trademarks of Crytek GmbH in the USA, Germany and/or other countries.  <p>All other trademarks are the property of their respective owners.  <img src ="http://www.blogjava.net/beansoft/aggbug/299880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-27 10:11 <a href="http://www.blogjava.net/beansoft/archive/2009/10/27/299880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JRebel 一键补丁及注册机 2009下载与  JRebel 2/3 注册原理分析</title><link>http://www.blogjava.net/beansoft/archive/2009/10/24/299575.html</link><dc:creator>BeanSoft</dc:creator><author>BeanSoft</author><pubDate>Sat, 24 Oct 2009 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/beansoft/archive/2009/10/24/299575.html</guid><wfw:comment>http://www.blogjava.net/beansoft/comments/299575.html</wfw:comment><comments>http://www.blogjava.net/beansoft/archive/2009/10/24/299575.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/beansoft/comments/commentRss/299575.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/beansoft/services/trackbacks/299575.html</trackback:ping><description><![CDATA[
		<p>2009-10-24</p>
		<p>JRebel真的是一款相当相当好用的开发利器, 虽然其本身也是基于其它开源框架二次开发, 但是其创意和思想真的是非常难得. 笔者有幸领到过一份免费的许可. 本文仅对其注册部分的原理进行分析, 此分析适用于 2 和 3版本. </p>
		<p>如果您喜欢 JRebel, 还是想办法尽量购买一个正版吧! </p>
		<p>注册机下载: <a href="http://d.namipan.com/d/68d9024d6be9c45be2692f8587ef5c15615bcbe1002d0000">http://d.namipan.com/d/68d9024d6be9c45be2692f8587ef5c15615bcbe1002d0000</a> 11K <br /><br /><br />注册机用法如下:<br />   JRebel  2/3 OneKey Patch and KeyGen 2009 <br /> <br />Please extract jrebel.jar and put it in this dir, then double click keygen.bat to start.</p>
		<p>2009-10-24</p>
		<p>JRebel 一键补丁及注册机 2009</p>
		<p>请务必先将 jrebel.jar 放到本目录下, 然后双击 keygen.bat 即可.</p>
		<p>java -cp ./keygen.jar Keygen<br />============ JRebel OneKey Patch and KeyGen 2009 ===========<br />============ Please put your jrebel.jar here and then continue ===========<br />Please input the name that you want to use, or just press enter to jump:<br />bea<br />Patch jrebel.jar with new RSA public key...<br />Done!<br />Saving license file to disk...</p>
		<p>Done!<br />Patch jrebel.jar with new license file ...<br />Done!<br />Great, you may now using an unlimited JRebel now!! Please consider to buy it if<br />you really love in it!!<br />Copyright (c) 2009 by BeanSoft<br /><br /></p>
		<p>JRebel的验证是基于 SHA1withRSA 签名算法, 虽然以前接触过, 但一直没仔细看, 还好我们有 Google, 呵呵. 先来一段示例代码: </p>
		<p>/** </p>
		<p>*DigitalSignature2Example.java </p>
		<p>*Copyright 2005-2-16 </p>
		<p>*/ </p>
		<p>
				<b>import</b> java.security.Signature; </p>
		<p>
				<b>import</b> java.security.KeyPairGenerator; </p>
		<p>
				<b>import</b> java.security.KeyPair; </p>
		<p>
				<b>import</b> java.security.SignatureException; </p>
		<p>/** </p>
		<p>*数字签名，使用RSA私钥对对消息摘要签名，然后使用公鈅验证 测试 </p>
		<p>*这个例子测试通过!!! 2009-10-24 </p>
		<p>* </p>
		<p>*/ </p>
		<p>
				<b>public</b>
				<b>class</b> DigitalSignature2Example { </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>void</b> main(String[] args) <b>throws</b> Exception { </p>
		<p>// if (args.length != 1) { </p>
		<p>// System.err.println("Usage:java DigitalSignature2Example "); </p>
		<p>// System.exit(1); </p>
		<p>// } </p>
		<p>args = <b>new</b> String[1]; </p>
		<p>args[0] = "Test RSA"; </p>
		<p>byte[] plainText = args[0].getBytes("UTF8"); </p>
		<p>// UserLicense lic = LicenseLoader.<i>loadLicenseFromFile</i>("javarebel.lic"); </p>
		<p>// <b>byte</b>[] plainText = lic.getLicense(); </p>
		<p>// 形成RSA公钥对 </p>
		<p>System.<i>out</i>.println(" Start generating RSA key"); </p>
		<p>KeyPairGenerator keyGen = KeyPairGenerator.<i>getInstance</i>("RSA"); </p>
		<p>keyGen.initialize(1024); </p>
		<p>KeyPair key = keyGen.generateKeyPair(); </p>
		<p>System.<i>out</i>.println("Finish generating RSA key"); </p>
		<p>// 使用私鈅签名 </p>
		<p>Signature sig = Signature.<i>getInstance</i>("SHA1WithRSA"); </p>
		<p>sig.initSign(key.getPrivate()); </p>
		<p>sig.update(plainText); </p>
		<p>
				<b>byte</b>[] signature = sig.sign(); </p>
		<p>System.<i>out</i>.println(sig.getProvider().getInfo()); </p>
		<p>System.<i>out</i>.println(" Signature 长度:" + signature.length); </p>
		<p>System.<i>out</i>.println(<b>new</b> String(signature, "UTF8")); </p>
		<p>// 使用公鈅验证 </p>
		<p>System.<i>out</i>.println(" Start signature verification"); </p>
		<p>sig.initVerify(key.getPublic()); </p>
		<p>sig.update(plainText); </p>
		<p>
				<b>try</b> { </p>
		<p>
				<b>if</b> (sig.verify(signature)) { </p>
		<p>System.<i>out</i>.println("Signature verified OK "); </p>
		<p>} <b>else</b></p>
		<p>System.<i>out</i>.println("Signature failed"); </p>
		<p>} <b>catch</b> (SignatureException e) { </p>
		<p>System.<i>out</i>.println("Signature failed"); </p>
		<p>} </p>
		<p>} </p>
		<p>} </p>
		<p>很好, 我们的主要破解思路就是自己生成一对密钥, 然后替换Jrebel自带的密钥. 证书的保存代码如下所示: </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>void</b> writeKeyToFile(Key key, String fileName) <b>throws</b> IOException { </p>
		<p>
				<b>byte</b>[] key_byte = key.getEncoded(); </p>
		<p>FileOutputStream fos = <b>new</b> java.io.FileOutputStream(fileName); </p>
		<p>fos.write(key_byte); </p>
		<p>fos.close(); </p>
		<p>} </p>
		<p>从字节还原回公钥,密钥的代码: </p>
		<p>/** </p>
		<p>* 从字节载入 RSA Private Key </p>
		<p>*/ </p>
		<p>
				<b>public</b>
				<b>static</b> java.security.interfaces.RSAPrivateKey loadRSAPrivateKey( </p>
		<p>
				<b>byte</b>[] private_key_byte) <b>throws</b> Exception { </p>
		<p>java.security.spec.PKCS8EncodedKeySpec ks = <b>new</b> java.security.spec.PKCS8EncodedKeySpec( </p>
		<p>private_key_byte); </p>
		<p>java.security.KeyFactory kf = java.security.KeyFactory </p>
		<p>.<i>getInstance</i>("RSA"); </p>
		<p>
				<b>return</b> (java.security.interfaces.RSAPrivateKey) kf.generatePrivate(ks); </p>
		<p>} </p>
		<p>/** </p>
		<p>* 从字节载入 RSA Public Key </p>
		<p>* @param public_key_byte </p>
		<p>* @return </p>
		<p>* @throws Exception </p>
		<p>*/ </p>
		<p>public static java.security.interfaces.RSAPublicKey loadRSAPublicKey( </p>
		<p>byte[] public_key_byte) throws Exception { </p>
		<p>java.security.spec.X509EncodedKeySpec ks = new java.security.spec.X509EncodedKeySpec( </p>
		<p>public_key_byte); </p>
		<p>java.security.KeyFactory kf = java.security.KeyFactory </p>
		<p>.getInstance("RSA"); </p>
		<p>return (java.security.interfaces.RSAPublicKey) kf.generatePublic(ks); </p>
		<p>} </p>
		<p>有了这些代码, 我们就可以自如的读写密钥文件. </p>
		<p>接下来我们看看 JRebel中的加密解密代码: </p>
		<p>公开密钥一直没变, 位于那个著名的licensing 包下: </p>
		<p>/** </p>
		<p>* 存储的证书公匙内容. X509 的证书 </p>
		<p>*/ </p>
		<p>private static final byte[] publicKeyBytes = { 48, -126, 1, 34, 48, 13, 6, </p>
		<p>9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -126, 1, 15, 0, </p>
		<p>48, -126, 1, 10, 2, -126, 1, 1, 0, -85, 42, -98, -120, -103, -12, </p>
		<p>69, -121, -21, -112, 13, 84, 91, -54, 114, 47, -109, 3, 107, -117, </p>
		<p>52, 121, -57, 32, 84, 5, -26, 65, -66, 47, 76, -53, 17, -125, 90, </p>
		<p>-2, 84, 17, 93, -33, -82, 48, 114, 123, -73, -75, 39, 12, -16, 116, </p>
		<p>-12, 88, -36, 79, 77, -122, 115, -97, -70, -42, 85, 117, 68, 4, </p>
		<p>-123, 92, 96, -21, 117, -63, 31, -121, 22, -42, 63, -98, -60, 78, </p>
		<p>33, -94, 83, 46, 101, 106, 106, 92, 65, -34, 61, 26, 2, -27, 123, </p>
		<p>7, 71, 114, -29, -78, -90, -46, -64, -111, -11, 35, 39, -123, 125, </p>
		<p>78, 8, -127, -23, -31, -37, -17, -78, -91, -61, 114, -28, 8, 77, </p>
		<p>94, -109, 55, -117, 101, 107, 36, -5, 115, 81, -56, -19, -17, -81, </p>
		<p>61, -95, -3, 108, -100, -56, -47, 75, -17, 10, -26, 89, 67, -61, </p>
		<p>-20, -87, 50, 21, -38, -105, 77, 77, 90, -77, -46, 51, 34, -21, -9, </p>
		<p>-81, 61, 5, 101, 122, -128, -19, 127, -78, 6, 126, -119, -75, -22, </p>
		<p>-13, -94, -50, 75, 28, 17, -10, 92, -46, -54, -60, 50, -77, 68, </p>
		<p>-71, 104, -27, -108, 46, -101, 67, -11, 84, -95, -45, 80, -110, </p>
		<p>-113, -42, 52, 101, -69, 2, -62, 126, -13, -48, -112, -20, -9, 86, </p>
		<p>-85, 37, 81, -97, -75, 99, 101, 1, -21, -27, 111, -116, 99, -19, </p>
		<p>45, 108, 83, -13, -42, 44, 127, -13, -51, 75, -1, 68, -20, 56, -58, </p>
		<p>-86, -13, -23, -5, -75, 90, -34, -121, 2, 3, 1, 0, 1 }; </p>
		<p>1.0 时候的验证代码如下: </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>final</b> PublicKey a_javarebel1_0() <b>throws</b> Exception { </p>
		<p>KeyFactory <u>localKeyFactory</u>; </p>
		<p>Object localObject = <b>new</b> X509EncodedKeySpec(<i>publicKeyBytes</i>); </p>
		<p>
				<b>return</b> ((PublicKey) (localObject = (localKeyFactory = KeyFactory </p>
		<p>.<i>getInstance</i>("RSA")).generatePublic((KeySpec) localObject))); </p>
		<p>} </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>boolean</b> oldVerify(UserLicense paramUserLicense) <b>throws</b> Exception { </p>
		<p>System.<i>out</i>.println("1.0 时的验证方式"); </p>
		<p>Signature sig = Signature.<i>getInstance</i>("SHA1withRSA"); </p>
		<p>sig.initVerify(<i>a_javarebel1_0</i>()); </p>
		<p>sig.update(paramUserLicense.getLicense()); </p>
		<p>
				<b>if</b>(sig.verify(paramUserLicense.getLicense())) { </p>
		<p>
				<b>return</b>
				<b>true</b>; </p>
		<p>} </p>
		<p>
				<b>return</b>
				<b>false</b>; </p>
		<p>} </p>
		<p>从2.0开始的JRebel的验证包略有改变, 从JDK自带的换成了开源的Bouncy Castle (<a href="http://www.bouncycastle.org/latest_releases.html">http://www.bouncycastle.org/latest_releases.html</a>) , 这样混淆之后看起来更具有迷惑性. 下面的解析代码需要下载对应的JAR包方能运行: </p>
		<p>
				<b>import</b> org.bouncycastle.crypto.digests.SHA1Digest; </p>
		<p>
				<b>import</b> org.bouncycastle.crypto.params.RSAKeyParameters; </p>
		<p>
				<b>import</b> org.bouncycastle.crypto.signers.RSADigestSigner; </p>
		<p>
				<b>import</b> org.bouncycastle.crypto.util.PublicKeyFactory; </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>final</b> RSAKeyParameters getPublicKey() <b>throws</b> IOException { </p>
		<p>
				<b>return</b> ((RSAKeyParameters) PublicKeyFactory.<i>createKey</i>(<i>publicKeyBytes</i>)); </p>
		<p>} </p>
		<p>
				<b>public</b>
				<b>static</b>
				<b>boolean</b> verifyLicense(UserLicense paramUserLicense) </p>
		<p>
				<b>throws</b> IOException { </p>
		<p>System.<i>out</i>.println("JavaRebel 2.0+ 时的验证方式"); </p>
		<p>RSAKeyParameters publicKey = <i>getPublicKey</i>(); </p>
		<p>RSADigestSigner localbH = <b>new</b> RSADigestSigner(<b>new</b> SHA1Digest()); </p>
		<p>localbH.init(<b>false</b>, publicKey); </p>
		<p>// paramUserLicense.getLicense() 的内容是许可证的对象流二进制(Map) </p>
		<p>localbH.update(paramUserLicense.getLicense(), 0, paramUserLicense </p>
		<p>.getLicense().length); </p>
		<p>// 验证许可证的签名 </p>
		<p>
				<b>return</b> localbH.verifySignature(paramUserLicense.getSignature()); </p>
		<p>} </p>
		<p>我想对着混淆后的代码能很快搞懂这是在干什么, 呵呵. </p>
		<p>现在我们要做的是生成一对Key, 然后将JRebel中的公钥替换: </p>
		<p>
				<b>private</b>
				<b>static</b>
				<b>final</b>
				<b>byte</b>[] <i>publicKeyBytes</i> = { </p>
		<p>48, -127, -97, 48, 13, 6, 9, 42, -122, 72, -122, -9, 13, 1, 1, 1, 5, 0, 3, -127, -115, 0, 48, -127, -119, 2, -127, -127, 0, -89, 77, -7, -12, 105, -63, 74, 58, -12, -68, 18, 112, -38, 122, 41, 37, 90, 110, -116, 107, 39, </p>
		<p>114, 118, 33, -14, -98, -75, -124, 119, -7, -58, 37, -57, 75, -19, -54, 63, 126, 108, -65, 97, 6, -36, -10, -24, 96, 116, -73, -123, 53, 60, -8, 14, 60, 76, 96, 115, -93, -1, 65, 29, -34, 3, 41, 76, 110, -92, 102, 89, 127, -60, </p>
		<p>-74, -75, 68, 17, -58, 119, -106, -50, -72, -61, 39, -85, -56, 6, 117, 6, -67, -20, 92, 102, -125, 19, 105, 83, -14, 31, 19, -120, 34, -6, 104, -19, -118, 6, 16, -60, 121, 100, 6, -95, -70, -111, -40, -43, 87, -5, 4, 93, -10, 59, </p>
		<p>-11, 99, -43, 123, 31, -122, 27, 2, 3, 1, 0, 1 </p>
		<p>}; </p>
		<p>对应的密钥文件是 private.spc. </p>
		<p>随后用文章开头的示例代码对 UserLicense 类的getLicense() 签名, 最后更新Signature, 并最终保存为一个新的许可. </p>
		<p>UserLicense的生成参考 <a href="/usherlight/archive/2009/10/15/298449.html">JRebal(原名JavaRebel)破解小记</a> 一文的代码, 这里就不再赘述了. </p>
		<p>为了使生成证书的过程更顺利, 我还动用了 BeanSoft ZIP 中的工具类直接对jar文件动手术, 这样实现了一键破解和注册码生成, 具体过程如下: </p>
		<p>将 jrebel.jar 中的 licensing.a 类替换; </p>
		<p>根据用户输入的名称重新生成许可; </p>
		<p>将许可文件直接重新写入jar. </p>
		<p>最终的成品只有一个 jrebel.jar, 直接用即可. </p>
		<p>如有兴趣讨论注册机源码的, 欢迎来邮讨论, 呵呵. 在此感谢多位同道的提醒, 如usherlight, zhengthe9 等, 非常感谢.</p>
<img src ="http://www.blogjava.net/beansoft/aggbug/299575.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/beansoft/" target="_blank">BeanSoft</a> 2009-10-24 17:08 <a href="http://www.blogjava.net/beansoft/archive/2009/10/24/299575.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>