??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品小视频,成人精品电影,久久夜精品va视频免费观看http://www.aygfsteel.com/yill/zh-cnFri, 20 Jun 2025 00:49:19 GMTFri, 20 Jun 2025 00:49:19 GMT60【{载】JSPq解决Ҏhttp://www.aygfsteel.com/yill/archive/2009/08/10/290591.htmlyillyillMon, 10 Aug 2009 14:18:00 GMThttp://www.aygfsteel.com/yill/archive/2009/08/10/290591.htmlhttp://www.aygfsteel.com/yill/comments/290591.htmlhttp://www.aygfsteel.com/yill/archive/2009/08/10/290591.html#Feedback0http://www.aygfsteel.com/yill/comments/commentRss/290591.htmlhttp://www.aygfsteel.com/yill/services/trackbacks/290591.html/**
 * 21:24 2006-10-12
 * @author blackbat 
 * @title jsp中文ql极解决Ҏ
 */

let's go?br /> 一 扑և问题的根?/font>
   q可能出现的地方:1 jsp面?nbsp;
                       2 jsp面之间怺传参的参?br />                        3 与数据库中数据的存取
   基本归纳Z上几U?br />
?nbsp;L解决Ҏ
   1 出现在jsp面中,是由于没有设|jsp面的中文字W编码?br />    2 出现在jsp面之间怺传参Q是׃参数没有讄正确的字W编码?br />    3 以上2个问题解决了Q那么存到数据库中,自然׃存在q。除非你对存入到数据库里的数据再ơ进行编码?/span>

三解x法:
1的解x?nbsp;
<% @ page contentType = " text/html;charset=gb2312 "   %>
加上q句解决jsp面中的中文q昄,tomcat~译完后向客L输出的html文g不是?br />
用中文编码,所以会Dq产生?br />
2的解x?br /> 2.1 
<% request.setCharacterEncoding( " gb2312 " ); %>
加上q句解决jsp面中的中文参数传递ؕ码?br /> 因ؓ览器默认用的~码?#8220;UTF-8”发送请求参数?br /> 我们把它改ؓ"gb2312"ok了?br />
2.2 String(request.getParameter("name").getBytes("ISO8859_1"),"GB2312");
q句的意思是Q把传来的参数全部编码{换成gb2312Q这样做的缺Ҏ每次传来一个参?br />
都要q样写,很麻烦?br />
同样可通过讄server.xml配置文g来实现?br />
< Connector
port ="8080"                maxHttpHeaderSize ="8192"
               maxThreads
="150"  minSpareThreads ="25"  maxSpareThreads ="75"
               enableLookups
="false"  redirectPort ="8443"  acceptCount ="100"
               connectionTimeout
="20000"  disableUploadTimeout ="true"   URIEncoding ="gb2312" />
但是q样应用到整个webapp中去了?br />
另:
<% @page pageEncoding = " gb2312 " %>
此句是ؓ了让jsp~译器能正确地解码含有中文字W的jsp面?br />
其它Ҏq可以修改web.xml文gQ配|一个过滤器。其原理都一P只是换种方式而已?br /> 有的书上专门写了一个函数来解决qQ实际上Ҏ一下就知道那种解决Ҏ的好与坏?br /> 回过头来一看,解决q也不q如此?br /> okQ实际就加上q?句搞定问题?br />
<% @page pageEncoding = " gb2312 " %>
<% @ page contentType = " text/html;charset=gb2312 "   %>
<% request.setCharacterEncoding( " gb2312 " ); %>
请大家有什么想法,以及有什么不对的地方请各位说明,写在留言上,大家一赯论?/span>

转蝲自:http://www.aygfsteel.com/blackbat/archive/2008/04/27/74865.html

yill 2009-08-10 22:18 发表评论
]]>
java虚拟机参?/title><link>http://www.aygfsteel.com/yill/archive/2008/04/24/195741.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Thu, 24 Apr 2008 14:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/yill/archive/2008/04/24/195741.html</guid><wfw:comment>http://www.aygfsteel.com/yill/comments/195741.html</wfw:comment><comments>http://www.aygfsteel.com/yill/archive/2008/04/24/195741.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yill/comments/commentRss/195741.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yill/services/trackbacks/195741.html</trackback:ping><description><![CDATA[This document provides information on typical command-line options and environment variables that can affect the performance characteristics of the Java HotSpot Virtual Machine. Unless otherwise noted, all information in this document pertains to both the Java HotSpot Client VM and the Java HotSpot Server VM.<br /> <br /> Categories of Java HotSpot VM Options <br /> <br /> Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows, Solaris and Linux. This document deals exclusively with non-standard options recognized by the Java HotSpot VM:<br /> <br />     * Options that begin with -X are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.<br />     * Options that are specified with -XX are not stable and are not recommended for casual use. These options are subject to change without notice.<br /> <br /> Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.<br /> <br />     * Boolean options are turned on with -XX:+<option> and turned off with -XX:-<option>.<br />     * Numeric options are set with -XX:<option>=<number>. Numbers can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes (for example, 32k is the same as 32768).<br />     * String options are set with -XX:<option>=<string>, are usually used to specify a file, a path, or a list of commands<br /> <br /> Flags marked as manageable are dynamically writeable through the JDK management interface (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. In Monitoring and Managing Java SE 6 Platform Applications, Figure 3 shows an example. The manageable flags can also be set through jinfo -flag.<br /> <br /> The options below are loosely grouped into three categories.<br /> <br />     * Behavioral options change the basic behavior of the VM.<br />     * Performance tuning options are knobs which can be used to tune VM performance.<br />     * Debugging options generally enable tracing, printing, or output of VM information.<br /> <br />  Behavioral Options<br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">Option and Default Value                    Description<br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">AllowUserSignalHandlers     Do not complain </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> the application installs signal handlers. (Relevant to Solaris and Linux only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:AltStackSize</span><span style="color: #000000;">=</span><span style="color: #000000;">16384</span><span style="color: #000000;">     Alternate signal stack size (in Kbytes). (Relevant to Solaris only, removed from </span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">DisableExplicitGC     Disable calls to System.gc(), JVM still performs garbage collection when necessary.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">FailOverToOldVerifier     Fail over to old verifier when the </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> type checker fails. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">HandlePromotionFailure     The youngest generation collection does not require a guarantee of full promotion of all live objects. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> update </span><span style="color: #000000;">11</span><span style="color: #000000;">) [</span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and earlier: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">MaxFDLimit     Bump the number of file descriptors to max. (Relevant  to Solaris only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:PreBlockSpin</span><span style="color: #000000;">=</span><span style="color: #000000;">10</span><span style="color: #000000;">     Spin count variable </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> use with </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseSpinning. Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">RelaxAccessControlCheck     Relax the access control checks in the verifier. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">ScavengeBeforeFullGC     Do young generation GC prior to a full GC. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseAltSigs     Use alternate signals instead of SIGUSR1 and SIGUSR2 </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> VM internal signals. (Introduced in </span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"> update </span><span style="color: #000000;">9</span><span style="color: #000000;">, </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">. Relevant to Solaris only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseBoundThreads     Bind user level threads to kernel threads. (Relevant to Solaris only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseConcMarkSweepGC     Use concurrent mark</span><span style="color: #000000;">-</span><span style="color: #000000;">sweep collection </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the old generation. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseGCOverheadLimit     Use a policy that limits the proportion of the VM</span><span style="color: #000000;">'</span><span style="color: #000000;">s time that is spent in GC before an OutOfMemory error is thrown. (Introduced in 6.)</span><span style="color: #000000;"><br /> </span><span style="color: #000000;"><br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseLWPSynchronization     Use LWP</span><span style="color: #000000;">-</span><span style="color: #000000;">based instead of thread based synchronization. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">. Relevant to Solaris only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseParallelGC     Use parallel garbage collection </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> scavenges. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseParallelOldGC     Use parallel garbage collection </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the full collections. Enabling </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> option automatically sets </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseParallelGC. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseSerialGC     Use serial garbage collection. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseSpinning     Enable naive spinning on Java monitor before entering operating system thread synchronizaton code. (Relevant to </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> and </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> only.) [</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">, multi</span><span style="color: #000000;">-</span><span style="color: #000000;">processor Windows platforms: </span><span style="color: #0000ff;">true</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseTLAB     Use thread</span><span style="color: #000000;">-</span><span style="color: #000000;">local object allocation (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">, known as UseTLE prior to that.) [</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> and earlier, x86 or with </span><span style="color: #000000;">-</span><span style="color: #000000;">client: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseSplitVerifier     Use the </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> type checker with StackMapTable attributes. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)[</span><span style="color: #000000;">5.0</span><span style="color: #000000;">: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseThreadPriorities     Use </span><span style="color: #0000ff;">native</span><span style="color: #000000;"> thread priorities.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseVMInterruptibleIO     Thread interrupt before or with EINTR </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> I</span><span style="color: #000000;">/</span><span style="color: #000000;">O operations results in OS_INTRPT. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">. Relevant to Solaris only.)</span></div> <br /> Performance Options<br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">Option and Default Value                        Description<br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">AggressiveOpts     Turn on point performance compiler optimizations that are expected to be </span><span style="color: #0000ff;">default</span><span style="color: #000000;"> in upcoming releases. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:CompileThreshold</span><span style="color: #000000;">=</span><span style="color: #000000;">10000</span><span style="color: #000000;">     Number of method invocations</span><span style="color: #000000;">/</span><span style="color: #000000;">branches before compiling [</span><span style="color: #000000;">-</span><span style="color: #000000;">client: </span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">500</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:LargePageSizeInBytes</span><span style="color: #000000;">=</span><span style="color: #000000;">4m     Sets the large page size used </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the Java heap. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;"> update </span><span style="color: #000000;">1</span><span style="color: #000000;">.) [amd64: 2m.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxHeapFreeRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">70</span><span style="color: #000000;">     Maximum percentage of heap free after GC to avoid shrinking.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxNewSize</span><span style="color: #000000;">=</span><span style="color: #000000;">size     Maximum size of </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> generation (in bytes). Since </span><span style="color: #000000;">1.4</span><span style="color: #000000;">, MaxNewSize is computed as a function of NewRatio. [</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"> Sparc: 32m; </span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"> x86: </span><span style="color: #000000;">2</span><span style="color: #000000;">.5m.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MaxPermSize</span><span style="color: #000000;">=</span><span style="color: #000000;">64m     Size of the Permanent Generation.  [</span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and newer: </span><span style="color: #000000;">64</span><span style="color: #000000;"> bit VMs are scaled </span><span style="color: #000000;">30</span><span style="color: #000000;">%</span><span style="color: #000000;"> larger; </span><span style="color: #000000;">1.4</span><span style="color: #000000;"> amd64: 96m; </span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">client: 32m.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:MinHeapFreeRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">40</span><span style="color: #000000;">     Minimum percentage of heap free after GC to avoid expansion.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:NewRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">     Ratio of </span><span style="color: #0000ff;">new</span><span style="color: #000000;">/</span><span style="color: #000000;">old generation sizes. [Sparc </span><span style="color: #000000;">-</span><span style="color: #000000;">client: </span><span style="color: #000000;">8</span><span style="color: #000000;">; x86 </span><span style="color: #000000;">-</span><span style="color: #000000;">server: </span><span style="color: #000000;">8</span><span style="color: #000000;">; x86 </span><span style="color: #000000;">-</span><span style="color: #000000;">client: </span><span style="color: #000000;">12</span><span style="color: #000000;">.]</span><span style="color: #000000;">-</span><span style="color: #000000;">client: </span><span style="color: #000000;">4</span><span style="color: #000000;"> (</span><span style="color: #000000;">1.3</span><span style="color: #000000;">) </span><span style="color: #000000;">8</span><span style="color: #000000;"> (</span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">+</span><span style="color: #000000;">), x86: </span><span style="color: #000000;">12</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:NewSize</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">.125m     Default size of </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> generation (in bytes) [</span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and newer: </span><span style="color: #000000;">64</span><span style="color: #000000;"> bit VMs are scaled </span><span style="color: #000000;">30</span><span style="color: #000000;">%</span><span style="color: #000000;"> larger; x86: 1m; x86, </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and older: 640k]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ReservedCodeCacheSize</span><span style="color: #000000;">=</span><span style="color: #000000;">32m     Reserved code cache size (in bytes) </span><span style="color: #000000;">-</span><span style="color: #000000;"> maximum code cache size. [Solaris </span><span style="color: #000000;">64</span><span style="color: #000000;">-</span><span style="color: #000000;">bit, amd64, and </span><span style="color: #000000;">-</span><span style="color: #000000;">server x86: 48m; in </span><span style="color: #000000;">1.5</span><span style="color: #000000;">.0_06 and earlier, Solaris </span><span style="color: #000000;">64</span><span style="color: #000000;">-</span><span style="color: #000000;">bit and and64: 1024m.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:SurvivorRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">8</span><span style="color: #000000;">     Ratio of eden</span><span style="color: #000000;">/</span><span style="color: #000000;">survivor space size [Solaris amd64: </span><span style="color: #000000;">6</span><span style="color: #000000;">; Sparc in </span><span style="color: #000000;">1.3</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;">: </span><span style="color: #000000;">25</span><span style="color: #000000;">; other Solaris platforms in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and earlier: </span><span style="color: #000000;">32</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:TargetSurvivorRatio</span><span style="color: #000000;">=</span><span style="color: #000000;">50</span><span style="color: #000000;">     Desired percentage of survivor space used after scavenge.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ThreadStackSize</span><span style="color: #000000;">=</span><span style="color: #000000;">512</span><span style="color: #000000;">     Thread Stack Size (in Kbytes). (</span><span style="color: #000000;">0</span><span style="color: #000000;"> means use </span><span style="color: #0000ff;">default</span><span style="color: #000000;"> stack size) [Sparc: </span><span style="color: #000000;">512</span><span style="color: #000000;">; Solaris x86: </span><span style="color: #000000;">320</span><span style="color: #000000;"> (was </span><span style="color: #000000;">256</span><span style="color: #000000;"> prior in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and earlier); Sparc </span><span style="color: #000000;">64</span><span style="color: #000000;"> bit: </span><span style="color: #000000;">1024</span><span style="color: #000000;">; Linux amd64: </span><span style="color: #000000;">1024</span><span style="color: #000000;"> (was </span><span style="color: #000000;">0</span><span style="color: #000000;"> in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> and earlier); all others </span><span style="color: #000000;">0</span><span style="color: #000000;">.]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseBiasedLocking     Enable biased locking. For more details, see </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> tuning example. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">6</span><span style="color: #000000;">.) [</span><span style="color: #000000;">5.0</span><span style="color: #000000;">: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">]<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseFastAccessorMethods     Use optimized versions of Get</span><span style="color: #000000;"><</span><span style="color: #000000;">Primitive</span><span style="color: #000000;">></span><span style="color: #000000;">Field.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">UseISM     Use Intimate Shared Memory. [Not accepted </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> non</span><span style="color: #000000;">-</span><span style="color: #000000;">Solaris platforms.] For details, see Intimate Shared Memory.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseLargePages     Use large page memory. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">5</span><span style="color: #000000;">.) For details, see Java Support </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> Large Memory Pages.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">+</span><span style="color: #000000;">UseMPSS     Use Multiple Page Size Support w</span><span style="color: #000000;">/</span><span style="color: #000000;">4mb pages </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> the heap. Do not use with ISM as </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> replaces the need </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> ISM. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;"> update </span><span style="color: #000000;">1</span><span style="color: #000000;">, Relevant to Solaris </span><span style="color: #000000;">9</span><span style="color: #000000;"> and newer.) [</span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">1</span><span style="color: #000000;"> and earlier: </span><span style="color: #0000ff;">false</span><span style="color: #000000;">]</span></div> <br /> Debugging Options<br /> <br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">Option and Default Value                    Description<br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">CITime     Prints time spent in JIT Compiler. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:ErrorFile</span><span style="color: #000000;">=</span><span style="color: #000000;">.</span><span style="color: #000000;">/</span><span style="color: #000000;">hs_err_pid</span><span style="color: #000000;"><</span><span style="color: #000000;">pid</span><span style="color: #000000;">></span><span style="color: #000000;">.log     If an error occurs, save the error data to </span><span style="color: #0000ff;">this</span><span style="color: #000000;"> file. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">ExtendedDTraceProbes     Enable performance</span><span style="color: #000000;">-</span><span style="color: #000000;">impacting dtrace probes. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">. Relevant to Solaris only.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:HeapDumpPath</span><span style="color: #000000;">=</span><span style="color: #000000;">.</span><span style="color: #000000;">/</span><span style="color: #000000;">java_pid</span><span style="color: #000000;"><</span><span style="color: #000000;">pid</span><span style="color: #000000;">></span><span style="color: #000000;">.hprof     Path to directory or filename </span><span style="color: #0000ff;">for</span><span style="color: #000000;"> heap dump. Manageable. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> update </span><span style="color: #000000;">12</span><span style="color: #000000;">, </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">7</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">HeapDumpOnOutOfMemoryError     Dump heap to file when java.lang.OutOfMemoryError is thrown. Manageable. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> update </span><span style="color: #000000;">12</span><span style="color: #000000;">, </span><span style="color: #000000;">5.0</span><span style="color: #000000;"> update </span><span style="color: #000000;">7</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:OnError</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;"><cmd args>;<cmd args></span><span style="color: #000000;">"</span><span style="color: #000000;">     Run user</span><span style="color: #000000;">-</span><span style="color: #000000;">defined commands on fatal error. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;"> update </span><span style="color: #000000;">9</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:OnOutOfMemoryError</span><span style="color: #000000;">=</span><span style="color: #000000;">"</span><span style="color: #000000;"><cmd args>;</span><span style="color: #000000;"><br /> </span><span style="color: #000000;"><</span><span style="color: #000000;">cmd args</span><span style="color: #000000;">></span><span style="color: #000000;">"</span><span style="color: #000000;">     Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6)</span><span style="color: #000000;"><br /> </span><span style="color: #000000;"><br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintClassHistogram     Print a histogram of </span><span style="color: #0000ff;">class</span><span style="color: #000000;"> instances on Ctrl</span><span style="color: #000000;">-</span><span style="color: #000000;">Break. Manageable. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.) The jmap </span><span style="color: #000000;">-</span><span style="color: #000000;">histo command provides equivalent functionality.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintConcurrentLocks     Print java.util.concurrent locks in Ctrl</span><span style="color: #000000;">-</span><span style="color: #000000;">Break thread dump. Manageable. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">.) The jstack </span><span style="color: #000000;">-</span><span style="color: #000000;">l command provides equivalent functionality.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintCommandLineFlags     Print flags that appeared on the command line. (Introduced in </span><span style="color: #000000;">5.0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintCompilation     Print message when a method is compiled.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGC     Print messages at garbage collection. Manageable.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGCDetails     Print more details at garbage collection. Manageable. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintGCTimeStamps     Print timestamps at garbage collection. Manageable (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">0</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">PrintTenuringDistribution     Print tenuring age information.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassLoading     Trace loading of classes.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassLoadingPreorder     Trace all classes loaded in order referenced (not loaded). (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassResolution     Trace constant pool resolutions. (Introduced in </span><span style="color: #000000;">1.4</span><span style="color: #000000;">.</span><span style="color: #000000;">2</span><span style="color: #000000;">.)<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceClassUnloading     Trace unloading of classes.<br /> <br /> </span><span style="color: #000000;">-</span><span style="color: #000000;">XX:</span><span style="color: #000000;">-</span><span style="color: #000000;">TraceLoaderConstraints     Trace recording of loader constraints. (Introduced in </span><span style="color: #000000;">6</span><span style="color: #000000;">.)</span></div> <br /> <br /> <img src ="http://www.aygfsteel.com/yill/aggbug/195741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yill/" target="_blank">yill</a> 2008-04-24 22:25 <a href="http://www.aygfsteel.com/yill/archive/2008/04/24/195741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hibernate 一对多查询的记录重复问?/title><link>http://www.aygfsteel.com/yill/archive/2008/04/22/194655.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Mon, 21 Apr 2008 16:14:00 GMT</pubDate><guid>http://www.aygfsteel.com/yill/archive/2008/04/22/194655.html</guid><wfw:comment>http://www.aygfsteel.com/yill/comments/194655.html</wfw:comment><comments>http://www.aygfsteel.com/yill/archive/2008/04/22/194655.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yill/comments/commentRss/194655.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yill/services/trackbacks/194655.html</trackback:ping><description><![CDATA[׃Hibernate的强大,我们Ҏ据库的操作也省心了不,但是hibernate自动生成的一pdsqlQ也许ƈ不是如我们所惌的那P所以,我们又多了一些本来不要操心的事情。比如在一对多的查询中Q就有可能存在查询记录重复的问题?br /> <br /> 有如下两个对象:文章和关键字。它们之间的关系Q很明显Q是一对多的关p,一个文章可以有很多的关键字?br /> <br /> 假设有文章atricleA、articleBQarticleA有关键字keyword1、keyword2QarticleB有关键字keyword3、keyword4?br /> 我们现在x询含有关键字keyword1或者keyword3的所有文章列表,正确的结果应该是articleA和articleB两条记录。然而,如果使用hibernate不当Q有可能你得到的是articleA、articleA、articleB、articleB四条记录Q其中两条是重复的?br /> <br /> q是怎么发生的呢Q?br /> 如果我们q样使用hibernate来实现这个查询:<br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #000000;">StringBuffer queryString </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> StringBuffer();<br /> queryString.append(</span><span style="color: #000000;">"</span><span style="color: #000000;">from ArticleData where keyword=? or keyword=?</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /> <br /> String[] param </span><span style="color: #000000;">=</span><span style="color: #000000;"> </span><span style="color: #0000ff;">new</span><span style="color: #000000;"> String[]{</span><span style="color: #000000;">"</span><span style="color: #000000;">keyword1</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">keyword3</span><span style="color: #000000;">"</span><span style="color: #000000;">};<br /> <br /> Query query </span><span style="color: #000000;">=</span><span style="color: #000000;"> session.createQuery(queryString );<br /> <br /> query.list();<br /> </span></div> <br /> 看看hibernatel我们生成的sql语句Q?br /> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --><span style="color: #0000ff;">select</span><span style="color: #000000;"> article_table_.</span><span style="color: #808080;">*</span><span style="color: #000000;"> </span><span style="color: #0000ff;"><br /> from</span><span style="color: #000000;"> articletable article_table_,keywordtable keyword_table1_ ,keywordtable keyword_table2_ <br /> </span><span style="color: #0000ff;">where</span><span style="color: #000000;"> article_table_.id</span><span style="color: #808080;">=</span><span style="color: #000000;">keyword_table1_.articleid </span><span style="color: #808080;">and</span><span style="color: #000000;"> article_table_.id</span><span style="color: #808080;">=</span><span style="color: #000000;">keyword_table2_.articleid </span><span style="color: #808080;"><br />           and</span><span style="color: #000000;"> (keyword_table1_.name</span><span style="color: #808080;">=</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">keyword1</span><span style="color: #ff0000;">'</span><span style="color: #000000;"> </span><span style="color: #808080;">or</span><span style="color: #000000;"> keyword_table2_.name</span><span style="color: #808080;">=</span><span style="color: #ff0000;">'</span><span style="color: #ff0000;">keyword3</span><span style="color: #ff0000;">'</span><span style="color: #000000;">)</span></div> Ҏq个sqlQ我们可以得出,满whereU束的有如下几个l合Q?br /> articleA   keyword1  keyword1<br /> articleA   keyword1  keyword2<br /> aritcleB   keyword3  keyword3<br /> articleB   keyword3  keyword4<br /> 正是我们之前所说得到的错误l果?br /> <br /> 仔细分析q个sqlQ其实问题就出在hibernate生成sql的时候,对同一个表keywordtable查询了两ơ(在from中出Cơ)Q因此就有了l合的可能性,可以惌Q如果再多几个需要查询的关键字,同一个记录重复的ơ数会更多?br /> <br /> 其实Q要正确的破解这个问题,我们可以自己写sql语句Q用hibernate同样支持的原生sql查询Q不使用hibernate的hql查询?br /> <br /> hibernate在给我们带来很多便利性的同时Q也l我们多多少带来了一些麻烦,而这些问题的定位成本可能也会很高。要使用好工Pp知道工具的优~点Q尤其是~点要有_的风险控制?br /> <br /> 革命未成功Q同志仍需努力Q?br /> <br /> <img src ="http://www.aygfsteel.com/yill/aggbug/194655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yill/" target="_blank">yill</a> 2008-04-22 00:14 <a href="http://www.aygfsteel.com/yill/archive/2008/04/22/194655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat ?/title><link>http://www.aygfsteel.com/yill/archive/2008/03/31/189882.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Mon, 31 Mar 2008 14:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/yill/archive/2008/03/31/189882.html</guid><wfw:comment>http://www.aygfsteel.com/yill/comments/189882.html</wfw:comment><comments>http://www.aygfsteel.com/yill/archive/2008/03/31/189882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yill/comments/commentRss/189882.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yill/services/trackbacks/189882.html</trackback:ping><description><![CDATA[<p>  Tomcat 是一个基于组件的服务器,它的构成lg是可配置的,其中最外层的组件是 Catalina Servlet 容器Q其他的lg都是按照一定的格式要求配置在这个顶层容器中?/p> <p>Tomcat的各个组件在$CATALINA_HOME/conf/server.xml文g中配|,其基本结构如下:</p> <pre><span style="color: #0000ff;"><</span><span style="color: #800000;">Server</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Service</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Connector</span> <span style="color: #0000ff;">/></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Engine</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Host</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Context</span> <span style="color: #0000ff;">/></span> <br /> <span style="color: #0000ff;"></</span><span style="color: #800000;">Host</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"></</span><span style="color: #800000;">Engine</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"></</span><span style="color: #800000;">Service</span><span style="color: #0000ff;">></span> <br /> <span style="color: #0000ff;"><</span><span style="color: #800000;">Server</span><span style="color: #0000ff;">></span> <br /> </pre> <p> <a href="http://www.aygfsteel.com/images/blogjava_net/yill/WindowsLiveWriter/c18736a5106a_1272E/%E7%BB%98%E5%9B%BE9_2.jpg"><img style="border: 0px none ;" alt="l图9" src="http://www.aygfsteel.com/images/blogjava_net/yill/WindowsLiveWriter/c18736a5106a_1272E/%E7%BB%98%E5%9B%BE9_thumb.jpg" border="0" height="108" width="244" /></a> </p> <p>web.xml文g基本格式Q?大小写敏感、元素次序敏?</p> <pre><span style="color: #0000ff;"><?</span>xml version="1.0" encoding="ISO-8859-1"<span style="color: #0000ff;">?></span> <span style="color: #0000ff;"><</span>!DOCTYPE web-app PUBLIC "-//Sun Mivorsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">app</span> <span style="color: #ff0000;">xmlns</span>=<span style="color: #0000ff;">"http://java.sun.com/xml/ns/j2ee"</span> <span style="color: #ff0000;">xmlns</span>:<span style="color: #ff0000;">xsi</span>=<span style="color: #0000ff;">"http://www.w3.org/2001/XMLSchema-instance"</span> <span style="color: #ff0000;">xsi</span>:<span style="color: #ff0000;">schemaLocation</span>=<span style="color: #0000ff;">"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"</span> <span style="color: #ff0000;">version</span>=<span style="color: #0000ff;">"2.4"</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">icon</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">small</span>-<span style="color: #ff0000;">icon</span><span style="color: #0000ff;">></span>/images/app_small.gif<span style="color: #0000ff;"></</span><span style="color: #800000;">small</span>-icon<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">large</span>-<span style="color: #ff0000;">icon</span><span style="color: #0000ff;">></span>/images/app_large.gif<span style="color: #0000ff;"></</span><span style="color: #800000;">large</span>-icon<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">icon</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Application name<span style="color: #0000ff;"></</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>Description<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">distribute</span> <span style="color: #0000ff;">/></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">context</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>contextParameter<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">></span>test<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>It is a test parameter.<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">context</span>-param<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Set Character Encoding<span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">></span>filters.SetCharacterEncodingFilter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-class<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>encoding<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">></span>EUC JP<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Set Character Encoding<span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">></span>/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">listener</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">></span>listeners.SessionListener<span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span>-class<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">listener</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>snoop<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">class</span><span style="color: #0000ff;">></span>SnoopServlet<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-class<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>foo<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">></span>bar<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">run</span>-<span style="color: #ff0000;">as</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>Security role for anonymous access<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>tomcat<span style="color: #0000ff;"></</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">run</span>-as<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">load</span>-<span style="color: #ff0000;">on</span>-<span style="color: #ff0000;">startup</span><span style="color: #0000ff;">></span>1<span style="color: #0000ff;"></</span><span style="color: #800000;">load</span>-on-statup<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>JspServlet<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">></span>/test.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">jsp</span>-file<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">init</span>-<span style="color: #ff0000;">param</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>firstName<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">param</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">></span>tomcat<span style="color: #0000ff;"></</span><span style="color: #800000;">param</span>-value<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">init</span>-param<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">load</span>-<span style="color: #ff0000;">on</span>-<span style="color: #ff0000;">startup</span><span style="color: #0000ff;">></span>2<span style="color: #0000ff;"></</span><span style="color: #800000;">load</span>-on-startup<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">servlet</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>snoop<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">></span>/snoop<span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">servlet</span>-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">session</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">session</span>-<span style="color: #ff0000;">timeout</span><span style="color: #0000ff;">></span>120<span style="color: #0000ff;"></</span><span style="color: #800000;">session</span>-timeout<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">session</span>-config<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mime</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">extension</span><span style="color: #0000ff;">></span>htm<span style="color: #0000ff;"></</span><span style="color: #800000;">extension</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">mime</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>text/html<span style="color: #0000ff;"></</span><span style="color: #800000;">mime</span>-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">mime</span>-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span>-<span style="color: #ff0000;">list</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">></span>index.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">welcome</span>-file<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">welcome</span>-<span style="color: #ff0000;">file</span><span style="color: #0000ff;">></span>index.html<span style="color: #0000ff;"></</span><span style="color: #800000;">welcome</span>-file<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">welcome</span>-file-list<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">code</span><span style="color: #0000ff;">></span>404<span style="color: #0000ff;"></</span><span style="color: #800000;">error</span>-code<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">location</span><span style="color: #0000ff;">></span>/404.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">location</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">error</span>-page<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">exception</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>packagename.classname<span style="color: #0000ff;"></</span><span style="color: #800000;">exception</span>-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">location</span><span style="color: #0000ff;">></span>exception.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">location</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">error</span>-page<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">url</span><span style="color: #0000ff;">></span>http://jakarta.apache.org/tomcat/debug-taglib<span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span>-uri<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">location</span><span style="color: #0000ff;">></span>/WEB-INF/jsp/debug-taglib.tld<span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span>-location<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">env</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">env</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>jms/StockQueue<span style="color: #0000ff;"></</span><span style="color: #800000;">resource</span>-env-ref-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">resource</span>-env-ref<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>mail/Session<span style="color: #0000ff;"></</span><span style="color: #800000;">res</span>-ref-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>javax.mail.Sesssion<span style="color: #0000ff;"></</span><span style="color: #800000;">res</span>-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">res</span>-<span style="color: #ff0000;">auth</span><span style="color: #0000ff;">></span>Container<span style="color: #0000ff;"></</span><span style="color: #800000;">res</span>-auth<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">resource</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">security</span>-<span style="color: #ff0000;">constraint</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Example Security Constraint<span style="color: #0000ff;"></</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">resource</span>-<span style="color: #ff0000;">collection</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">web</span>-<span style="color: #ff0000;">resource</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Protected Area<span style="color: #0000ff;"></</span><span style="color: #800000;">web</span>-resource-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">></span>/jsp/security/proctected/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">></span>DELETE<span style="color: #0000ff;"></</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">></span>GET<span style="color: #0000ff;"></</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">></span>POST<span style="color: #0000ff;"></</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">http</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">></span>PUT<span style="color: #0000ff;"></</span><span style="color: #800000;">http</span>-method<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">web</span>-resource-collection<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">auth</span>-<span style="color: #ff0000;">constraint</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>tomcat<span style="color: #0000ff;"></</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>role1<span style="color: #0000ff;"></</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">auth</span>-constraint<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">security</span>-constraint<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">login</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">auth</span>-<span style="color: #ff0000;">method</span><span style="color: #0000ff;">></span>FORM<span style="color: #0000ff;"></</span><span style="color: #800000;">auth</span>-method<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">realm</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Example Form-Based Authentication Area<span style="color: #0000ff;"></</span><span style="color: #800000;">realm</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">login</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">login</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">></span>/jsp/security/protected/login.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">form</span>-login-page<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">form</span>-<span style="color: #ff0000;">error</span>-<span style="color: #ff0000;">page</span><span style="color: #0000ff;">></span>/jsp/security/protected/error.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">form</span>-error-page<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">form</span>-login-config<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">login</span>-config<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">security</span>-<span style="color: #ff0000;">role</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">role</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>tomcat<span style="color: #0000ff;"></</span><span style="color: #800000;">role</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">security</span>-role<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>minExemptions<span style="color: #0000ff;"></</span><span style="color: #800000;">env</span>-entry-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">value</span><span style="color: #0000ff;">></span>1<span style="color: #0000ff;"></</span><span style="color: #800000;">env</span>-entry-value<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">env</span>-<span style="color: #ff0000;">entry</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>java.lang.Integer<span style="color: #0000ff;"></</span><span style="color: #800000;">env</span>-entry-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">env</span>-entry<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>Example EJB Reference<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>ejb/Account<span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-ref-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>Entity<span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-ref-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">home</span><span style="color: #0000ff;">></span>com.mycompany.mypackage.AccountHome<span style="color: #0000ff;"></</span><span style="color: #800000;">home</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">remote</span><span style="color: #0000ff;">></span>com.mycompany.mypackage.AccountRemote<span style="color: #0000ff;"></</span><span style="color: #800000;">remote</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-ref<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">local</span>-<span style="color: #ff0000;">ref</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>Example Local EJB Reference<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>ejb/ProcessOrder<span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-ref-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">ejb</span>-<span style="color: #ff0000;">ref</span>-<span style="color: #ff0000;">type</span><span style="color: #0000ff;">></span>Session<span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-ref-type<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">local</span>-<span style="color: #ff0000;">home</span><span style="color: #0000ff;">></span>com.mycompany.mypackage.ProcessOrderHome<span style="color: #0000ff;"></</span><span style="color: #800000;">local</span>-home<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">local</span><span style="color: #0000ff;">></span>com.mycompany.mypackage.ProcessOrder<span style="color: #0000ff;"></</span><span style="color: #800000;">local</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">ejb</span>-local-ref<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">web</span>-app<span style="color: #0000ff;">></span></pre> <pre> </pre> <pre><span style="color: #0000ff;">servlet 2.4中新增标{:</span></pre> <pre><span style="color: #0000ff;"><</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span>-<span style="color: #ff0000;">list</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">></span>ja<span style="color: #0000ff;"></</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">></span>Shift_JIS<span style="color: #0000ff;"></</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">locale</span>-encoding-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">locale</span>-<span style="color: #ff0000;">encoding</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">></span>zh_TW<span style="color: #0000ff;"></</span><span style="color: #800000;">locale</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">></span>Big5<span style="color: #0000ff;"></</span><span style="color: #800000;">encoding</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">locale</span>-encoding-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">locale</span>-encoding-mapping-list<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">mapping</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">filter</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>Logging Filter<span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">></span>/products/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span>REQUEST<span style="color: #0000ff;"></</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span>FORWARD<span style="color: #0000ff;"></</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span>INCLUDE<span style="color: #0000ff;"></</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span>ERROR<span style="color: #0000ff;"></</span><span style="color: #800000;">dispatcher</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">filter</span>-mapping<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">config</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">uri</span><span style="color: #0000ff;">></span>Taglib<span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span>-uri<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">taglib</span>-<span style="color: #ff0000;">location</span><span style="color: #0000ff;">></span>/WEB-INF/tlds/mytaglib.tld<span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span>-location<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">taglib</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">jsp</span>-<span style="color: #ff0000;">property</span>-<span style="color: #ff0000;">group</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span>Special property group for jsp configuration.<span style="color: #0000ff;"></</span><span style="color: #800000;">description</span><span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">display</span>-<span style="color: #ff0000;">name</span><span style="color: #0000ff;">></span>JspConfiguration<span style="color: #0000ff;"></</span><span style="color: #800000;">display</span>-name<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">url</span>-<span style="color: #ff0000;">pattern</span><span style="color: #0000ff;">></span>/jsp/*<span style="color: #0000ff;"></</span><span style="color: #800000;">url</span>-pattern<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">el</span>-<span style="color: #ff0000;">ignored</span><span style="color: #0000ff;">></span>true<span style="color: #0000ff;"></</span><span style="color: #800000;">el</span>-ignored<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">page</span>-<span style="color: #ff0000;">encoding</span><span style="color: #0000ff;">></span>UTF-8<span style="color: #0000ff;"></</span><span style="color: #800000;">page</span>-encoding<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">scripting</span>-<span style="color: #ff0000;">invalid</span><span style="color: #0000ff;">></span>true<span style="color: #0000ff;"></</span><span style="color: #800000;">scripting</span>-invalid<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">include</span>--<span style="color: #ff0000;">prelude</span><span style="color: #0000ff;">></span>/include/prelude.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">include</span>-prelude<span style="color: #0000ff;">></span> <span style="color: #0000ff;"><</span><span style="color: #800000;">include</span>-<span style="color: #ff0000;">coda</span><span style="color: #0000ff;">></span>/include/coda.jsp<span style="color: #0000ff;"></</span><span style="color: #800000;">include</span>-coda<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">jsp</span>-property-group<span style="color: #0000ff;">></span> <span style="color: #0000ff;"></</span><span style="color: #800000;">jsp</span>-config<span style="color: #0000ff;">></span></pre> <img src ="http://www.aygfsteel.com/yill/aggbug/189882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yill/" target="_blank">yill</a> 2008-03-31 22:17 <a href="http://www.aygfsteel.com/yill/archive/2008/03/31/189882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java虚拟?/title><link>http://www.aygfsteel.com/yill/archive/2008/03/29/189472.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Sat, 29 Mar 2008 08:52:00 GMT</pubDate><guid>http://www.aygfsteel.com/yill/archive/2008/03/29/189472.html</guid><wfw:comment>http://www.aygfsteel.com/yill/comments/189472.html</wfw:comment><comments>http://www.aygfsteel.com/yill/archive/2008/03/29/189472.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yill/comments/commentRss/189472.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yill/services/trackbacks/189472.html</trackback:ping><description><![CDATA[<img height="397" alt="" src="http://www.aygfsteel.com/images/blogjava_net/yill/a.GIF" width="550" border="0" /><br /> 图一  Java虚拟机的内部体系l构<br /> <br />   <p><span style="font-family: 宋体">每个</span>Java<span style="font-family: 宋体">虚拟机实例都有一个方法区以及一个堆Q它们是p虚拟机实例中所有线E共享的?/span><br /> <span style="font-family: 宋体">当虚拟机装蝲一?/span>class<span style="font-family: 宋体">文gӞ它会从这?/span>class<span style="font-family: 宋体">文g包含的二q制数据中解析类型信息,然后把这些类型信息放到方法区中;</span><br /> <span style="font-family: 宋体">当程序运行时Q虚拟机会把所有该E序在运行时创徏的对象都攑ֈ堆中Q?/span><br /> <span style="font-family: 宋体">当每一个新U程被创建时Q它都将得到它自q</span>PC<span style="font-family: 宋体">寄存器(E序计数器)以及一?/span>Java<span style="font-family: 宋体">栈,如果U程正在执行的是一?/span>java<span style="font-family: 宋体">ҎQ非本地ҎQ,那么</span>PC<span style="font-family: 宋体">寄存器的值将L指示下一条将被执行的指oQ而它?/span>Java<span style="font-family: 宋体">栈则L存储该线E中</span>java<span style="font-family: 宋体">Ҏ调用的状?/span>?span style="font-family: 宋体">包括它的局部变量,被调用时传进来的参数Q它的返回|以及q算的中间结果等{。而本地方法调用的状态,则是以某U依赖与具体实现的方式存储在本地Ҏ栈中Q也可能是在寄存器或者其他某些与特定实现相关的内存中?/span></p> <p>Java<span style="font-family: 宋体">栈由许多栈Q?/span>stack frme<span style="font-family: 宋体">Q或者说帧(</span>frame<span style="font-family: 宋体">Q组成,一个栈帧包含一个方法调用。当U程调用一?/span>Java<span style="font-family: 宋体">ҎӞ虚拟机压入一个新的栈帧到该线E的</span>java<span style="font-family: 宋体">栈中Q当该方法返回时Q这个栈帧被?/span>Java<span style="font-family: 宋体">栈中弹出q抛弃?/span></p> <p>Java<span style="font-family: 宋体">虚拟机没有寄存器Q其指o集?/span>Java<span style="font-family: 宋体">栈来存储中间数据?/span></p> <p><strong><span style="font-family: 宋体">数据cd</span></strong></p> <img height="429" alt="" src="http://www.aygfsteel.com/images/blogjava_net/yill/b.GIF" width="566" border="0" /><br /> <br />   <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟机是通过某些数据cd来执行计的Q数据类型及其运都是由</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟范严格定义的。数据类型可以分ZU:基本cd和引用类型。基本类型的变量持有原始|而引用类型的变量持有引用倹{术?#8220;引用?#8221;指的是对某个对象的引用,而不是该对象本nQ与此相对,原始值则是真正的原始数据?/span><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言中的所有基本类型同样也都是</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟Z的基本类型,但是</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">有点特别Q虽然虚拟机也把</span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">看做基本cdQ但是指令集?/span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">只有很有限的支持。当~译器把</span><span lang="EN-US">java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">源码~译成字节码Ӟ它会?/span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来表C?/span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。设?/span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">值的操作会?/span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q?/span><span lang="EN-US">boolean</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组是当?/span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数组来访问的。但是在“?#8221;ZQ它也可以被表示Z域?br /> <br />   <table style="border-right: medium none; border-top: medium none; border-left: medium none; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" border="1"> <tbody> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p><span style="font-family: 宋体">cd</span></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p><span style="font-family: 宋体">范围</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>byte</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>8bit<span style="font-family: 宋体">Q带W号Q二q制补码Q?/span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">?,2?-1]</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>short</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>16bit<span style="font-family: 宋体">Q带W号Q二q制补码Q?/span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">?5,2?5-1]</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>int</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>32bit<span style="font-family: 宋体">Q带W号Q二q制补码Q?/span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">?1,2?1-1]</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>long</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>64bit<span style="font-family: 宋体">Q带W号Q二q制补码Q?/span>[-<span style="font-family: 宋体">2</span><span style="font-family: 宋体">?3,2?3-1]</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>char</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>16bit<span style="font-family: 宋体">Q不带符P</span>Unicode<span style="font-family: 宋体">字符Q?/span>[0<span style="font-family: 宋体">,2</span><span style="font-family: 宋体">?6-1]</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>float</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>32bit<span style="font-family: 宋体">Q?/span>IEEE 754<span style="font-family: 宋体">标准单精度QҎ</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>double</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p>64bit<span style="font-family: 宋体">Q?/span>IEEE 754<span style="font-family: 宋体">标准双进度QҎ</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>returnAddress</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p><span style="font-family: 宋体">同一Ҏ中某操作码的地址</span></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 95.4pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="127"> <p>reference</p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; width: 330.7pt; padding-top: 0cm; border-bottom: windowtext 1pt solid" valign="top" width="441"> <p><span style="font-family: 宋体">堆中Ҏ对象的引用,或者是</span>null</p> </td> </tr> </tbody> </table> <br /> <br />   </p> <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span lang="EN-US">Java</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">虚拟ZQ最基本的数据单元就是字Q?/span><span lang="EN-US">word</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Q,它的大小是由每个虚拟机实现的设计者来军_的。字长必够大Q至是一个字单元p以持?/span><span lang="EN-US">byte</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">short</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">int</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">char</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">float</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">returnAddress</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span><span lang="EN-US">reference</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cd的|而两个字单元p以持?/span><span lang="EN-US">long</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">或?/span><span lang="EN-US">double</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cd的倹{因此,虚拟机实现的设计者至得选择</span><span lang="EN-US">32</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">位作为字ѝ?/span></p> <p class="MsoNormal" style="text-indent: 20.6pt; mso-char-indent-count: 2.0"><strong style="mso-bidi-font-weight: normal"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ?/span><span lang="EN-US"><o:p></o:p></span></strong></p> <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">׃所有线E都׃nҎ区,因此它们Ҏ法区数据的访问必被设计为线E安全的?/span></p> <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">cd信息</span><span lang="EN-US"><span style="mso-spacerun: yes">  </span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ个装载的cdQ虚拟机都会在方法区中存储以下类型信息:</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个cd的全限定?/span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个cd的直接超cȝ全限定名</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个cd是类cdq是接口cd</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">q个cd的访问修饰符</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">M直接接口的全限定名的有序列?/span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">除这些基本信息外Q还需要如下信息:</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">该类型的帔R?/span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">字段信息</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">Ҏ信息</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">除了帔R以外的所有类变量</span></p> <p class="MsoNormal" style="margin-left: 63pt; text-indent: -21pt; mso-list: l0 level2 lfo1; tab-stops: list 63.0pt"><span lang="EN-US" style="font-family: Wingdings; mso-bidi-font-size: 10.5pt; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="font: 7pt 'Times New Roman'">         </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">一个到c?/span><span lang="EN-US">ClassLoader</span><span style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的引?/span></p> <p class="MsoNormal" style="text-indent: 21pt; mso-char-indent-count: 2.0"><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">一个到</span><span lang="EN-US" style="font-size: 10.5pt; font-family: 'Times New Roman'; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">Class</span><span style="font-size: 10.5pt; font-family: 宋体; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">cȝ引用</span></span></p> <img src ="http://www.aygfsteel.com/yill/aggbug/189472.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yill/" target="_blank">yill</a> 2008-03-29 16:52 <a href="http://www.aygfsteel.com/yill/archive/2008/03/29/189472.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Inside The JVM Part2: java如何实现安全?/title><link>http://www.aygfsteel.com/yill/archive/2008/03/22/187842.html</link><dc:creator>yill</dc:creator><author>yill</author><pubDate>Fri, 21 Mar 2008 19:50:00 GMT</pubDate><guid>http://www.aygfsteel.com/yill/archive/2008/03/22/187842.html</guid><wfw:comment>http://www.aygfsteel.com/yill/comments/187842.html</wfw:comment><comments>http://www.aygfsteel.com/yill/archive/2008/03/22/187842.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/yill/comments/commentRss/187842.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/yill/services/trackbacks/187842.html</trackback:ping><description><![CDATA[<p>|络Ud性和q_无关性略q。。。看看java如何实现安全?br /> <br /> Java通过提供一?#8221;安全沙箱“来保证从|络或者其他不信Q的地方下载ƈq行的程序不会破坏本地数据,Z保沙箱是可靠的Qjava安全模型对体pȝ构的各方面都q行了考虑。组成java沙箱的基本组件如下:</p> <ul> <li>c装载器l构 <li>class文g验器 <li>内置于Java虚拟机(及语aQ的安全Ҏ? <li>安全理器及Java API </li> </ul> <p>Java的沙安全模型,最重要的优点之一是q些lg中的c装载器和安全管理器是可以由用户定制的?br /> <br /> <strong>1、类装蝲器体pȝ?/strong><br /> java沙箱中,c装载器体系l构是第一道防U,c装载器体系l构在三个方面对Java的沙pv作用Q?br /> </p> <ul> <li>它防止恶意代码去q涉善意的代码?------通过为由不同的类装蝲器装入的cL供不同的命名I间来实现的Q这个命名空间由Java虚拟机维? <li>它守护了被信ȝcd的边界?-------通过分别使用不同的类装蝲器装载可靠的包和不可靠的包来实现Q参见例1和例2的加q解? <li>它将代码归入了某c(UCؓ保护域)Q该cȝ定了代码可以q行哪些操作?</li> </ul> <p>?Q如果某个恶意的cd以成功欺骗Java虚拟机,使Java虚拟机相信它是一个来自Java API的可信Qc,那么Q这个恶意的cd可以H破沙箱的阻隔了Q让我们看看java如何Lq种情况的发生?br /> Java的类装蝲器结构是一个以启动c装载器为根的委zNQ子 c装载器在装载一个类旉先会h其双亲类装蝲器来装蝲Q如果双亲装载器能够装蝲成功Q则直接使用该类型,只有所有双亲类装蝲器都装蝲p|的时候,才会Ҏ自定义的Ҏ去装载该cdQ这中工作方式被UC”双亲委派模式“?br /> 在这U模式下Q如果一个自定义的网l类装蝲器试图从|络上下载一个和Java API中某个类型同名的cdQ如java.lang.IntegerӞ它将不能成功Q因为通过层层委派Q这个类型会被启动类装蝲器装载,而网l类装蝲器将直接使用正确的java.lang.IntegerQ而没有机会从|络上下载ƈ装蝲q个恶意的java.lang.Integer?br /> <br /> ?Q如果自定义的网l类装蝲器不像例1一样去替换一个被信Q的类Q而是在被信Q的包中插入一个全新的cdQ比如,一个java.lang.Virus的时候,会发生什么?<br /> 通过层层委派Q网l类装蝲器最l会正确装蝲q个名ؓjava.lang.Virus的类Q暗CZq个cLJava API的一部分Q因此,它可以访问java.lang包中被信ȝ的特D访问权限(protectedQ,然而,q个情况不会发生Q因为java虚拟机只把彼此访问的Ҏ权限授予由同一个类装蝲器装载到同一个包中的cdQ即只有同一?#8221;q行时包“的类之间才有Ҏ讉K权限Q而java.lang.Virus和java.lang中其他被信Q的类分别有网l类装蝲器和启动c装载器装蝲Q它们不属于同一个运行时包?br /> </p> <strong>2、class文g验器</strong><br /> 和类装蝲器一Pclass文g验器包装装蝲的class文g内容有正的内部l构Qƈ且这些class文g怺间协调一_class文g验器实现的安全目标之一是E序的健壮性,它必M证一个class的装载不会导致虚拟机的崩溃?br /> class文g验器要进行四独立的扫描来完成它的操作。第一扫描是在类被装载时q行的,在这ơ扫描中Qclass文g验器查这个class文g的内部结构,以保证它可以被安全的~译Q第二趟和第三趟扫描是在q接q程中进行的Q在q两ơ扫描中Qclass文g验器认cd数据遵从Java~程语言的语义,包括验它所包含的所有字节码的完整性;W四扫描是在进行动态连接的q程中解析符号引用时q行的,在这ơ扫描中Qclass文g验器认被引用的cR字D以及方法确实存在?<br /> <br /> <strong>W一扫描:     class文g的结构检?/strong><br /> class文g验器会检查每一D被当作cd导入的字节序列是否符合java class文g的基本结构,比如是否是以数0xCAFEBABE开_认class文g中声明的ȝ本号和次版本h否在q个java虚拟机的支持范围内,必须认q个文g没有被删节或者附加一些字节(通过每个定义长度的地Ҏ定M长度Q。第一扫描的主要目的是保证这个字节序列正的定义了一个类型,它必遵从java class文g的固定格式,q样它才能被~译成在ҎZ的(Z实现的)内部数据l构。第二、三、四扫描不是在W合class文g的二q制数据上进行的Q而是在方法区中、由实现军_的数据结构上q行的?<br /> <br /> <strong>W二扫描:     cd数据的语义检?/strong><br /> q次查,class文g验器不需要查看字节码Q也不需要查看和装蝲M其他cd。在q趟扫描中,验器查看每个l成部分Q确认它们是否是其所属类型的实例Q它们结构是否正。比如,Ҏ描述W(它的q回cdQ以及参数的cd和个敎ͼ在class文g中被存储Z个字W串Q这个字W串必须W合特定的上下文无关文法。另外,q会查这个类本n是否W合特定的条Ӟ它们是由java~程语言规定的。比如,除Object外,所有类都必要有一个超c,final的类不能被子cdQfinalҎ也没有被覆盖Q检查常量池中的条目是合法的Q而且帔R池的所有烦引必L向正类型的帔R池条目?br /> <br /> <strong>W三扫描:      字节码验?/strong><br /> 字节码流代表了java的方法,它是pUCؓ操作码的单字节指令组成的序列Q每一个操作码后都跟着一个或多个操作数。执行字节码Ӟ依次执行操作码,q就在java虚拟机内构成了执行的U程Q每一个线E被授予自己的java栈,q个栈是׃同的栈构成的,每一个方法调用将获得一个自q栈----栈其实是一个内存片D,其中存储着局部变量和计算的中间结果,用于存储中间l果的部分被UCؓ操作数栈?br /> 字节码检验器要进行大量的查,以确保采用Q何\径在字节码流中都得到一个确定的操作码,保操作数栈L包含正确的数g及正的cd。它必须保证局部变量在赋予合适的g前不能被讉KQ而且cȝ字段中必LL被赋予正类型的|cȝҎ被调用时L传递正数值和cd的参数。字节码验器q必M证每个操作码都是合法的,即都有合法的操作敎ͼ以及Ҏ一个操作码Q合适类型的数g于局部变量中或是在操作数栈中。这些仅仅是字节码检验器所做的大量验工作中的一部分,在整个检验过E通过后,它就能保证这个字节码可以被java虚拟机安全的执行?br /> <br /> <strong>W四扫描:      W合引用的验?/strong><br /> 在动态连接过E中Q如果包含在一个class文g中的W号引用被解析时Qclass文g验器q行W四扫描。在q趟扫描中,java虚拟机将q踪那些引用-----从被验证的class文g到被引用的class文gQ以保q个引用是正的。这ơ扫描可能要装蝲新的cR考虑到虚拟机实现上的差别Q第四趟扫描可能紧随W三扫描发生,也有可能在第三趟扫描之后很久Q当字节码被执行时才执行?br /> 动态连接是一个将W号引用解析为直接引用的q程。当java虚拟机执行字节码Ӟ如果它遇C个操作码Q这个操作码W一ơ用一个指向另一个类的符号引用,那么虚拟机就必须解析q个W号引用。在解析Ӟ虚拟机执行两个基本Q务:<br /> 1Q查找被引用的类Q如果必要的话就装蝲它)<br /> 2Q将W号引用替换为直接引用,例如指向一个类、字D|Ҏ的指针或偏移?br /> 虚拟机必记住这个直接引用,q样当它以后再次遇到同样的引用时Q就可以直接使用Q而不需要重新解析该W号引用了?br /> <br /> <strong>二进制兼Ҏ规?/strong><br /> Z能方便的修改cd的代码,java~程语言被设计成允许对一个类做多U修改,但ƈ不要求对依赖于它的那些类q行重编译。java语言规范中列Z用户可以做的多种改动Q这些改动称Zq制兼容性规则。这些规则明地定义了:在一个类中,哪些可以被修攏V增加和删除Q而ƈ不破坏这个被修改的类与依赖于它的那些事先已经存在的类之间的二q制兼容性?<br /> <br /> <strong>3、java虚拟Z内置的安全特?/strong><br /> 除了四趟扫描之外Qjava虚拟机在执行字节码时q进行其他一些内|的安全机制的操作,q些机制大多数是java的类型安全的基础Q它们作为java~程语言保证javaE序的健壮性,同样Q它们也是java虚拟机的Ҏ:<br /> <br /> <ul> <li>cd安全的引用{? <li>l构化的内存讉KQ无指针法Q? <li>自动垃圾攉Q不必显式地释放被分配的内存Q? <li>数组边界? <li>I引用检?</li> </ul> <p><strong>4、安全管理器和Java API</strong><br /> java安全模型的前三个部分共同辑ֈ了一个目的:保持java虚拟机的实例和它正在q行的应用程序的内部完整性,使得它们不被下蝲的恶意或有漏z的代码늊。相反,java安全模型的第四个l成部分---安全理?--则用于保护虚拟机外部资源不被虚拟机内q行的恶意或有漏z的代码늊。这个安全管理器是一个单独的对象Q在q行的java虚拟ZQ它在访问控?--对于外部资源的访问控?--中v中枢作用?br /> 安全理器定义了沙箱的外部边界,q且它是可以定制的?<br /> 安全理器中需要了解如下一些概念和c:<br /> <br /> <ul> <li>默认安全理器:java.lang.SecurityManager <li>代码{֐和认? <li>{略Qjava.security.Policy <li>权限Qjava.security.Permission <li>{略文g <li>保护域:CodeSource,PersimissionCollection,ProtectionDomain <li>讉K控制器:java.security.AccessController </li> </ul> <p>q部分内容太多,只能带过了?br /> <br /> <strong>Java安全模型的不?/strong><br /> Java安全模型不能解军_下问题:<br /> </p> <ul> <p> <li>不断分配内存Q直到内存耗尽 <li>不断生成U程D每g事都慢的不可忍受 </li> </ul> <p>以上两中cd的攻击被UC拒绝服务dQDOSQ?br /> 另一个没有放入安全模型的领域是关于将权限映射到系l用P代码以这个用L名义来运行。这中访问控制在unixpȝ中较为常见,它基于用户IDҎ件的讉Kq行控制?/p> <img src ="http://www.aygfsteel.com/yill/aggbug/187842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/yill/" target="_blank">yill</a> 2008-03-22 03:50 <a href="http://www.aygfsteel.com/yill/archive/2008/03/22/187842.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Inside The JVM Part1: java体系l构http://www.aygfsteel.com/yill/archive/2008/03/22/187829.htmlyillyillFri, 21 Mar 2008 16:55:00 GMThttp://www.aygfsteel.com/yill/archive/2008/03/22/187829.htmlhttp://www.aygfsteel.com/yill/comments/187829.htmlhttp://www.aygfsteel.com/yill/archive/2008/03/22/187829.html#Feedback0http://www.aygfsteel.com/yill/comments/commentRss/187829.htmlhttp://www.aygfsteel.com/yill/services/trackbacks/187829.html一、Java体系l构
Java体系l构包括四个独立但相关的技术:

  • JavaE序设计语言
  • Java class文g格式
  • Java应用~程接口QAPIQ?/li>
  • Java虚拟?/li>

二、Java虚拟?/p>

Java虚拟机是Java的面向网l的核心Q它支持Java面向|络体系l构三大支柱的所有方面:q_无关性,安全性和|络Ud性。Java虚拟机的主要d是装载class文gq且执行其中的字节码。classloader负责装蝲class文gQ执行引擎负责执行字节码?br />     执行引擎
׃Java虚拟范只定义了每个虚拟机都必d现的Ҏ,没有规定具体的实现方法,因此不同的Java虚拟机,执行引擎可能实现的非怸同,一般来说有如下几种实现ҎQ?/p>

  1. 一ơ性解释字节码?/li>
  2. x~译?just-in-time compiler)Q这U情况下Q第一ơ被执行的字节码会被~译成本地机器代码,~译出的本地机器代码会被~存Q当Ҏ以后被调用的时候可以重用?/li>
  3. 自适应优化器,q种情况下,虚拟机开始的时候解释字节码Q但是会监视q行中程序的zdQƈ且记录下使用频繁的代码段Q程序运行的时候,虚拟机只会把那些zd最频繁的代码编译成本地版本Q其他仍旧保留字节码--p拟机l箋解释它们。一个自适应的优化器可以使得Java虚拟机在80%-90%的时间里执行被优化过的本C码?/li>
  4. q件芯片构成,由本地方法执行Java字节码,实际上这U实现是把执行引擎内嵌在芯片里?/li>

    Classloader
一个java应用E序可以有两U类装蝲器:启动c装载器(bootstrap)和用户定义的c装载器Q启动类装蝲器是唯一的,它属于Java虚拟机实现的一部分?br /> 每一个类装蝲器都有它自己的命名空_一个类只能”看到“由同一个类装蝲器装载的其他c,不能跨命名空间访问?br /> 用过允许实例化用戯定义的类装蝲器(该类装蝲器知道如何从|络下蝲class文gQ,Javac装载器的体pȝ构提供了对网l移动性的支持Q通过允许使用不同的用户定义的c装载器装蝲不同来源的class文gQJavac装载器的体pȝ构提供了对完全性的支持?/p>

yill 2008-03-22 00:55 发表评论
]]>
java 加密法 DSA 实现代码http://www.aygfsteel.com/yill/archive/2008/03/19/187348.htmlyillyillWed, 19 Mar 2008 12:34:00 GMThttp://www.aygfsteel.com/yill/archive/2008/03/19/187348.htmlhttp://www.aygfsteel.com/yill/comments/187348.htmlhttp://www.aygfsteel.com/yill/archive/2008/03/19/187348.html#Feedback0http://www.aygfsteel.com/yill/comments/commentRss/187348.htmlhttp://www.aygfsteel.com/yill/services/trackbacks/187348.html阅读全文

yill 2008-03-19 20:34 发表评论
]]>
java 加密法 RSA 实现代码http://www.aygfsteel.com/yill/archive/2008/03/19/187122.htmlyillyillTue, 18 Mar 2008 16:08:00 GMThttp://www.aygfsteel.com/yill/archive/2008/03/19/187122.htmlhttp://www.aygfsteel.com/yill/comments/187122.htmlhttp://www.aygfsteel.com/yill/archive/2008/03/19/187122.html#Feedback0http://www.aygfsteel.com/yill/comments/commentRss/187122.htmlhttp://www.aygfsteel.com/yill/services/trackbacks/187122.html阅读全文

yill 2008-03-19 00:08 发表评论
]]>
java 加密法 MD5 实现代码http://www.aygfsteel.com/yill/archive/2008/03/18/187119.htmlyillyillTue, 18 Mar 2008 15:42:00 GMThttp://www.aygfsteel.com/yill/archive/2008/03/18/187119.htmlhttp://www.aygfsteel.com/yill/comments/187119.htmlhttp://www.aygfsteel.com/yill/archive/2008/03/18/187119.html#Feedback0http://www.aygfsteel.com/yill/comments/commentRss/187119.htmlhttp://www.aygfsteel.com/yill/services/trackbacks/187119.htmlpackage com.yill;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5 encrypt class, returns a MD5-encrypted hex string.
 * 
 * 
@author yill
 * 
@version 2008-2-26
 * 
@since 1.0
 
*/

public class YillMD5
{
    
/**
     * The hex digits.
     
*/

    
private static final String[] hexDigits =
    
{
            
"0""1""2""3""4""5""6""7""8""9""a""b""c",
            
"d""e""f"
    }
;

    
/**
     * Transform the byte array to hex string.
     * 
     * 
@param b
     * 
@return
     
*/

    
public static String byteArrayToHexString(byte[] b)
    
{
        StringBuffer resultSb 
= new StringBuffer();
        
for (int i = 0; i < b.length; i++)
        
{
            resultSb.append(byteToHexString(b[i]));
        }

        
return resultSb.toString();
    }


    
/**
     * Transform a byte to hex string.
     * 
     * 
@param b
     * 
@return
     
*/

    
private static String byteToHexString(byte b)
    
{
        
int n = b;
        
if (n < 0)
            n 
= 256 + n;

        
// get the first four bit
        int d1 = n / 16;

        
// get the second four bit
        int d2 = n % 16;

        
return hexDigits[d1] + hexDigits[d2];
    }


    
/**
     * Get the MD5 encrypt hex string of the origin string. <br/>The origin
     * string won't validate here, so who use the API should validate by
     * himself.
     * 
     * 
@param origin
     * 
@return
     * 
@throws NoSuchAlgorithmException
     
*/

    
public static String MD5Encode(String origin)
            
throws NoSuchAlgorithmException
    
{
        MessageDigest md 
= MessageDigest.getInstance("MD5");
        
return byteArrayToHexString(md.digest(origin.getBytes()));
    }


    
public static void main(String[] args)
    
{
        
try
        
{
            System.out
                    .println(
"The MD5 encrypt code of http://www.aygfsteel.com/yill/ is: "
                            
+ YillMD5
                                    .MD5Encode(
"http://www.aygfsteel.com/yill/"));
        }

        
catch (NoSuchAlgorithmException e)
        
{
            e.printStackTrace();
        }

    }

}



yill 2008-03-18 23:42 发表评论
]]>
վ֩ģ壺 | | Ȫ| ͭɽ| ɰ| ½| ޳| | ڻ| | ɽ| ƽԭ| ƽ| | ݸ| ˮ| Դ| ͨ| ˳| | ī| | ͺ| ն| ʤ| | ̨| | | | ɽ| ƽ| ݰ| | | 㽭ʡ| | | | | |