﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Kimi's NutShell-随笔分类-Java</title><link>http://www.blogjava.net/kemi/category/8724.html</link><description>壁立千仞，无欲则刚</description><language>zh-cn</language><lastBuildDate>Tue, 04 Mar 2008 07:26:43 GMT</lastBuildDate><pubDate>Tue, 04 Mar 2008 07:26:43 GMT</pubDate><ttl>60</ttl><item><title>&lt;原创&gt;  使用ResourceBundle读取properties文件的简明代码</title><link>http://www.blogjava.net/kemi/archive/2008/03/04/183652.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 04 Mar 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/03/04/183652.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/183652.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/03/04/183652.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/183652.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/183652.html</trackback:ping><description><![CDATA[
		<p>大家都知道，读取资源文件的方法有很多种。下面我用的是利用java.util.ResourceBundle来读取，可以避免比较烦人的路径问题。另外资源国际化方面，后面会补充进去。<br />1、PropertiesUtil.java<br /><img height="503" alt="pp.JPG" src="http://www.blogjava.net/images/blogjava_net/kemi/pp.JPG" width="566" border="0" /><br /><br /><br />2、使用注意：<br />   .properties文件是放在class包中的，不是在源码src中<br /><img style="WIDTH: 586px; HEIGHT: 280px" height="280" alt="cc.JPG" src="http://www.blogjava.net/images/blogjava_net/kemi/cc.JPG" width="727" border="0" /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/183652.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-03-04 11:36 <a href="http://www.blogjava.net/kemi/archive/2008/03/04/183652.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;原创&gt; AXIS 1.X 传输 自定义对象的注意事项 </title><link>http://www.blogjava.net/kemi/archive/2008/03/03/183502.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 03 Mar 2008 08:46:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/03/03/183502.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/183502.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/03/03/183502.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/183502.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/183502.html</trackback:ping><description><![CDATA[1、修改service-config.xml<br />  &lt;service name="SceneWebService" provider="java:RPC"&gt;<br />  &lt;parameter name="allowedMethods" value="*"/&gt;<br />  &lt;parameter name="className" value="com.telecom.WS.SceneWS"/&gt;<br />    &lt;beanMapping languageSpecificType="java:com.telecom.bean.RuleBean" qname="ns:RuleBean" xmlns:ns="urn:BeanService"/&gt;<br /> &lt;/service&gt;<br /><br />注意：beanMapping的定义。languageSpecificType中定义使用那个类, qname定义类的名称。<br /><br />2、客户端需要反序列化<br />Service service = new Service();<br />Call call = null;<br />call = (Call) service.createCall();<br />QName qn = new QName("urn:BeanService","RuleBean");<br />call.registerTypeMapping(RuleBean.class, qn,    new BeanSerializerFactory(RuleBean.class, qn),    new BeanDeserializerFactory(RuleBean.class, qn)); <br /><br />3、RuleBean需要序列化<br />import java.io.Serializable; <br />public class RuleBean implements Serializable { <br />public RuleBean(){           //需要默认构造函数<br />}<br />&lt;some get/set methods&gt;<br /><br />}<img src ="http://www.blogjava.net/kemi/aggbug/183502.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-03-03 16:46 <a href="http://www.blogjava.net/kemi/archive/2008/03/03/183502.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MVC简单模式： 登录 （转）</title><link>http://www.blogjava.net/kemi/archive/2008/02/28/182684.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 28 Feb 2008 06:39:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/02/28/182684.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/182684.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/02/28/182684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/182684.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/182684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这次涉及到四个文件:登录页面:login.html登录成功欢迎页面:login_success.jsp登录失败页面:login_failure.jspServlet处理文件:LoginServlet.java		其实还涉及到一个文件:web.xml,这个后面再说:		下面分别介绍这几个文件:登录页面:login.html																							...&nbsp;&nbsp;<a href='http://www.blogjava.net/kemi/archive/2008/02/28/182684.html'>阅读全文</a><img src ="http://www.blogjava.net/kemi/aggbug/182684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-02-28 14:39 <a href="http://www.blogjava.net/kemi/archive/2008/02/28/182684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AXIS的JAVA2WSDL和WSDL2JAVA 命令快记</title><link>http://www.blogjava.net/kemi/archive/2008/02/20/180862.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Wed, 20 Feb 2008 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/02/20/180862.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/180862.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/02/20/180862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/180862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/180862.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Courier New">1:  java org.apache.axis.wsdl.Java2WSDL -oBookService.wsdl -lhttp://localhost:8090/BookService/services/BookService -nBookService com.book.service.BookService </font>
		</p>
		<p>
				<font face="Courier New">2:  java org.apache.axis.wsdl.WSDL2Java -p com.hnisi.axis.client </font>
				<a href="http://192.168.3.42:8080/test/services/BookOrder?wsdl">
						<font face="Courier New">http://192.168.3.42:8080/test/services/BookOrder?wsdl</font>
				</a>
				<br />
				<br />
				<font face="Courier New">前提：AXIS环境配好</font>
		</p>
<img src ="http://www.blogjava.net/kemi/aggbug/180862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-02-20 15:07 <a href="http://www.blogjava.net/kemi/archive/2008/02/20/180862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BEA 被收购了，MY GOD！</title><link>http://www.blogjava.net/kemi/archive/2008/01/17/175959.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 17 Jan 2008 07:25:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/01/17/175959.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/175959.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/01/17/175959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/175959.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/175959.html</trackback:ping><description><![CDATA[2008年1月17日，值得纪念的一天，疯狂的一天。<br />BEA被宣布被ORACLE收购了！<br />乖乖，Borland IDE产品线的并购已经让人惊出身冷汗，还没凉，居然BEA也被盯上。<br />Delphi~ JB~ <br />到 WebLogic , WorkShop.......<br />这下ORACLE在中间件上跟IBM有的一拼了，WebSphere很强大。<br />那OC4J是不是会与WebLogic整合了？？<br />照这样下去，IBM快出DB3了～～～<br /><br />百家争鸣，百花齐放，看来快成过往云烟了。有分裂必有统一，历史的车轮就这样前进着。但愿这场战斗的结束会让我们老百姓过上更安定和谐的生活。希望ORACLE不要封杀开源了。<br /><br />PS： 今天我最崇拜的SUN公司也拿下了MYSQL，到底今天怎么了，好爆炸的消息啊。<img src ="http://www.blogjava.net/kemi/aggbug/175959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-01-17 15:25 <a href="http://www.blogjava.net/kemi/archive/2008/01/17/175959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JBOSS4.2 配置说明</title><link>http://www.blogjava.net/kemi/archive/2008/01/14/175198.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 14 Jan 2008 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2008/01/14/175198.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/175198.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2008/01/14/175198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/175198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/175198.html</trackback:ping><description><![CDATA[
		<div class="post-body">
				<div class="google-adsense-right">
						<script type="text/javascript">
								<!--
        google_ad_client = "pub-8438768637354676";
        google_ad_width = 336;
        google_ad_height = 280;
        google_ad_format = "336x280_as";
        google_ad_type = "text_image";
        //2007-01-17: wiki
        google_ad_channel = "9876870027";
        google_color_border = "FFFFFF";
        google_color_bg = "FFFFFF";
        google_color_link = "006699";
        google_color_text = "000000";
        google_color_url = "006699";
        //-->
						</script>
						<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
						</script>
				</div>
				<strong>一．</strong>
				<span style="FONT: 7pt 'Times New Roman'">             </span>
				<strong>
						<span style="FONT-FAMILY: 宋体">下载与安装</span>JBoss</strong>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">在本文中，我们下载的</span>JBoss<span style="FONT-FAMILY: 宋体">版本为：</span>4.2.1.GA<span style="FONT-FAMILY: 宋体">。</span></p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">下载地址：</span>
				</p>
				<p style="MARGIN-LEFT: 21pt">
						<a href="http://www.jboss.org">www.jboss.org</a>
				</p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">在如上的下载页中下载</span>JBoss-4.2.1.GA.zip<span style="FONT-FAMILY: 宋体">文件。</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">下载完成后，将其解压缩后即可完成安装，解压缩后将其放置到一个不带空格的目录</span>(<span style="FONT-FAMILY: 宋体">若目录带有空格，例如：</span>C:"Program Files<span style="FONT-FAMILY: 宋体">，日后可能会产生一些莫名的错误</span>)<span style="FONT-FAMILY: 宋体">，</span>eg<span style="FONT-FAMILY: 宋体">：</span>E:"JBoss4.2.1<span style="FONT-FAMILY: 宋体">。同时在“环境变量设置”中设置名为</span>JBOSS_HOME<span style="FONT-FAMILY: 宋体">的环境变量，值为</span>JBoss<span style="FONT-FAMILY: 宋体">的安装路径，如下图所示：<br /><img height="138" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/21128/r_clip_image302.jpg" width="346" border="0" /><br /></span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">在此，</span>JBoss<span style="FONT-FAMILY: 宋体">的安装工作已经结束，可通过如下方式测试安装是否成功：</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">运行</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"bin"run.bat<span style="FONT-FAMILY: 宋体">，如果窗口中没有出现异常，且出现：</span>10:16:19,765 INFO [Server] JBoss (MX MicroKernel) [4.2.1.GA (build: SVNTag=JBoss_4_2_1_GA date=200707131605)] Started in 30s:828ms<span style="FONT-FAMILY: 宋体">字样，则表示安装成功。</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">我们可以通过访问：</span>
						<a href="http://localhost:8080/">http://localhost:8080/</a>
						<span style="FONT-FAMILY: 宋体">进入</span>JBoss<span style="FONT-FAMILY: 宋体">的欢迎界面，点击</span>JBoss Management<span style="FONT-FAMILY: 宋体">下的</span>JMX Console<span style="FONT-FAMILY: 宋体">可进入</span>JBoss<span style="FONT-FAMILY: 宋体">的控制台。</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">若启动失败，可能由以下原因引起：</span>
				</p>
				<p style="MARGIN-LEFT: 57pt; TEXT-INDENT: -36pt; tab-stops: list 57.0pt">1）<span style="FONT: 7pt 'Times New Roman'">              </span>JBoss<span style="FONT-FAMILY: 宋体">所用的端口（</span>8080<span style="FONT-FAMILY: 宋体">，</span>1099<span style="FONT-FAMILY: 宋体">，</span>1098<span style="FONT-FAMILY: 宋体">，</span>8083<span style="FONT-FAMILY: 宋体">等）被占用。一般情况下为</span>8080<span style="FONT-FAMILY: 宋体">端口被占用（例如，</span>Oracle<span style="FONT-FAMILY: 宋体">占用了</span>8080<span style="FONT-FAMILY: 宋体">端口），此时需要修改</span>JBoss<span style="FONT-FAMILY: 宋体">的端口，方法为进入</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"deploy"jboss-web.deployer<span style="FONT-FAMILY: 宋体">目录，修改其下的</span>server.xml<span style="FONT-FAMILY: 宋体">目录，在此文件中搜索</span>8080<span style="FONT-FAMILY: 宋体">，将其改成你想要的端口即可（例如</span>8088<span style="FONT-FAMILY: 宋体">）；</span></p>
				<p style="MARGIN-LEFT: 57pt; TEXT-INDENT: -36pt; tab-stops: list 57.0pt">2）<span style="FONT: 7pt 'Times New Roman'">              </span>JDK<span style="FONT-FAMILY: 宋体">安装不正确；</span></p>
				<p style="MARGIN-LEFT: 57pt; TEXT-INDENT: -36pt; tab-stops: list 57.0pt">3）<span style="FONT: 7pt 'Times New Roman'">              </span>JBoss<span style="FONT-FAMILY: 宋体">下载不完全。</span></p>
				<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt">
						<strong>二．<span style="FONT: 7pt 'Times New Roman'">             </span></strong>
						<strong>JBoss</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">的目录结构说明</span>
						</strong>
				</p>
				<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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%; TEXT-ALIGN: center" align="center">
														<strong>
																<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">目录</span>
														</strong>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%; TEXT-ALIGN: center" align="center">
														<strong>
																<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">描述</span>
														</strong>
												</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">bin</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">启动和关闭</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的脚本（</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">run.bat</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">为</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">windows</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">系统下的启动脚本，</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">shutdown.bat</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">为</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">windows</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">系统下的关闭脚本）。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">client</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">客户端与</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">通信所需的</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">Java </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">库（</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JARs</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">）。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">docs</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">配置的样本文件（数据库配置等）。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">docs/dtd</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">在</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">中使用的各种</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">XML </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">文件的</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">DTD</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">lib</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">一些</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JAR</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">，</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">启动时加载，且被所有</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">配置共享。（不要把你的库放在这里）</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server </span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">各种</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">包含</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">3 </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">个默认的配置：</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">minimial</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">，</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">default </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">和</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">all</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">，在你安装时可以进行选择。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/all</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的完全配置，启动所有服务，包括集群和</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">IIOP </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的默认配置。在没有在</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">命令行中指定配置名称时使用。</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">(</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">我们下载的</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">4.2.1</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">版本默认采用此配置</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">) </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default/conf </span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的配置文件。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default/data</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的数据库文件。比如，嵌入的数据库，或者</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBossMQ</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default /deploy</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的热部署目录。放到这里的任何文件或目录会被</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">自动部署。</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">EJB</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">、</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">WAR </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">、</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">EAR</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">，甚至服务。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default /lib</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">一些</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JAR</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">，</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">在启动特定配置时加载他们。</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">(default </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">和</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">minimial </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">配置也包含这个和下面两个目录。</span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">) </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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default/log</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的日志文件。</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: 81.4pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="109">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">server/default/tmp</span>
												</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: 344.7pt; PADDING-TOP: 0cm; BORDER-BOTTOM: windowtext 1pt solid" valign="top" width="460">
												<p style="LINE-HEIGHT: 150%">
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%; FONT-FAMILY: 'Times New Roman'">JBoss </span>
														<span style="FONT-SIZE: 10.5pt; LINE-HEIGHT: 150%">的临时文件。</span>
												</p>
										</td>
								</tr>
						</tbody>
				</table>
				<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt">
						<strong>三．<span style="FONT: 7pt 'Times New Roman'">             </span></strong>
						<strong>JBoss</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">的配置</span>
						</strong>
				</p>
				<p style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt">
						<strong>1.<span style="FONT: 7pt 'Times New Roman'">       </span></strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">日志文件设置</span>
						</strong>
				</p>
				<p style="TEXT-INDENT: 18pt">
						<span style="FONT-FAMILY: 宋体">若需要修改</span>JBoss<span style="FONT-FAMILY: 宋体">默认的</span>log4j<span style="FONT-FAMILY: 宋体">设置，可修改</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"conf<span style="FONT-FAMILY: 宋体">下的</span>jboss-log4j.xml<span style="FONT-FAMILY: 宋体">文件，在该文件中可以看到，</span>log4j<span style="FONT-FAMILY: 宋体">的日志输出在</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"log<span style="FONT-FAMILY: 宋体">下的</span>server.log<span style="FONT-FAMILY: 宋体">文件中。对于</span>log4j<span style="FONT-FAMILY: 宋体">的设置，读者可以在网上搜索更加详细的信息。</span></p>
				<p style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt">
						<strong>2.<span style="FONT: 7pt 'Times New Roman'">       </span></strong>
						<strong>web</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">服务的端口号的修改</span>
						</strong>
				</p>
				<p style="TEXT-INDENT: 18pt">
						<span style="FONT-FAMILY: 宋体">这点在前文中有所提及，即修改</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"deploy"jboss-web.deployer<span style="FONT-FAMILY: 宋体">下的</span>server.xml<span style="FONT-FAMILY: 宋体">文件，内容如下：</span></p>
				<p style="TEXT-INDENT: 18pt">&lt;Connector port="8080" address="${jboss.bind.address}"    </p>
				<p style="TEXT-INDENT: 18pt">         maxThreads="250" maxHttpHeaderSize="8192"</p>
				<p style="TEXT-INDENT: 18pt">         emptySessionPath="true" protocol="HTTP/1.1"</p>
				<p style="TEXT-INDENT: 18pt">         enableLookups="false" redirectPort="8443" acceptCount="100"</p>
				<p style="TEXT-INDENT: 18pt">         connectionTimeout="20000" disableUploadTimeout="true" /&gt;</p>
				<p style="TEXT-INDENT: 18pt">
						<span style="FONT-FAMILY: 宋体">将上面的</span>8080<span style="FONT-FAMILY: 宋体">端口修改为你想要的端口即可。重新启动</span>JBoss<span style="FONT-FAMILY: 宋体">后访问：</span><a href="http://localhost/">http://localhost/</a>:<span style="FONT-FAMILY: 宋体">新设置的端口，可看到</span>JBoss<span style="FONT-FAMILY: 宋体">的欢迎界面。</span></p>
				<p style="MARGIN-LEFT: 18pt; TEXT-INDENT: -18pt; tab-stops: list 18.0pt">
						<strong>3.<span style="FONT: 7pt 'Times New Roman'">       </span></strong>
						<strong>JBoss</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">的安全设置</span>
						</strong>
				</p>
				<p style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt">
						<strong>1）</strong>
						<strong>jmx-console</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">登录的用户名和密码设置</span>
						</strong>
				</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">默认情况访问</span>
						<a href="http://localhost:8080/jmx-console">
								<span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none">http://localhost:8080/jmx-console</span>
						</a>
						<span style="FONT-FAMILY: 宋体">就可以浏览</span>jboss<span style="FONT-FAMILY: 宋体">的部署管理的一些信息，不需要输入用户名和密码，使用起来有点安全隐患。下面我们针对此问题对</span>jboss<span style="FONT-FAMILY: 宋体">进行配置，使得访问</span>jmx-console<span style="FONT-FAMILY: 宋体">也必须要知道用户名和密码才可进去访问。步骤如下：</span></p>
				<p style="TEXT-INDENT: 21pt">i) <span style="FONT-FAMILY: 宋体">找到</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml<span style="FONT-FAMILY: 宋体">文件，去掉</span>&lt;security-domain&gt;java:/jaas/jmx-console&lt;/security-domain&gt;<span style="FONT-FAMILY: 宋体">的注释。修改后的该文件内容为：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;jboss-web&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;!-- Uncomment the security-domain to enable security. You will</p>
				<p style="TEXT-INDENT: 21pt">      need to edit the htmladaptor login configuration to setup the</p>
				<p style="TEXT-INDENT: 21pt">      login modules used to authentication users.--&gt;</p>
				<p style="TEXT-INDENT: 21pt">      &lt;security-domain&gt;java:/jaas/jmx-console&lt;/security-domain&gt;</p>
				<p style="TEXT-INDENT: 21pt">&lt;/jboss-web&gt;</p>
				<p style="TEXT-INDENT: 21pt">ii<span style="FONT-FAMILY: 宋体">）修改与</span>i<span style="FONT-FAMILY: 宋体">）中的</span>jboss-web.xml<span style="FONT-FAMILY: 宋体">同级目录下的</span>web.xml<span style="FONT-FAMILY: 宋体">文件，查找到</span><span style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">&lt;</span>security-constraint/&gt;<span style="FONT-FAMILY: 宋体">节点，去掉它的注释，修改后该部分内容为：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;!-- A security constraint that restricts access to the HTML JMX console</p>
				<p style="TEXT-INDENT: 21pt">   to users with the role JBossAdmin. Edit the roles to what you want and</p>
				<p style="TEXT-INDENT: 21pt">   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable</p>
				<p style="TEXT-INDENT: 21pt">   secured access to the HTML JMX console.--&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;security-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">     &lt;web-resource-collection&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;web-resource-name&gt;HtmlAdaptor&lt;/web-resource-name&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;description&gt;An example security config that only allows users with the</p>
				<p style="TEXT-INDENT: 21pt">         role JBossAdmin to access the HTML JMX console web application</p>
				<p style="TEXT-INDENT: 21pt">       &lt;/description&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;http-method&gt;GET&lt;/http-method&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;http-method&gt;POST&lt;/http-method&gt;</p>
				<p style="TEXT-INDENT: 21pt">     &lt;/web-resource-collection&gt;</p>
				<p style="TEXT-INDENT: 21pt">     &lt;auth-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;role-name&gt;JBossAdmin&lt;/role-name&gt;</p>
				<p style="TEXT-INDENT: 21pt">     &lt;/auth-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;/security-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">   <span style="FONT-FAMILY: 宋体">在此处可以看出，为登录配置了角色</span>JBossAdmin<span style="FONT-FAMILY: 宋体">。</span></p>
				<p style="TEXT-INDENT: 21pt"> iii<span style="FONT-FAMILY: 宋体">）</span> <span style="COLOR: black; FONT-FAMILY: 宋体">在第一步中的</span><span style="COLOR: black; FONT-FAMILY: Verdana">jmx-console</span><span style="COLOR: black; FONT-FAMILY: 宋体">安全域和第二步中的运行角色</span><span style="COLOR: black; FONT-FAMILY: Verdana">JBossAdmin</span><span style="COLOR: black; FONT-FAMILY: 宋体">都是在</span><span style="COLOR: black; FONT-FAMILY: Verdana">login-config.xml</span><span style="COLOR: black; FONT-FAMILY: 宋体">中配置，我们在</span><span style="COLOR: black; FONT-FAMILY: Verdana">JBoss</span><span style="COLOR: black; FONT-FAMILY: 宋体">安装目录</span><span style="COLOR: black; FONT-FAMILY: Verdana">/server/default/config</span><span style="COLOR: black; FONT-FAMILY: 宋体">下找到它。查找名字为：</span><span style="COLOR: black; FONT-FAMILY: Verdana">jmx-console</span><span style="COLOR: black; FONT-FAMILY: 宋体">的</span><span style="COLOR: black; FONT-FAMILY: Verdana">application-policy</span><span style="COLOR: black; FONT-FAMILY: 宋体">：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;application-policy name = "jmx-console"&gt;<br />       &lt;authentication&gt;<br />          &lt;login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"<br />             flag = "required"&gt;<br />           &lt;module-option name="usersProperties"&gt;props/jmx-console-users.properties&lt;/module-option&gt;<br />           &lt;module-option name="rolesProperties"&gt;props/jmx-console-roles.properties&lt;/module-option&gt;<br />          &lt;/login-module&gt;<br />       &lt;/authentication&gt;<br />    &lt;/application-policy&gt;</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">在此处可以看出，登录的角色、用户等的信息分别在</span>props<span style="FONT-FAMILY: 宋体">目录下的</span>jmx-console-roles.properties<span style="FONT-FAMILY: 宋体">和</span>jmx-console-users.properties<span style="FONT-FAMILY: 宋体">文件中设置，分别打开这两个文件。</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">其中</span>jmx-console-users.properties<span style="FONT-FAMILY: 宋体">文件的内容如下：</span></p>
				<p style="TEXT-INDENT: 21pt"># A sample users.properties file for use with the UsersRolesLoginModule</p>
				<p style="TEXT-INDENT: 21pt">admin=admin</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">该文件定义的格式为：用户名</span>=<span style="FONT-FAMILY: 宋体">密码，在该文件中，默认定义了一个用户名为</span>admin<span style="FONT-FAMILY: 宋体">，密码也为</span>admin<span style="FONT-FAMILY: 宋体">的用户，读者可将其改成所需的用户名和密码。</span></p>
				<p style="TEXT-INDENT: 21pt">jmx-console-roles.properties<span style="FONT-FAMILY: 宋体">的内容如下：</span></p>
				<p style="TEXT-INDENT: 21pt"># A sample roles.properties file for use with the UsersRolesLoginModule</p>
				<p style="TEXT-INDENT: 21pt">admin=JBossAdmin, HttpInvoker</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">该文件定义的格式为：用户名</span>=<span style="FONT-FAMILY: 宋体">角色，多个角色以“</span>,<span style="FONT-FAMILY: 宋体">”隔开，该文件默认为</span>admin<span style="FONT-FAMILY: 宋体">用户定义了</span>JBossAdmin<span style="FONT-FAMILY: 宋体">和</span>HttpInvoker<span style="FONT-FAMILY: 宋体">这两个角色。</span></p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">配置完成后读者可以通过访问：</span>
						<a href="http://localhost:8088/jmx-console/">http://localhost:8088/jmx-console/</a>
						<span style="FONT-FAMILY: 宋体">，输入</span>jmx-console-roles.properties<span style="FONT-FAMILY: 宋体">文件中定义的用户名和密码，访问</span>jmx-console<span style="FONT-FAMILY: 宋体">的页面。</span></p>
				<p style="MARGIN-LEFT: 39pt; TEXT-INDENT: -18pt; tab-stops: list 39.0pt">
						<strong>2）</strong>
						<strong>web-console</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">登录的用户名和密码设置</span>
						</strong>
				</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">默认情况下，用户访问</span>JBoss<span style="FONT-FAMILY: 宋体">的</span>web-console<span style="FONT-FAMILY: 宋体">时，不需要输入用户名和密码，为了安全起见，我们通过修改配置来为其加上用户名和密码。步骤如下：</span></p>
				<p style="TEXT-INDENT: 21pt">i<span style="FONT-FAMILY: 宋体">）找到</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"deploy"management"console-mgr.sar"web-console.war"WEB-INF"jboss-web.xml<span style="FONT-FAMILY: 宋体">文件，去掉</span>&lt;security-domain&gt;java:/jaas/web-console&lt;/security-domain&gt;<span style="FONT-FAMILY: 宋体">的注释，修改后的文件内容为：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;?xml version='1.0' encoding='UTF-8' ?&gt;</p>
				<p style="TEXT-INDENT: 21pt">&lt;!DOCTYPE jboss-web</p>
				<p style="TEXT-INDENT: 21pt">    PUBLIC "-//JBoss//DTD Web Application 2.3V2//EN"</p>
				<p style="TEXT-INDENT: 21pt">    "http://www.jboss.org/j2ee/dtd/jboss-web_3_2.dtd"&gt;</p>
				<p style="TEXT-INDENT: 21pt">&lt;jboss-web&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;!-- Uncomment the security-domain to enable security. You will</p>
				<p style="TEXT-INDENT: 21pt">   need to edit the htmladaptor login configuration to setup the</p>
				<p style="TEXT-INDENT: 21pt">   login modules used to authentication users.--&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;security-domain&gt;java:/jaas/web-console&lt;/security-domain&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;!-- The war depends on the --&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;depends&gt;jboss.admin:service=PluginManager&lt;/depends&gt;</p>
				<p style="TEXT-INDENT: 21pt">&lt;/jboss-web&gt;</p>
				<p style="TEXT-INDENT: 21pt">ii<span style="FONT-FAMILY: 宋体">）打开</span>i<span style="FONT-FAMILY: 宋体">）中</span>jboss-web.xml<span style="FONT-FAMILY: 宋体">同目录下的</span>web.xml<span style="FONT-FAMILY: 宋体">文件，去掉</span>&lt;security-constraint&gt;<span style="FONT-FAMILY: 宋体">部分的注释，修改后的该部分内容为：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;!-- A security constraint that restricts access to the HTML JMX console</p>
				<p style="TEXT-INDENT: 21pt">   to users with the role JBossAdmin. Edit the roles to what you want and</p>
				<p style="TEXT-INDENT: 21pt">   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable</p>
				<p style="TEXT-INDENT: 21pt">   secured access to the HTML JMX console.--&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;security-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;web-resource-collection&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;web-resource-name&gt;HtmlAdaptor&lt;/web-resource-name&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;description&gt;An example security config that only allows users with the</p>
				<p style="TEXT-INDENT: 21pt">   role JBossAdmin to access the HTML JMX console web application</p>
				<p style="TEXT-INDENT: 21pt">   &lt;/description&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;url-pattern&gt;/*&lt;/url-pattern&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;http-method&gt;GET&lt;/http-method&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;http-method&gt;POST&lt;/http-method&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;/web-resource-collection&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;auth-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;role-name&gt;JBossAdmin&lt;/role-name&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;/auth-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">   &lt;/security-constraint&gt;</p>
				<p style="TEXT-INDENT: 21pt">iii<span style="FONT-FAMILY: 宋体">）打开</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"conf<span style="FONT-FAMILY: 宋体">下的</span>login-config.xml<span style="FONT-FAMILY: 宋体">文件，搜索</span>web-console<span style="FONT-FAMILY: 宋体">，可找到如下内容：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;application-policy name = "web-console"&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;authentication&gt;</p>
				<p style="TEXT-INDENT: 21pt">          &lt;login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"</p>
				<p style="TEXT-INDENT: 21pt">             flag = "required"&gt;</p>
				<p style="TEXT-INDENT: 21pt">             &lt;module-option name="usersProperties"&gt;web-console-users.properties&lt;/module-option&gt;</p>
				<p style="TEXT-INDENT: 21pt">             &lt;module-option name="rolesProperties"&gt;web-console-roles.properties&lt;/module-option&gt;</p>
				<p style="TEXT-INDENT: 21pt">          &lt;/login-module&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;/authentication&gt;</p>
				<p style="TEXT-INDENT: 21pt">    &lt;/application-policy&gt;</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">在文件中可以看到，设置登录</span>web-console<span style="FONT-FAMILY: 宋体">的用户名和角色等信息分别在</span>login-config.xml<span style="FONT-FAMILY: 宋体">文件所在目录下的</span>web-console-users.properties<span style="FONT-FAMILY: 宋体">和</span>web-console-roles.properties<span style="FONT-FAMILY: 宋体">文件中，但因为该目录下无这两个文件，我们在</span>JBoss<span style="FONT-FAMILY: 宋体">安装目录</span>"server"default"conf"props<span style="FONT-FAMILY: 宋体">目录下建立这两个文件，文件内容可参考在“</span><strong>jmx-console</strong><strong><span style="FONT-FAMILY: 宋体">登录的用户名和密码设置”</span></strong><span style="FONT-FAMILY: 宋体">中的两个相应的配置文件的内容，</span>web-console-users.properties<span style="FONT-FAMILY: 宋体">文件的内容如下：</span></p>
				<p style="TEXT-INDENT: 21pt"># A sample users.properties file for use with the UsersRolesLoginModule</p>
				<p style="TEXT-INDENT: 21pt">admin=admin</p>
				<p style="TEXT-INDENT: 21pt">web-console-roles.properties<span style="FONT-FAMILY: 宋体">文件的内容如下：</span></p>
				<p style="TEXT-INDENT: 21pt"># A sample roles.properties file for use with the UsersRolesLoginModule</p>
				<p style="TEXT-INDENT: 21pt">admin=JBossAdmin,HttpInvoker</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">因为此时这两个文件不与</span>login-config.xml<span style="FONT-FAMILY: 宋体">同目录，所以</span>login-config.xml<span style="FONT-FAMILY: 宋体">文件需进行少许修改，修改后的</span>&lt;application-policy name = "web-console"&gt;<span style="FONT-FAMILY: 宋体">元素的内容为：</span></p>
				<p style="TEXT-INDENT: 21pt">&lt;application-policy name = "web-console"&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;authentication&gt;</p>
				<p style="TEXT-INDENT: 21pt">          &lt;login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"</p>
				<p style="TEXT-INDENT: 21pt">             flag = "required"&gt;</p>
				<p style="TEXT-INDENT: 21pt">             &lt;module-option name="usersProperties"&gt;props/web-console-users.properties&lt;/module-option&gt;</p>
				<p style="TEXT-INDENT: 21pt">             &lt;module-option name="rolesProperties"&gt;props/web-console-roles.properties&lt;/module-option&gt;</p>
				<p style="TEXT-INDENT: 21pt">          &lt;/login-module&gt;</p>
				<p style="TEXT-INDENT: 21pt">       &lt;/authentication&gt;</p>
				<p style="TEXT-INDENT: 21pt">    &lt;/application-policy&gt;</p>
				<p style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt">
						<strong>四．<span style="FONT: 7pt 'Times New Roman'">             </span></strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">在</span>MyEclipse</strong>
						<strong>
								<span style="FONT-FAMILY: 宋体">中配置</span>JBoss</strong>
				</p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">笔者的</span>MyEclipse<span style="FONT-FAMILY: 宋体">版本：</span>5.1.1 GA</p>
				<p style="MARGIN-LEFT: 21pt">JBoss<span style="FONT-FAMILY: 宋体">版本：</span>4.2.1 GA</p>
				<p style="MARGIN-LEFT: 21pt">JDK<span style="FONT-FAMILY: 宋体">版本：</span>1.5</p>
				<p style="TEXT-INDENT: 21pt">
						<span style="FONT-FAMILY: 宋体">进入</span>Window-&gt; Preferences-&gt; MyEclipse -&gt; Application Servers -&gt; JBoss4<span style="FONT-FAMILY: 宋体">，进行如下设置：<br />     <img height="469" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/21128/r_clip_image303.jpg" width="553" border="0" /><br /></span></p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">选择</span>JBoss 4<span style="FONT-FAMILY: 宋体">下的</span>JDK<span style="FONT-FAMILY: 宋体">设置所用的</span>JDK.</p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">设置完成后，部署程序时，会发现多出</span>JBoss 4<span style="FONT-FAMILY: 宋体">部署的选择，如下图所示：<br /><img height="480" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/21128/r_clip_image304.jpg" width="546" border="0" /><br /></span></p>
				<p style="MARGIN-LEFT: 21pt">
						<span style="FONT-FAMILY: 宋体">同时在<img height="25" alt="" src="http://www.blogjava.net/images/blogjava_net/amigoxie/21128/r_clip_image305.jpg" width="31" border="0" /></span>
						<span style="FONT-FAMILY: 宋体">中展开，可看到</span>JBoss 4<span style="FONT-FAMILY: 宋体">的启动图标。</span></p>
		</div>
<img src ="http://www.blogjava.net/kemi/aggbug/175198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2008-01-14 14:23 <a href="http://www.blogjava.net/kemi/archive/2008/01/14/175198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过filter类对get方式上来的中文进行统一编码处理</title><link>http://www.blogjava.net/kemi/archive/2007/12/18/168411.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 18 Dec 2007 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/12/18/168411.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/168411.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/12/18/168411.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/168411.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/168411.html</trackback:ping><description><![CDATA[
		<p>使用filter来改变request的编码.<br /><br />当没有指定request的编码的时候，从客户端得到的数据是iso-8859-1编码的(request.getParameter()得到传递的参数值)；<br />但是我们怎么来改变request的编码呢？</p>
		<p>
				<br />方法有很多种！</p>
		<p>
				<br />比如：在getRequestDispatcher("/jsp/jsptoserv/hello.jsp").forward(request, response);之前修改</p>
		<p>
				<br />request的编码，那么在jsp/jsptoserv/hello.jsp中得到的参数值就是制定的编码的字符。</p>
		<p>
				<br />本文我们使用Filter来修改request的编码<br /><br /><strong>1)首先编写filter类：</strong><br />package myFilter;<br />import java.io.IOException;<br />import javax.servlet.*;<br />public class ChangeCharsetFilter implements Filter {<br />protected String encoding = null;/////要制定的编码，在web.xml中配置<br />protected FilterConfig filterConfig = null;<br />public void destroy() {<br />this.encoding = null;<br />this.filterConfig = null;<br />}<br />public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)<br />throws IOException, ServletException {<br />if (request.getCharacterEncoding() == null){<br /> String encoding = getEncoding();////得到指定的编码名字<br /> if (encoding != null)<br /> request.setCharacterEncoding(encoding);////设置request的编码<br /> }<br />chain.doFilter(request, response);///有机会执行下一个filter<br />}<br /> public void init(FilterConfig filterConfig) throws ServletException {<br /> this.filterConfig = filterConfig;<br />this.encoding = filterConfig.getInitParameter("encoding");///得到在web.xml中配置的编码<br /> }<br /> protected String getEncoding() {<br /> return (this.encoding);///得到指定的编码<br />}</p>
		<p>}</p>
		<p>
				<strong>2。编辑web.xml文件</strong>
				<br />&lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;<br />&lt;!DOCTYPE web-app<br />? PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"<br />? "<a href="http://java.sun.com/dtd/web-app_2_3.dtd"><u>http://java.sun.com/dtd/web-app_2_3.dtd</u></a>"&gt;<br />&lt;web-app&gt;<br />&lt;filter&gt;<br />&lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;<br /> &lt;filter-class&gt;myFilter.ChangeCharsetFilter &lt;/filter-class&gt;<br /> &lt;init-param&gt;<br /> &lt;param-name&gt;encoding&lt;/param-name&gt;<br />&lt;param-value&gt;GB2312&lt;/param-value&gt;//////指定编码为GB2312<br />&lt;/init-param&gt;<br /> &lt;/filter&gt;<br />&lt;filter-mapping&gt;<br /> &lt;filter-name&gt;SetCharacterEncoding&lt;/filter-name&gt;<br />&lt;url-pattern&gt;/*&lt;/url-pattern&gt;////////对于所有的request改变其编码<br />&lt;/filter-mapping&gt;<br />&lt;/web-app&gt;<br />///<br /><strong>3。写一个a.jsp</strong></p>
		<p>
				<br />&lt;%@ page contentType="text/html; charset=GB2312" %&gt;<br />&lt;html&gt;<br />&lt;head&gt;&lt;/head&gt;<br />&lt;body&gt;<br />&lt;%<br />String name=request.getParameter("name");///本来这里得到字符是iso-8859-1编码的，不能直接</p>
		<p>
				<br />在Console中输出的，但是现在改变了request的编码方式，此时的name的编码是GB2312,所以能正确在Console中显示的。</p>
		<p>System.out.println(name);</p>
		<p>
				<br />%&gt;<br />&lt;form action="a.jsp" method="post"&gt;<br />&lt;input type="text" name="name"&gt;<br />&lt;input type="submit"&gt;<br />&lt;/form&gt;<br />&lt;%=name%&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;</p>
		<p>
				<br />完！</p>
		<p>
				<br />关于中文处理的问题就写这些了！</p>
<img src ="http://www.blogjava.net/kemi/aggbug/168411.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-12-18 10:34 <a href="http://www.blogjava.net/kemi/archive/2007/12/18/168411.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DataStore类</title><link>http://www.blogjava.net/kemi/archive/2007/10/24/155627.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Wed, 24 Oct 2007 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/10/24/155627.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/155627.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/10/24/155627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/155627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/155627.html</trackback:ping><description><![CDATA[
		<p>package classmate;<br />import java.sql.*;</p>
		<p>import javax.sql.DataSource;</p>
		<p>import org.apache.commons.logging.Log;<br />import org.apache.commons.logging.LogFactory;<br />public class DataStore {<br /> <br /> DataSource dataSource = null;<br /> private static Connection conn = null;<br /> private Statement stmt = null;<br /> private boolean hadErrors = false;<br /> <br /> //construct<br /> public DataStore(DataSource dataSource) throws Exception{<br />  this.dataSource = dataSource;<br />  conn = dataSource.getConnection();<br />  stmt = conn.createStatement();<br /> }<br /> <br /> //invoke transaction<br /> public void beginTransaction() throws SQLException{<br />  conn.setAutoCommit(false);<br /> }<br /> <br /> //perform transaction<br /> public void commitTransaction() throws SQLException{<br />  //hadErrors = false<br />  if(!hadErrors){<br />   conn.commit();<br />  }<br />  else{  //hadErrors = true<br />   conn.rollback();<br />   hadErrors = false;<br />  }<br />  hadErrors = false;<br />  conn.setAutoCommit(true);<br /> }<br /> <br /> //mark error<br /> public void ErrorOccur(){<br />  hadErrors = true;<br /> }<br /> <br /> //execute insert,delete,update<br /> synchronized public void execute(String sql) throws SQLException{<br />  if(stmt != null)<br />   stmt.executeUpdate(sql);<br />  else{<br />   Log log = LogFactory.getLog("mylog");<br />   log.error("fail to execute sql");<br />  }<br /> }<br /> <br /> //execute select<br /> synchronized public ResultSet read(String sql) throws SQLException{<br />  if(stmt != null){<br />   ResultSet tmp = null;<br />   tmp = stmt.executeQuery(sql);<br />   return tmp;<br />  }else{<br />   return null;<br />  }<br /> }<br /> <br /> // count of result<br /> synchronized public int readCount(String sql) throws SQLException{<br />  int nCount = 0;<br />  try{<br />   if(stmt != null){<br />    ResultSet tmp = null; <br />    tmp = stmt.executeQuery(sql);<br />    if(tmp != null &amp;&amp; tmp.next()){<br />     nCount = tmp.getInt(1);<br />    }else{<br />     nCount = 0;<br />    }<br />   }<br />  }catch(SQLException e){<br />   nCount = 0;<br />  }<br />  return nCount;<br /> }<br /> <br /> // close db<br /> synchronized public void stop(){<br />  try{<br />   if(conn != null){<br />    conn.close();<br />    stmt.close();<br />   }<br />  }catch(Exception e){<br />   Log log = LogFactory.getLog("mylog");<br />   log.error("fail to close db- DataStore.java");<br />  }finally{<br />   conn = null;<br />  }<br /> }<br />}<br /><br />还在研究，貌似DCL的问题还存在。</p>
<img src ="http://www.blogjava.net/kemi/aggbug/155627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-10-24 16:35 <a href="http://www.blogjava.net/kemi/archive/2007/10/24/155627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JNDI 技术原理与运行机制 （转）－－精华噢</title><link>http://www.blogjava.net/kemi/archive/2007/10/22/154934.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 22 Oct 2007 04:01:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/10/22/154934.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/154934.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/10/22/154934.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/154934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/154934.html</trackback:ping><description><![CDATA[
		<table style="TABLE-LAYOUT: fixed">
				<tbody>
						<tr>
								<td>
										<div class="cnt">
												<font size="3"> 原理：<br />         在DataSource中事先建立多个数据库连接，保存在数据库连接池中。当程序访问数据库时，只用从连接池中取空闲状态的数据库连接即可，访问结束，销毁资源，数据库连接重新回到连接池，这与每次去直接访问数据库相比，会节省大量时间和资源。<br />         JNDI( Java Naming and Directory Interface )，<span>是Java平台的一个标准扩展，提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样，JDNI是provider-based的技术，暴露了一个 API和一个服务供应接口（SPI）。这意味着任何基于名字的技术都能通过JNDI而提供服务，只要JNDI支持这项技术。JNDI目前所支持的技术包括 LDAP、CORBA Common Object Service（COS）名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术，包括EJB都依靠JNDI来组织和定位实体。可以把它理解为一种将对象和名字捆绑的技术，对象工厂负责生产出对象，这些对象都和唯一的名字绑在一起，外部资源可以通过名字获得某对象的引用。<br /><br />          在javax.naming的包包中提供Context接口，提供了两个很好用的方法：<br /></span>&lt;1&gt; void bind( String name , Object object )<br />        将名称绑定到对象。所有中间上下文和目标上下文（由该名称最终原子组件以外的其他所有组件指定）都必须已经存在。</font>
												<br />
												<font color="#ff0000" size="3">
														<font color="#000000">&lt;2&gt;Object lookup( String name )</font>
														<br />       </font>
												<font size="3">检索指定的对象。如果 name为空，则返回此上下文的一个新实例（该实例表示与此上下文相同的命名上下文，但其环境可以独立地进行修改，而且可以并发访问）。<br /><br />       外部资源访问对象工厂中的工程图:<br /><div forimg="1"><img class="blogimg" src="http://hiphotos.baidu.com/toughguy/pic/item/c4590ac29ef02433e5dd3bc6.jpg" border="0" small="0" /></div><br />例:<br />=================将以下代码段添加到server.xml中的&lt;Host&gt;中============</font>
												<dl>
														<dd>&lt;!-- configure DataSource. Add the following code into server.xml --&gt;<br /><br />&lt;Context path="/bookstore" docBase="bookstore" debug="0"<br />reloadable="true" &gt;<br /><br />&lt;!-- 数据源名称 --&gt;<br />&lt;Resource name="jdbc/BookDB"<br />               auth="Container"<br />               type="javax.sql.DataSource" /&gt;<br /><br />&lt;ResourceParams name="jdbc/BookDB"&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;factory&lt;/name&gt;<br />      &lt;value&gt;org.apache.commons.dbcp.BasicDataSourceFactory&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- Maximum number of dB connections in pool. Make sure you<br />         configure your mysqld max_connections large enough to handle<br />         all of your db connections. Set to 0 for no limit.<br />         --&gt; 
</dd>
														<dd>&lt;!-- 活动状态最大连接数 --&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxActive&lt;/name&gt;<br />      &lt;value&gt;100&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- Maximum number of idle dB connections to retain in pool.<br />         Set to 0 for no limit.<br />         --&gt; 
</dd>
														<dd>&lt;!-- 空闲状态数据库连接最大数 --&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxIdle&lt;/name&gt;<br />      &lt;value&gt;30&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- Maximum time to wait for a dB connection to become available<br />         in ms, in this example 10 seconds. An Exception is thrown if<br />         this timeout is exceeded. Set to -1 to wait indefinitely.<br />        Maximum time to wait for a dB connection to become available<br />         in ms, in this example 10 seconds. An Exception is thrown if<br />         this timeout is exceeded. Set to -1 to wait indefinitely.<br />         --&gt; 
</dd>
														<dd>&lt;!-- 数据库处于空闲状态的最长时间 --&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;maxWait&lt;/name&gt;<br />      &lt;value&gt;10000&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- MySQL dB username and password for dB connections --&gt; 
</dd>
														<dd>&lt;!-- 指定连接数据库的用户名及密码 --&gt;<br />    &lt;parameter&gt;<br />     &lt;name&gt;username&lt;/name&gt;<br />     &lt;value&gt;dbuser&lt;/value&gt;<br />    &lt;/parameter&gt;<br />    &lt;parameter&gt;<br />     &lt;name&gt;password&lt;/name&gt;<br />     &lt;value&gt;1234&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- Class name for mm.mysql JDBC driver --&gt; 
</dd>
														<dd>&lt;!-- 指定JDBC驱动 --&gt;<br />    &lt;parameter&gt;<br />       &lt;name&gt;driverClassName&lt;/name&gt;<br />       &lt;value&gt;com.mysql.jdbc.Driver&lt;/value&gt;<br />    &lt;/parameter&gt;<br /><br />    &lt;!-- The JDBC connection url for connecting to your MySQL dB.<br />         The autoReconnect=true argument to the url makes sure that the<br />         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the<br />         connection. mysqld by default closes idle connections after 8 hours.<br />         --&gt; 
</dd>
														<dd>&lt;!-- 指定连接数据库的URL --&gt;<br />    &lt;parameter&gt;<br />      &lt;name&gt;url&lt;/name&gt;<br />      &lt;value&gt;jdbc:mysql://localhost:3306/BookDB?autoReconnect=true&lt;/value&gt;<br />    &lt;/parameter&gt;<br />&lt;/ResourceParams&gt;<br /><br />&lt;/Context&gt; </dd>
												</dl>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
		<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">运行机制：</span>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">1、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">首先程序代码获取初始化的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">JNDI </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">环境并且调用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Context.lookup()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法从</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">JNDI</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">服务提供者那里获一个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">DataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象<span lang="EN-US"><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">2、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">中间层</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">JNDI </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">服务提供者返回一个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">DataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象给当前的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Java </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">应用程序这个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">DataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象代表了中间层服务上现存的缓冲数据源<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃  3、</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">
				</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">应用程序调用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">DataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">getConnection()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">4、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">当</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">DataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">getConnection()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法被调用时，中间层服务器将查询数据库</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">连接缓冲池中有没有</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">接口的实例对象。这个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象将被用于与数据库建立物理上的数据库连接<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">5、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">如果在缓冲池中命中了一个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledCoonection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象那么连接缓冲池将简单地更</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">新内部的缓冲连接队列并将该</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象返回。如果在缓冲池内没</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">有找到现成的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象，那么</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">ConnectionPoolDataSource </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">接口将会被</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">用来产生一个新的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象并将它返回以便应用程序使用<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">6。</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">中间层服务器调用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">getConnection()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法以便返还一个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">java.sql.Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象给当前的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Java </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">应用程序<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">7、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">当中间层服务器调用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">PooledConnection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">getConnection()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法时，</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">JDBC </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">数据</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">库驱动程序将会创建一个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象并且把它返回中间层服务器<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">8、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">中间层服务器将</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象返回给应用程序</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Java </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">应用程序，可以认为这个</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象是一个普通的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">JDBC Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象使用它可以和数据库建立。事</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">实上的连接与数据库引擎产生交互操作<span lang="EN-US"><o:p></o:p></span></span> 。</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left">
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; mso-font-kerning: 0pt">􀁺􀀃</span>
				<span lang="EN-US" style="FONT-SIZE: 7.5pt; COLOR: black; FONT-FAMILY: Wingdings-Regular; mso-bidi-font-family: Wingdings-Regular; mso-font-kerning: 0pt">9、</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">当应用程序不需要使用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">对象时，可以调用</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">Connection </span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">接口的</span>
				<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">close()</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方</span>
				<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">法。<font color="#ff3300">请注意这种情况下</font></span>
				<font color="#ff3300">
						<span lang="EN-US" style="COLOR: black; FONT-FAMILY: TimesNewRomanPSMT; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: TimesNewRomanPSMT; mso-font-kerning: 0pt">close()</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">方法并没有关闭事实上的数据库连接，仅仅是释</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">放了被应用程序占用的数据库连接，并将它还给数据库连接缓冲池，数据库连接</span>
						<span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-hansi-font-family: TimesNewRomanPSMT">缓冲池会自动将这个数据库连接交给请求队列中下一个的应用程序使用。</span>
				</font>
		</p>
<img src ="http://www.blogjava.net/kemi/aggbug/154934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-10-22 12:01 <a href="http://www.blogjava.net/kemi/archive/2007/10/22/154934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC 2.0新特性 （转）</title><link>http://www.blogjava.net/kemi/archive/2007/10/22/154930.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 22 Oct 2007 03:58:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/10/22/154930.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/154930.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/10/22/154930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/154930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/154930.html</trackback:ping><description><![CDATA[
		<p>JDBC 2.0 API 包括两个package:<br />　　1. java.sql 为JDBC 2.0的核心包，其中包括了JDBC 1.0规范中规定的API和新的核心API，这个包包含于Java 2 Standard Edition中.<br />　　2. javax.sql 为JDBC 2.0的标准扩展包，相对与JDBC 1.0而言是全新的，这个包包含于Java 2 Enterprise Edition中.<br /><br />　　★ 采用了新的方法连接数据库 DataSource Interface<br />　　JDBC 2.0 提供了新的接口DataSource用来实现数据库连接,可以替代1.0中提供的DriverManager类。好处是:<br />　　☆ 增强了代码的可移植性<br />　　☆ 方便了代码的维护<br />　　一个DataSource对象代表一个实际的数据源。这个数据源可以是从关系数据库到表格形式的文件,完全依赖于它是怎样实现的.一个数据源对象注册到JNDI名字服务后,应用程序就可以从JNDI服务器上取得该对象,并使用之和数据源建立连接. <br />　　数据源及如何装入的信息(名字,地址,端口等等)以Properties的形式保存在DataSource对象中.这样就增强了应用程序的可移植性,因为程序中不需要像使用DriverManager那样给出硬性的驱动器名字(往往包含了特定厂商的名字). 这种做法还增强了代码的可维护性,比如数据源移植到另一台服务器上后, 所需要作的就是更新一下相关的property,使用数据源的代码更不不必改动. <br />　　系统管理员或者有相应权限的人实现DataSource对象. DataSource对象的实现需要设置对象的properties并把它注册到JNDI名字服务器上, 这些活动可能会用特定工具来实现. 系统管理员用一个逻辑名字对应DataSource对象,这个名字可是是任意的. 在下面的例子中DataSource对象的名字是InventoryDB. 依照传统习惯, DataSource对象的名字包含在jdbc下, 所以这个数据源对象的完整名字是:jdbc/InventoryDB.<br />　　实现数据源对象后, 应用程序员就可以使用它来建立和数据源之间的连接了. 下面的代码片断演示了通过这种方式获得连接. 上面两行使用了JNDI API获得DataSource对象,第三行代码使用JDBC API获得连接:<br />　　Context ctx = new InitialContext();<br />　　DataSource ds = (DataSource) ctx.lookup("jdbc/InventoryDB"):<br />　　Connection conn = ds.getConnection("password","username");<br />　　DataSource对象中获得的的Connection对象和用DriverManager.getConnection方法获得的对象是等同的. 由于DataSource方法的优点, 该方法成为获得连接的推荐方法. 所有基于JDBC 2.0的驱动器应该会包含DataSource接口的实现以及javax.sql包.<br />　　对普通程序员而言, DataSource对象方法只是一种选择. 如果要使用连接缓冲池(Connection pooling)或者分布式交换, 则必须使用DataSource对象获得连接.原因在下文中阐述.<br />　　★ Connection Pooling<br />　　连接缓冲池是这样工作的:当一个应用程序关闭一个连接时, 这个连接并不真正释放而是被循环利用.因为建立连接是消耗较大的操作, 循环利用连接可以显著的提高性能,因为可以减少新连接的建立.<br />　　比如一个应用程序需要连接一个由名字是EmployeeDB的DataSource对象代表的数据源, 通过缓冲池获得连接的代码演示如下:<br />　　Context ctx = new InitialContext();<br />　　DataSource ds = (DataSource) ctx.lookup("jdbc/EmloyeeDB");<br />　　Connection con = ds.getConnection("password","username");<br />　　因为连接的数据源不同所以和上面的例子中的名字不一样. DataSource.getConnction方法返回的连接是否被缓存完全依赖于该DataSource对象的实现方式. 如果它将用于支持连接缓冲的中间层服务器(Middle Tier Server), 则DataSource对象将自动返回将被缓存、循环利用的连接.<br />　　基本上不需要改变任何代码就可以获得缓冲池连接. 唯一需要注意的就是(我们已经这样做了:P),需要在finally块中释放连接,这应该是释放所有连接的较好方法.这样, 即使抛出了异常, 连接也会还给连接缓冲池:<br />　　finally{<br />　　if(con != null) con.close();<br />　　}<br />　　finally块保证了连接的循环利用.<br />　　★ Distributed Transactions(分布式交换)<br />　　获得用于分布式交换的情形类似于获得缓冲池连接. 差别仍然是DataSource对象的实现方式, 而不是获得连接程序代码的不同.<br />　　假定DataSource类被实现为用于中间件的分布式交换设施,下面的代码将获得用于分布式交换的连接:<br />　　Context ctx = new InitialContext();<br />　　DataSource ds = (DataSource) ctx.lookup("jdbc/EmloyeeDB");<br />　　Connection con = ds.getConnection("password","username");<br />　　出于性能的考虑, 用于获得分布式交换的连接的DataSource对象差不多总是会同时实现缓冲池连接.<br />　　从程序员的角度来看, 获得普通连接和获得用于分布式交换的连接之间没有区别. 唯一的不同是交换界限(什么时候开始,什么时候结束)由交换管理器在后台处理. 应用程序不应该做任何妨碍交换管理器的事情. 所以程序不能直接调用commit或者rollback方法, 不能设置auto-commit模式.<br />　　下面几行代码中con是可用于分布式交换的Connection对象, 演示了在con参与分布式交换是不能作的事情:<br />　　con.commit();<br />　　or<br />　　con.rollback();<br />　　or<br />　　con.setAutoCommit(true);<br />　　普通连接默认打开auto-commit模式. 用于分布式交换的连接对象默认关闭auto-commit模式. 应注意的是用于分布式交换的连接也可以用于非分布式交换模式, 交换边界的限制仅在连接是分布式交换一部分是有效.<br />　　实现支持连接缓冲池的DataSource对象,需要实现ConnectionPoolDataSource对象, 三层构架的中间件的连接缓冲模块将会使用它. 同样, 实现支持分布式交换的DataSource对象也需要实现XADataSource对象, 中间件的分布式交换构件会使用该对象.<br />　　ConnectionPoolDataSource和XADataSource对象对程序员而言是完全透明的, 应有驱动程序厂商提供.<br />　　★ Rowsets<br />　　RowSet对象是一系列rows的容器. 根据不通的目的,可以通过多种方式实现. RowSet接口和其相关接口与JDBC 2.0标准扩展的其他部分的差别是它们不是驱动程序实现的一部分. RowSet对象在驱动程序的上层实现,可以被任何人实现.<br />　　任何rowset类型都要实现RowSet接口(继承了ResultSet接口). 所以RowSet对象拥有ResultSet对象的所有功能:可以用getXXX方法取值,用updateXXX方法更新, 移动游标, 执行其他相关任务.<br />　　当然rowset也有其新功能.作为JavaBeans组件, RowSet对象提供了方法监听属性的get/set.其中一个属性是command串,这个属性往往是一个查询,RowSet接口提供可设置command属性和执行之的方法. 这意味这RowSet对象能够执行自己的检索命令用查询结果填充自己的内容. 或者RowSet对象可以实现用来使用任何表格式的数据源填充自己, 而不是局限于关系数据库.<br />　　从数据源取得数据后, RowSet对象可以断开于数据源的连接,这使得该对象很小(如果数据量特别不大). rowset也可以序列化. 所以rowset很小并可以序列化, 一个断开连接的rowset是传送数据给瘦客户机的理想工具.<br />　　rowset可以被更新,然后重新连接数据源以传送更新的值. 如果设置了监听者, 当rowset中的游标被移动和内容变化时,会通知监听者.<br />　　如, 图形界面组件(如条图)可以被注册为监听者,当rowset上有事件发生将会同志它, 它可以重画自身反映变化.<br />　　RowSet接口可以有多种实现方式, 依赖于你想做什么.Sun提供了实现的例子CachedRowSet:<br />　　<a href="http://developer.java.sun.com/developer/earlyAccess/crs/index.html" target="_blank">http://developer.java.sun.com/developer/earlyAccess/crs/index.html</a><br />　　如果您想测试DataSource，一种较为方便的方法是使用支持JDBC2.0和JNDI的Application Server,如Jrun, 如果你已经安装了Jrun，则可以到JMC中配置DataSource了，请看Jrun手册学习使用DataSource的方法。<br /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/154930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-10-22 11:58 <a href="http://www.blogjava.net/kemi/archive/2007/10/22/154930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向达人学习的TOMCAT与JNDI的配置方案---一般性的三个步骤用红字突出显示</title><link>http://www.blogjava.net/kemi/archive/2007/10/22/154922.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 22 Oct 2007 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/10/22/154922.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/154922.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/10/22/154922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/154922.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/154922.html</trackback:ping><description><![CDATA[
		<h2>
				<a id="viewpost1_TitleUrl" href="/dreamstone/archive/2007/05/07/115766.html">配置tomcat5.5 jndi 各种配置方式 分析总结（mysql）</a>
		</h2>准备工作：<br />安装tomcat5.5（注意这点）<br />安装mysql<br />拷贝mysql驱动到tomcat_home/common/lib下<br />新建一个web工程<br />在工程中加入index.jsp<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">@page </span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.util.*,javax.naming.*,java.sql.*,javax.sql.*</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">@page contentType</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text/html;charset=BIG5</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;%</span><span style="COLOR: #000000">    <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    Context ctx </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> InitialContext();      <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    String strLookup </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java:comp/env/jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">; <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    DataSource ds </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(DataSource) ctx.lookup(strLookup);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    Connection con </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ds.getConnection();<br /><img id="Codehighlighter1_337_370_Open_Image" onclick="this.style.display='none'; Codehighlighter1_337_370_Open_Text.style.display='none'; Codehighlighter1_337_370_Closed_Image.style.display='inline'; Codehighlighter1_337_370_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_337_370_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_337_370_Closed_Text.style.display='none'; Codehighlighter1_337_370_Open_Image.style.display='inline'; Codehighlighter1_337_370_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (con </span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)</span><span id="Codehighlighter1_337_370_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_337_370_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">success</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_375_408_Open_Image" onclick="this.style.display='none'; Codehighlighter1_375_408_Open_Text.style.display='none'; Codehighlighter1_375_408_Closed_Image.style.display='inline'; Codehighlighter1_375_408_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_375_408_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_375_408_Closed_Text.style.display='none'; Codehighlighter1_375_408_Open_Image.style.display='inline'; Codehighlighter1_375_408_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    }</span></span><span style="COLOR: #0000ff">else</span><span id="Codehighlighter1_375_408_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_375_408_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        out.print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">failure</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000">       <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">%&gt;</span></div>web.xml中加入<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">resource</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">jdbc</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">name</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">auth</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Container</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">auth</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sharing</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">scope</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Shareable</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sharing</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">scope</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">resource</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">&gt;</span></font></div><p>配置tomcat<br />这一步的目的就是告诉tomcat如何连接数据库<br />可以分为两种大的类型，每种类型又有很多种配置方式<br />配置类型一；<br />(直接配置的类型，这种方式最简单)</p><p>方法一：<br />直接在tomcat_home/conf/localhost/下建立一个xml文件，文件名是&lt;yourAppName&gt;.xml<br />例如我的工程名叫jndi，对应的名字叫jdni.xml<br />内容如下:<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Context</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Resource<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          password</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bb</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          driverClassName</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.mysql.jdbc.Driver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxIdle</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxWait</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          username</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">root</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          url</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc:mysql://localhost:3306/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxActive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">Context</span><span style="COLOR: #000000">&gt;</span></div><br />方法二：<br />只需在tomcat_home\webapps\myapps\META-INF\context.xml中增加:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">context</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Resource<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          password</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bb</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          driverClassName</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.mysql.jdbc.Driver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxIdle</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxWait</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          username</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">root</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          url</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc:mysql://localhost:3306/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxActive</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">context</span><span style="COLOR: #000000">&gt;</span></div><p><br />说明：这种配置需要告诉tomcat resource的内容，resource应用于什么地方<br />第一种方法通过文件名知道了app的name<br />第二种方式本身就在app内部，所以name肯定知道<br />两种方式都要放在context中</p><p>配置类型二：<br />(配置全局resource，然后通过resourcelink来映射)</p><p>步骤一：配置全局resource（这一步对于所有的配置都是一样的）<br />打开tomcat_home/conf/server.xml加入</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000"><font style="BACKGROUND-COLOR: #ffc0cb">&lt;</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">Resource<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          type</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          password</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">bb</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          driverClassName</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.mysql.jdbc.Driver</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxIdle</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxWait</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">50</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          username</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">root</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          url</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc:mysql://localhost:3306/test</span><span style="COLOR: #000000">"</span></font><span style="COLOR: #000000"><br /><font style="BACKGROUND-COLOR: #ffc0cb"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />          maxActive</font></span><font style="BACKGROUND-COLOR: #ffc0cb"><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span></font></div><p><br />步骤二：映射<br />(映射可以配置在多个地方，也就有多个配置方法：)</p><p>方法一：（对比类型一的配置理解）<br />直接在tomcat_home/conf/localhost/下建立一个xml文件，文件名是&lt;yourAppName&gt;.xml<br />例如我的工程名叫jndi，对应的名字叫jdni.xml加入如下内容<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">Context</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ResourceLink global</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">Context</span><span style="COLOR: #000000">&gt;</span></div><br />方法二：（对比类型一的配置理解）<br />在tomcat_home\webapps\myapps\META-INF\context.xml的Context中增加:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">context</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ResourceLink global</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">jdbc/test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> type</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javax.sql.DataSource</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">context</span><span style="COLOR: #000000">&gt;</span></div><p><br />方法三：(上边两种方法都是把全局的resource 映射给jndi这个web应用，第三种方法就是把这个<br />全局的resource直接公开给所有的应用)<br />在tomcat_home/conf/context.xml的&lt;Context&gt;&lt;/context&gt;之间加入<br /><font style="BACKGROUND-COLOR: #ffc0cb">&lt;ResourceLink global="jdbc/test" name="jdbc/test" type="javax.sql.DataSource"/&gt;<br /></font><br />运行测试：<br />打开ie，输入<a href="http://localhost:8080/jndi/index.jsp">http://localhost:8080/jndi/index.jsp</a><br />看到success</p><p>常见错误：<br />1，Name jdbc is not bound in this Context<br />2，Cannot create JDBC driver of class '' for connect URL 'null' conf localhost<br />原因：<br />大多数是因为配置了全局的resource，但没有link造成的。<br />解决：<br />加入link就行了，link的方式见类型二的三种方法。</p><p>分析：<br />看到上边这么多方法，是否感觉眼花缭乱，其实不要死记配置，按照原理分析一下就好了。<br />你需要的是告诉tomcat哪个应用如何连接数据库。</p><p>类型一的方式对应一个应用单独使用这个配置的情况<br />就是直接告诉tomcat"应用名"  "连接数据库需要的参数"</p><p>类型二的方式对应多个应用共享一个配置的情况<br />这样先配置server.xml告诉tomcat全局范围的"连接数据库需要的参数"<br />然后映射，映射的时候<br />1,如果不知道"app name(应用名)"就只需要通过文件名来传递这个信息<br />2,如果"app name"都知道就只需要加入映射的内容<br />3,如果要配置成全局公用的，就不需要"app name"，本身放在tomcat的context.xml中</p><p>最后再次提醒一下：所有的配置必须放在&lt;context&gt;&lt;/context&gt;之间</p><img src ="http://www.blogjava.net/kemi/aggbug/154922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-10-22 11:32 <a href="http://www.blogjava.net/kemi/archive/2007/10/22/154922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>持久性解决方案 Hibernate原理和入门范例</title><link>http://www.blogjava.net/kemi/archive/2007/08/30/141218.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 30 Aug 2007 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/08/30/141218.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/141218.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/08/30/141218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/141218.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/141218.html</trackback:ping><description><![CDATA[
		<div id="art_title">Hibernate 的原理与配置</div>
		<div id="art_center"> </div>
		<div id="art_line">
				<img height="1" src="http://www.it.com.cn/0.gif" />
		</div>
		<div id="art_center">
				<span id="ad_zl">
				</span>
		</div>
		<div class="text1" id="art_text">
				<p>　　也许你听说过Hibernate的大名，但可能一直不了解它，也许你一直渴望使用它进行开发，那么本文正是你所需要的！在本文中，我向大家重点介绍Hibernate的核心API调用库，并讲解一下它的基本配置。 <br /><br />　　看完本文后，我相信你对什么是ORM（对像/关系映射）以及它的优点会有一个深刻的认识，我们先通过一个简单的例子开始来展现它的威力。 <br /><br />　　正如一些传统的经典计算机文章大都会通过一个“hello,world”的例子开始讲解一样，我们也不例外，我们也将从一个相对简单的例子来阐述Hibernate的开发方法，但如果要真正阐述Hibernate的一些重要思想，仅仅靠在屏幕上打印一些字符是远远不够的，在我们的示例程序中，我们将创建一些对象，并将其保存在数据库中，然后对它们进行更新和查询。 <br /><br /><strong>　　阅读导航</strong></p>
				<p>　　“Hello World”“Hello world”示例程序让您对Hibernate有一个简单的认识。 <br />　　理解Hibernate的架构介绍Hibernate接口的主要功能。 <br />　　核心接口Hibernate有5个核心接口，通过这几个接口开发人员可以存储和获得持久对象，并且能够进行事务控制 <br />　　一个重要的术语：TypeType是Hibernate发明者发明的一个术语，它在整个构架中是一个非常基础、有着强大功能的元素，一个Type对象能将一个Java类型映射到数据库中一个表的字段中去。 <br />　　策略接口Hibernate与某些其它开源软件不同的还有一点――高度的可扩展性，这通过它的内置策略机制来实现。 <br />　　基础配置Hibernate可以配置成可在任何Java环境中运行，一般说来，它通常被用在2－3层的C/S模式的项目中，并被部署在服务端。 <br />　　创建一个SessionFactory对象要创建一个SessionFactory对象，必须在Hibernate初始化时创建一个Configuration类的实例，并将已写好的映射文件交由它处理。 <br /><br /><strong>　　“Hello World” <br /></strong><br />　　Hibernate应用程序定义了一些持久类，并且定义了这些类与数据库表格的映射关系。在我们这个“Hello world”示例程序中包含了一个类和一个映射文件。让我们看看这个简单的持久类包含有一些什么？映射文件是怎样定义的？另外，我们该怎样用Hibernate来操作这个持久类。 <br /><br />　　我们这个简单示例程序的目的是将一些持久类存储在数据库中，然后从数据库取出来，并将其信息正文显示给用户。其中Message正是一个简单的持久类：，它包含我们要显示的信息，其源代码如下： <br /><br />　　列表1　Message.Java　一个简单的持久类 <br /><br />　　package hello; <br />　　public class Message { <br />　　private Long id; <br />　　private String text; <br />　　private Message nextMessage; <br />　　private Message() {} <br />　　public Message(String text) { <br />　　this.text = text; <br />　　} <br />　　public Long getId() { <br />　　return id; <br />　　} <br />　　private void setId(Long id) { <br />　　this.id = id; <br />　　} <br />　　public String getText() { <br />　　return text; <br />　　} <br />　　public void setText(String text) { <br />　　this.text = text; <br />　　} <br />　　public Message getNextMessage() { <br />　　return nextMessage; <br />　　} <br />　　public void setNextMessage(Message nextMessage) { <br />　　this.nextMessage = nextMessage; <br />　　} <br />　　} <br /><br />　　Message类有三个属性：Message的id 、消息正文、以及一个指向下一条消息的指针。其中id属性让我们的应用程序能够唯一的识别这条消息，通常它等同于数据库中的主键，如果多个Message类的实例对象拥有相同的id，那它们代表数据库某个表的同一个记录。在这里我们选择了长整型作为我们的id值，但这不是必需的。Hibernate允许我们使用任意的类型来作为对象的id值，在后面我们会对此作详细描述。 <br /><br />　　你可能注意到Message类的代码类似于JavaBean的代码风格，并且它有一个没有参数的构造函数，在我们以后的代码中我将继续使用这种风格来编写持久类的代码。 <br /><br />　　Hibernate会自动管理Message类的实例，并通过内部机制使其持久化，但实际上Message对象并没有实现任何关于Hibernate的类或接口，因此我们也可以将它作为一个普通的Java类来使用： <br /><br />　　Message message = new Message("Hello World"); <br />　　System.out.println( message.getText() ); <br /><br />　　以上这段代码正是我们所期望的结果：它打印“hello world”到屏幕上。但这并不是我们的最终目标；实际上Hibernate与诸如EJB容器这样的环境在持久层实现的方式上有很大的不同。我们的持久类(Message类)可以用在与容器无关的环境中，不像EJB必须要有EJB容器才能执行。为了能更清楚地表现这点，以下代码将我们的一个新消息保存到数据库中去： <br /><br />　　Session session = getSessionFactory().openSession(); <br />　　Transaction tx = session.beginTransaction(); <br />　　Message message = new Message("Hello World"); <br />　　session.save(message); <br />　　tx.commit(); <br />　　session.close(); <br /><br />　　以上这段代码调用了Hibernate的Session和Transaction接口（关于getSessionFactory()方法我们将会马上提到）。它相当于我们执行了以下SQL语句： <br /><br />　　insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID) <br />　　values (1, 'Hello World', null) <br /><br />　　在以上的SQL语句中，MESSAGE_ID字段到底被初始化成了什么值呢？由于我们并没有在先前的代码中为message对象的id属性赋与初始值，那它是否为null呢？实际上Hibernate对id属性作了特殊处理：由于它是一个对象的唯一标识，因此当我们进行save()调用时，Hibernate会为它自动赋予一个唯一的值（我们将在后面内容中讲述它是如何生成这个值的）。 <br /><br />　　我们假设你已经在数据库中创建了一个名为MESSAGE的表，那么既然前面这段代码让我们将Message对象存入了数据库中，那么现在我们就要将它们一一取出来。下面这段代码将按照字母顺序，将数据库中的所有Message对象取出来，并将它们的消息正文打印到屏幕上： <br /><br />　　Session newSession = getSessionFactory().openSession(); <br />　　Transaction newTransaction = newSession.beginTransaction(); <br />　　List messages =newSession.find("from Message as m order by m.text asc"); <br />　　System.out.println( messages.size() + " message(s) found:" ); <br />　　for ( Iterator iter = messages.iterator(); iter.hasNext(); ) { <br />　　Message message = (Message) iter.next(); <br />　　System.out.println( message.getText() ); <br />　　} <br />　　newTransaction.commit(); <br />　　newSession.close(); <br /><br />　　在以上这段代码中，你可能被find()方法的这个参数困扰着："from Message as m order by m.text asc"，其实它是Hibernate自己定义的查询语言，全称叫Hibernate Query Language(HQL)。通俗地讲HQL与SQL的关系差不多就是方言与普通话之间的关系，咋一看，你会觉得它有点类似于SQL语句。其实在find()调用时，Hibernate会将这段HQL语言翻译成如下的SQL语句： <br /><br />　　select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID <br />　　from MESSAGES m <br />　　order by m.MESSAGE_TEXT asc <br /><br />　　以下就是运行结果： <br /><br />　　1 message(s) found: <br />　　Hello World <br /><br />　　如果你以前没有ORM（对象－关系映射）的开发经验，那你可能想在代码的某个地方去寻找这段SQL语句，但在Hibernate中你可能会失望：它根本不存在！所有就SQL语句都是Hibernate动态生成的。 <br /><br />　　也许你会觉得还缺点什么，对！仅凭以上代码Hibernate是无法将我们的Message类持久化的。我们还需要一些更多的信息，这就是映射定义表！这个表在Hibernate中是以XML格式来体现的，它定义了Message类的属性是怎样与数据库中的MESSAGES表的字段进行一一对应的，列表2是这个示例程序的映射配置文件清单： <br /><br />　　列表2：示例程序的对象－关系映射表 <br /><br />　　＜?xml version="1.0"?＞ <br />　　＜!DOCTYPE hibernate-mapping PUBLIC <br />　　"-//Hibernate/Hibernate Mapping DTD//EN" <br />　　"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"＞ <br />　　＜hibernate-mapping＞ <br />　　＜class name="hello.Message" table="MESSAGES"＞ <br />　　＜id name="id" column="MESSAGE_ID"＞ <br />　　＜generator class="increment"/＞ <br />　　＜/id＞ <br />　　＜property name="text" column="MESSAGE_TEXT"/＞ <br />　　＜many-to-one name="nextMessage" cascade="all" column="NEXT_MESSAGE_ID"/＞ <br />　　＜/class＞ <br />　　＜/hibernate-mapping＞ <br /><br />　　以上这个文档告诉Hibernate怎样将Message类映射到MESSAGES表中，其中Message类的id属性与表的MESSAGE_ID字段对应，text属性与表的MESSAGE_TEXT字段对应，nextMessage属性是一个多对一的关系，它与表中的NEXT_MESSAGE_ID相对应。 <br /><br />　　相对于有些开源项目来说，Hibernate的配置文件其实是很容易理解的。你可以轻松地修改与维护它。只要你定义好了持久类与数据库中表字段的对应关系就行了，Hibernate会自动帮你生成SQL语句来对Message对象进行插入、更新、删除、查找工作，你可以不写一句SQL语句，甚至不需要懂得SQL语言！ <br /><br />　　现在让我们做一个新的试验，我们先取出第一个Message对象，然后修改它的消息正文，最后我们再生成一个新的Message对象，并将它作为第一个Message对象的下一条消息，其代码如下： <br /><br />　　列表3　更新一条消息 <br /><br />　　Session session = getSessionFactory().openSession(); <br />　　Transaction tx = session.beginTransaction(); <br />　　// 1 is the generated id of the first message <br />　　Message message =(Message) session.load( Message.class, new Long(1) ); <br />　　message.setText("Greetings Earthling"); <br />　　Message nextMessage = new Message("Take me to your leader (please)"); <br />　　message.setNextMessage( nextMessage ); <br />　　tx.commit(); <br />　　session.close(); <br /><br />　　以上这段代码在调用时，Hibernate内部自动生成如下的SQL语句： <br /><br />　　select m.MESSAGE_ID, m.MESSAGE_TEXT, m.NEXT_MESSAGE_ID <br />　　from MESSAGES m <br />　　where m.MESSAGE_ID = 1 <br /><br />　　insert into MESSAGES (MESSAGE_ID, MESSAGE_TEXT, NEXT_MESSAGE_ID) <br />　　values (2, 'Take me to your leader (please)', null) <br /><br />　　update MESSAGES <br />　　set MESSAGE_TEXT = 'Greetings Earthling', NEXT_MESSAGE_ID = 2 <br />　　where MESSAGE_ID = 1 <br /><br />　　当第一个Message对象的text属性和nextMessage被程序修改时，请注意Hibernate是如何检测到这种变化，并如何在数据库中自动对它更新的。这实际上是Hibernate的一个很有价值的特色，我们把它称为“自动脏数据检测”，Hibernate的这个特色使得当我们修改一个持久对象的属性后，不必显式地通知Hibernate去将它在数据库中进行更新。同样的，当第一个Message对象调用setNextMessage()方法将第二个Message对象作为它的下一条消息的引用时，第二条消息会无需调用save()方法，便可以自动地保存在数据库中。这种特色被称为“级联保存”，它也免去了我们显式地对第二个Message对象调用save()方法之苦。 <br /><br />　　如果我们再运行先前的那段将数据库中所有的Message对象都打印出来的代码，那它的运行结果如下： <br /><br />　　2 message(s) found: <br />　　Greetings Earthling <br />　　Take me to your leader (please) <br /><br /><br />　　“Hello world”示例程序现在介绍完毕。我们总算对Hibernate有了一个简单的认识，下面我们将回过头来，对Hibernate的主要API调用作一下简要的介绍： <br />　　 <br /><br />　<strong>　理解Hibernate的架构</strong><br /><br />　　当你想用Hibernate开发自己的基于持久层的应用时，第一件事情应当是熟悉它的编程接口。Hibernate的API接口设计得尽量简洁明了，以方便开发人员。然而实际上由于ORM的复杂性，它的API一般都不可能设计得很简单。但是别担心，你没有必要一下子了解所有的Hibernate的API接口。<br /><br />　　我们将应用层放在了持久层的上部，实际上在传统的项目中，应用层充当着持久层的一个客户端角色。但对于一些简单的项目来说，应用层和持久层并没有区分得那么清楚，这也没什么，在这种情况下你可以将应用层和持久层合并成了一层。 <br /><br />　　<strong>Hibernate的接口大致可以分为以下几种类型：</strong><br /><br />　　· 一些被用户的应用程序调用的，用来完成基本的创建、读取、更新、删除操作以及查询操作的接口。这些接口是Hibernate实现用户程序的商业逻辑的主要接口，它们包括Session、Transaction和Query。 <br /><br />　　· Hibernate用来读取诸如映射表这类配置文件的接口，典型的代表有Configuration类。 <br /><br />　　· 回调(Callback)接口。它允许应用程序能对一些事件的发生作出相应的操作，例如Interceptor、Lifecycle和Validatable都是这一类接口。 <br /><br />　　· 一些可以用来扩展Hibernate的映射机制的接口，例如UserType、CompositeUserType和IdentifierGenerator。这些接口可由用户程序来实现（如果有必要）。 <br /><br />　　Hibernate使用了J2EE架构中的如下技术：JDBC、JTA、JNDI。其中JDBC是一个支持关系数据库操作的一个基础层；它与JNDI和JTA一起结合，使得Hibernate可以方便地集成到J2EE应用服务器中去。 <br /><br />　　在这里，我们不会详细地去讨论Hibernate API接口中的所有方法，我们只简要讲一下每个主要接口的功能，如果你想了解得更多的话，你可以在Hibernate的源码包中的net.sf.hibernate子包中去查看这些接口的源代码。下面我们依次讲一下所有的主要接口： <br /><br />　<strong>　</strong>核心接口 <br /><br />　　以下5个核心接口几乎在任何实际开发中都会用到。通过这些接口，你不仅可以存储和获得持久对象，并且能够进行事务控制。 <br /><br />　　Session接口 <br /><br />　　Session接口对于Hibernate 开发人员来说是一个最重要的接口。然而在Hibernate中，实例化的Session是一个轻量级的类，创建和销毁它都不会占用很多资源。这在实际项目中确实很重要，因为在客户程序中，可能会不断地创建以及销毁Session对象，如果Session的开销太大，会给系统带来不良影响。但值得注意的是Session对象是非线程安全的，因此在你的设计中，最好是一个线程只创建一个Session对象。 <br /><br />　　在Hibernate的设计者的头脑中，他们将session看作介于数据连接与事务管理一种中间接口。我们可以将session想象成一个持久对象的缓冲区，Hibernate能检测到这些持久对象的改变，并及时刷新数据库。我们有时也称Session是一个持久层管理器，因为它包含这一些持久层相关的操作，诸如存储持久对象至数据库，以及从数据库从获得它们。请注意，Hibernate 的session不同于JSP应用中的HttpSession。当我们使用session这个术语时，我们指的是Hibernate中的session，而我们以后会将HttpSesion对象称为用户session。 <br /><br />　　SessionFactory 接口 <br /><br />　　这里用到了一个设计模式――工厂模式，用户程序从工厂类SessionFactory中取得Session的实例。 <br /><br />　　令你感到奇怪的是SessionFactory并不是轻量级的！实际上它的设计者的意图是让它能在整个应用中共享。典型地来说，一个项目通常只需要一个SessionFactory就够了，但是当你的项目要操作多个数据库时，那你必须为每个数据库指定一个SessionFactory。 <br />　　SessionFactory在Hibernate中实际起到了一个缓冲区的作用，它缓冲了Hibernate自动生成的SQL语句和一些其它的映射数据，还缓冲了一些将来有可能重复利用的数据。 <br /><br />　　Configuration 接口 <br /><br />　　Configuration接口的作用是对Hibernate进行配置，以及对它进行启动。在Hibernate的启动过程中，Configuration类的实例首先定位映射文档的位置，读取这些配置，然后创建一个SessionFactory对象。 <br /><br />　　虽然Configuration接口在整个Hibernate项目中只扮演着一个很小的角色，但它是启动hibernate时你所遇到的每一个对象。 <br /><br />　　Transaction 接口 <br /><br />　　Transaction接口是一个可选的API，你可以选择不使用这个接口，取而代之的是Hibernate的设计者自己写的底层事务处理代码。 Transaction接口是对实际事务实现的一个抽象，这些实现包括JDBC的事务、JTA中的UserTransaction、甚至可以是CORBA事务。之所以这样设计是能让开发者能够使用一个统一事务的操作界面，使得自己的项目可以在不同的环境和容器之间方便地移值。 <br /><br />　　Query和Criteria接口 <br /><br />　　Query接口让你方便地对数据库及持久对象进行查询，它可以有两种表达方式：HQL语言或本地数据库的SQL语句。Query经常被用来绑定查询参数、限制查询记录数量，并最终执行查询操作。 <br /><br />　　Criteria接口与Query接口非常类似，它允许你创建并执行面向对象的标准化查询。 <br /><br />　　值得注意的是Query接口也是轻量级的，它不能在Session之外使用。 <br /><br />　　Callback 接口 <br /><br />　　当一些有用的事件发生时――例如持久对象的载入、存储、删除时，Callback接口会通知Hibernate去接收一个通知消息。一般而言，Callback接口在用户程序中并不是必须的，但你要在你的项目中创建审计日志时，你可能会用到它。 <br /><br />　　<strong> 一个重要的术语：Type <br /></strong><br />　　Hibernate的设计者们发明了一个术语：Type，它在整个构架中是一个非常基础、有着强大功能的元素。一个Type对象能将一个Java类型映射到数据库中一个表的字段中去（实际上，它可以映射到表的多个字段中去）。持久类的所有属性都对应一个type。这种设计思想使用Hibernate有着高度的灵活性和扩展性。 <br /><br />　　Hibernate内置很多type类型，几乎包括所有的Java基本类型，例如Java.util.Currency、Java.util.calendar、byte[]和Java.io.Serializable。 <br /><br />　　不仅如此，Hibernate还支持用户自定义的type，通过实现接口UserType和接口CompositeUserType，你可以加入自己的type。你可以利用这种特色让你的项目中使用自定义的诸如Address、Name这样的type，这样你就可以获得更大的便利，让你的代码更优雅。自定义type在Hibernate中是一项核心特色，它的设计者鼓励你多多使用它来创建一个灵活、优雅的项目！ <br /><br />　　策略接口 <br /><br />　　Hibernate与某些其它开源软件不同的还有一点――高度的可扩展性，这通过它的内置策略机制来实现。当你感觉到Hibernate的某些功能不足，或者有某些缺陷时，你可以开发一个自己的策略来替换它，而你所要做的仅仅只是继承它的某个策略接口，然后实现你的新策略就可以了，以下是它的策略接口： <br /><br />　　· 主键的生成 (IdentifierGenerator 接口) <br /><br />　　· 本地SQL语言支持 (Dialect 抽象类) <br /><br />　　· 缓冲机制 (Cache 和CacheProvider 接口) <br /><br />　　· JDBC 连接管理 (ConnectionProvider接口) <br /><br />　　· 事务管理 (TransactionFactory, Transaction, 和 TransactionManagerLookup 接口) <br /><br />　　· ORM 策略 (ClassPersister 接口) <br /><br />　　· 属性访问策略 (PropertyAccessor 接口) <br /><br />　　· 代理对象的创建 (ProxyFactory接口) <br /><br />　　Hibernate为以上所列的机制分别创建了一个缺省的实现，因此如果你只是要增强它的某个策略的功能的话，只需简单地继承这个类就可以了，没有必要从头开始写代码。 <br /><br />　　以上就是Hibernate的一些核心接口，但当我们真正开始用它进行开发时，你的脑海里可能总会有一个疑问：我是通过什么方式，并从哪里取得Session的呢？以下我们就解答这个问题。 <br /><br />　　基础配置 <br /><br />　　现在回顾一下我们先前的内容：我们写出了一个示例程序，并简要地讲解了Hibernate的一些核心类。但要真正使你的项目运行起来，还有一件事必须要做：配置。Hibernate可以配置成可在任何Java环境中运行，一般说来，它通常被用在2－3层的C/S模式的项目中，并被部署在服务端。在这种项目中，Web浏览器、或Java GUI程序充当者客户端。尽管我们的焦点主要是集中在多层web应用，但实际上在一些基于命令行的应用中也可以使用Hibernate。并且，对Hibernate的配置在不同的环境下都会不同，Hibernate运行在两种环境下：可管理环境和不可管理环境 <br /><br />　　· 可管理环境――这种环境可管理如下资源：池资源管理，诸如数据库连接池和，还有事务管理、安全定义。一些典型的J2EE服务器（JBoss、Weblogic、WebSphere）已经实现了这些。 <br /><br />　　· 不可管理环境――只是提供了一些基本的功能，诸如像Jetty或Tomcat这样的servlet容器环境。一个普通的Java桌面应用或命令行程序也可以认为是处于这种环境下。这种环境不能提供自动事务处理、资源管理或安全管理，这些都必须由应用程序自己来定义。 <br /><br />　　Hibernate的设计者们将这两种环境设计了一个统一的抽象界面，因此对于开发者来说只有一种环境：可管理环境。如果实际项目是建立在诸如Tomcat这类不可管理的环境中时，那Hibernate将会使用它自己的事务处理代码和JDBC连接池，使其变为一个可管理环境。 <br />　　对于可管理的环境而言，Hibernate会将自己集成在这种环境中。对于开发者而言，你所要做的工作非常简单：只需从一个Configuration类中创建一个SessionFactory类就可以了。 <br />　　 创建一个SessionFactory对象 <br /><br />　　为了能创建一个SessionFactory对象，你必须在Hibernate初始化时创建一个Configuration类的实例，并将已写好的映射文件交由它处理。这样，Configuration对象就可以创建一个SessionFactory对象，当SessionFactory对象创建成功后，Configuration对象就没有用了，你可以简单地抛弃它。如下是示例代码： <br /><br />　　Configuration cfg = new Configuration(); <br />　　cfg.addResource("hello/Message.hbm.xml"); <br />　　cfg.setProperties( System.getProperties() ); <br />　　SessionFactory sessions = cfg.buildSessionFactory(); <br /><br />　　在以上代码中，Message.hb.xml这个映射文件的位置比较特殊，它与当前的classpath相关。例如classpath包含当前目录，那在上述代码中的Message.hbm.xml映射文件就可以保存在当前目录下的hello目录中。 <br /><br />　　作为一种约定，Hibernate的映射文件默认以.htm.xml作为其扩展名。另一个约定是坚持为每一个持久类写一个配置文件，想一想如果你将所有持久类的映射写入一个单独的配置文件中的话，那这个配置文件肯定非常庞大，不易维护。但这里又出现了一个新问题：如果为每个类写一个配置文件的话，这么多的配置文件应该存放在哪里呢？ <br /><br />　　Hibernate推荐你将每个映射文件保存在与持久类相同的目录下，并且与持久类同名。例如我们第一个示例程序中的Message持久类放在hello目录下，那你必须在这个目录下存放名为Message.hbm.xml的映射文件。这样一个持久类都有自己的一个映射文件，避免了出现像struts项目中的“struts-config.xml地狱”的情况。如果你不遵循这种规定，那你必须手动地用addResource()方法将一个个的映射文件载入；但你如果遵循这种规定，那你可以方便地用addClass()方法同时将持久类和它的映射文件载入，以下是体现这种便利性的示例代码： <br /><br />　　SessionFactory sessions = new Configuration() <br />　　.addClass(org.hibernate.auction.model.Item.class) <br />　　.addClass(org.hibernate.auction.model.Category.class) <br />　　.addClass(org.hibernate.auction.model.Bid.class) <br />　　.setProperties( System.getProperties() ) <br />　　.buildSessionFactory(); <br /><br />　　当然，Hibernate的映射文件还有很多其它的配置选项，比如数据库连接的设定，或是能够改变Hibernate运行时行为的一些设定。所有的设置可能是非常庞杂的，足以让你喘不过气来，但是不必担心，因为Hibernate为绝大多数值都设定了一个合理缺省值，你只需要修改这些配置文件中的极小一部分值。 <br /><br />　　你可以通过以下几种方式来修改Hibernate的系统配置参数： <br /><br />　　· 将一个Java.util.Properties实例作为参数传给Configuration类的setProperties()方法。 <br /><br />　　· 在Hibernate启动时用Java –Dproperty=value的方式设置值。 <br /><br />　　· 在classpath可以找到的路径下创建一个名为hibernate.properties的配置文件。 <br /><br />　　· 在classpath可以找到的路径下创建一个名为hibernate.cfg.xml的文件，并在其＜property＞标签中定义属性值。 <br /><br />　　以上就是对Hibernate的一个大致介绍，如果你想知道得更多，那本文还是远远不够的，我将陆续推出更多关于Hibernate的资料。但有一点是毫无疑问的：它的确是一个非常优秀的持久层解决方案！</p>
				<br clear="all" />
		</div>
<img src ="http://www.blogjava.net/kemi/aggbug/141218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-08-30 10:45 <a href="http://www.blogjava.net/kemi/archive/2007/08/30/141218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;转&gt;  JSP乱码解决 王道</title><link>http://www.blogjava.net/kemi/archive/2007/08/16/137338.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 16 Aug 2007 09:06:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/08/16/137338.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/137338.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/08/16/137338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/137338.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/137338.html</trackback:ping><description><![CDATA[首先，说说JSP/Servlet中的几个编码的作用。<br /><br />在JSP/Servlet 中主要有以下几个地方可以设置编码，pageEncoding="UTF-8"、contentType="text/html;charset=UTF -8"、request.setCharacterEncoding("UTF-8")和response.setCharacterEncoding ("UTF-8")，其中前两个只能用于JSP中，而后两个可以用于JSP和Servlet中。<br /><br />1、pageEncoding="UTF-8"的作用是设置JSP编译成Servlet时使用的编码。<br /><br />　　众所周知，JSP在服务器上是要先被编译成Servlet的。pageEncoding="UTF-8"的作用就是告诉JSP编译器在将JSP文件编译成Servlet时使用的编码。通常，在JSP内部定义的字符串（直接在JSP中定义，而不是从浏览器提交的数据）出现乱码时，很多都是由于该参数设置错误引起的。例如，你的JSP文件是以GBK为编码保存的，而在JSP中却指定pageEncoding="UTF-8"，就会引起JSP内部定义的字符串为乱码。<br /><br />　　另外，该参数还有一个功能，就是在JSP中不指定contentType参数，也不使用response.setCharacterEncoding方法时，指定对服务器响应进行重新编码的编码。<br /><br />　　2、contentType="text/html;charset=UTF-8"的作用是指定对服务器响应进行重新编码的编码。<br /><br />　　在不使用response.setCharacterEncoding方法时，用该参数指定对服务器响应进行重新编码的编码。服务器在将数据发送到浏览器前，对数据进行重新编码时，使用的就是该编码。<br /><br />　　3、request.setCharacterEncoding("UTF-8")的作用是设置对客户端请求进行重新编码的编码。<br /><br />　　该方法用来指定对浏览器发送来的数据进行重新编码（或者称为解码）时，使用的编码。<br /><br />　　4、response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。<br /><br />　　服务器在将数据发送到浏览器前，对数据进行重新编码时，使用的就是该编码。<br /><br />　　其次，要说一说浏览器是怎么样对接收和发送的数据进行编码的<br /><br />　　response.setCharacterEncoding("UTF-8")的作用是指定对服务器响应进行重新编码的编码。同时，浏览器也是根据这个参数来对其接收到的数据进行重新编码（或者称为解码）。所以在无论你在JSP中设置response.setCharacterEncoding ("UTF-8")或者response.setCharacterEncoding("GBK")，浏览器均能正确显示中文（前提是你发送到浏览器的数据编码是正确的，比如正确设置了pageEncoding参数等）。读者可以做个实验，在JSP中设置 response.setCharacterEncoding("UTF-8")，在IE中显示该页面时，在IE的菜单中选择"查看(V)"à"编码 (D)"中可以查看到是" Unicode（UTF-8）"，而在在JSP中设置response.setCharacterEncoding ("GBK")，在IE中显示该页面时，在IE的菜单中选择"查看(V)"à"编码(D)"中可以查看到是"简体中文（GB2312）"。<br /><br />　　浏览器在发送数据时，对URL和参数会进行URL编码，对参数中的中文，浏览器也是使用response.setCharacterEncoding参数来进行URL编码的。以百度和GOOGLE为例，如果你在百度中搜索"汉字"，百度会将其编码为"%BA%BA%D7%D6"。而在GOOGLE中搜索 "汉字"，GOOGLE会将其编码为"%E6%B1%89%E5%AD%97"，这是因为百度的 response.setCharacterEncoding参数为GBK，而GOOGLE的的 response.setCharacterEncoding参数为UTF-8。<br /><br />　　浏览器在接收服务器数据和发送数据到服务器时所使用的编码是相同的，默认情况下均为JSP页面的response.setCharacterEncoding参数（或者contentType和 pageEncoding参数），我们称其为浏览器编码。当然，在IE中可以修改浏览器编码（在IE的菜单中选择"查看(V)"à"编码(D)"中修改），但通常情况下，修改该参数会使原本正确的页面中出现乱码。一个有趣的例子是，在IE中浏览GOOGLE的主页时，将浏览器编码修改为"简体中文（GB2312）"，此时，页面上的中文会变成乱码，不理它，在文本框中输入"汉字"，提交，GOOGLE会将其编码为"%BA%BA%D7%D6"，可见，浏览器在对中文进行URL编码时，使用的就是浏览器编码。<br /><br />　　弄清了浏览器是在接收和发送数据时，是如何对数据进行编码的了，我们再来看看服务器是在接收和发送数据时，是如何对数据进行编码的。<br /><br />　　对于发送数据，服务器按照response.setCharacterEncoding—contentType—pageEncoding的优先顺序，对要发送的数据进行编码。<br /><br />　　对于接收数据，要分三种情况。一种是浏览器直接用URL提交的数据，另外两种是用表单的GET和POST方式提交的数据。<br /><br />　　因为各种WEB服务器对这三种方式的处理也不相同，所以我们以Tomcat5.0为例。<br /><br />　　无论使用那种方式提交，如果参数中包含中文，浏览器都会使用当前浏览器编码对其进行URL编码。<br /><br />　　对于表单中POST方式提交的数据，只要在接收数据的JSP中正确request.setCharacterEncoding参数，即将对客户端请求进行重新编码的编码设置成浏览器编码，就可以保证得到的参数编码正确。有写读者可能会问，那如何得到浏览器编码呢？上面我们提过了，在默认请情况下，浏览器编码就是你在响应该请求的JSP页面中response.setCharacterEncoding设置的值。所以对于POST表单提交的数据，在获得数据的JSP页面中request.setCharacterEncoding要和生成提交该表单的JSP页面的 response.setCharacterEncoding设置成相同的值。<br /><br />　　对于URL提交的数据和表单中GET方式提交的数据，在接收数据的JSP中设置request.setCharacterEncoding参数是不行的，因为在Tomcat5.0中，默认情况下使用ISO- 8859-1对URL提交的数据和表单中GET方式提交的数据进行重新编码（解码），而不使用该参数对URL提交的数据和表单中GET方式提交的数据进行重新编码（解码）。要解决该问题，应该在Tomcat的配置文件的Connector标签中设置useBodyEncodingForURI或者 URIEncoding属性，其中useBodyEncodingForURI参数表示是否用request.setCharacterEncoding 参数对URL提交的数据和表单中GET方式提交的数据进行重新编码，在默认情况下，该参数为false（Tomcat4.0中该参数默认为true）； URIEncoding参数指定对所有GET方式请求（包括URL提交的数据和表单中GET方式提交的数据）进行统一的重新编码（解码）的编码。 URIEncoding和useBodyEncodingForURI区别是，URIEncoding是对所有GET方式的请求的数据进行统一的重新编码（解码），而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码（解码），不同的页面可以有不同的重新编码（解码）的编码。所以对于URL提交的数据和表单中GET方式提交的数据，可以修改 URIEncoding参数为浏览器编码或者修改useBodyEncodingForURI为true，并且在获得数据的JSP页面中 request.setCharacterEncoding参数设置成浏览器编码。<br /><br />　　下面总结下，以Tomcat5.0为WEB服务器时，如何防止中文乱码。<br /><br />1、 对于同一个应用，最好统一编码，推荐为UTF-8，当然GBK也可以。<br /><br />2、 正确设置JSP的pageEncoding参数<br /><br />3、 在所有的JSP/Servlet中设置contentType="text/html;charset=UTF-8"或response.setCharacterEncoding("UTF-8")，从而间接实现对浏览器编码的设置。<br /><br />4、 对于请求，可以使用过滤器或者在每个JSP/Servlet中设置request.setCharacterEncoding("UTF-8")。同时，要修改Tomcat的默认配置，推荐将useBodyEncodingForURI参数设置为true，也可以将URIEncoding参数设置为 UTF-8（有可能影响其他应用，所以不推荐）。<img src ="http://www.blogjava.net/kemi/aggbug/137338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-08-16 17:06 <a href="http://www.blogjava.net/kemi/archive/2007/08/16/137338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>更深入的TOMCAT中文乱码解决之道，包括GET/POST（转）</title><link>http://www.blogjava.net/kemi/archive/2007/07/10/129221.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 10 Jul 2007 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/07/10/129221.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/129221.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/07/10/129221.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/129221.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/129221.html</trackback:ping><description><![CDATA[在tomcat5中发现了以前处理tomcat4的方法不能适用于处理直接通过url提交的请求，上网找资料终于发现了最完美的解决办法，不用每个地方都转换了，而且无论get,和post都正常。    <br />  <br />  -------------------   <br />    <br />  问题描述：   <br />    <br />  1   表单提交的数据，用request.getParameter("xxx")返回的字符串为乱码或者？？   <br />  2   直接通过url如http://localhost/a.jsp?name=中国，这样的get请求在服务端用request.getParameter("name")时返回的是乱码；按tomcat4的做法设置Filter也没有用或者用request.setCharacterEncoding("GBK");也不管用   <br />    <br />  原因：   <br />  1   tomcat的j2ee实现对表单提交即post方式提示时处理参数采用缺省的iso-8859-1来处理   <br />  2   tomcat对get方式提交的请求对query-string   处理时采用了和post方法不一样的处理方式。(与tomcat4不一样,所以设置setCharacterEncoding("GBK"))不起作用。   <br />    <br />    <br />  解决办法：   <br />    <br />  首先所有的jsp文件都加上:   <br />    <br />    <br />  1   实现一个Filter.设置处理字符集为GBK。(在tomcat的webapps/servlet-examples目录有一个完整的例子。请参考web.xml和SetCharacterEncodingFilter的配置。)     <br />    <br />  1)只要把%TOMCAT安装目录%/   webapps\servlets-examples\WEB-INF\classes\filters\SetCharacterEncodingFilter.class文件拷到你的WEB-INF\classes目录filters下，如果没有filters目录，就创建一个。   <br />  2)在你的web.xml里加入如下几行：   <br />    <br />          &lt;filter&gt;   <br />                  &lt;filter-name&gt;Set   Character   Encoding&lt;/filter-name&gt;   <br />                  &lt;filter-class&gt;filters.SetCharacterEncodingFilter&lt;/filter-class&gt;   <br />                  &lt;init-param&gt;   <br />                          &lt;param-name&gt;encoding&lt;/param-name&gt;   <br />                          &lt;param-value&gt;GBK&lt;/param-value&gt;   <br />                  &lt;/init-param&gt;   <br />          &lt;/filter&gt;   <br />    <br />          &lt;filter-mapping&gt;   <br />                  &lt;filter-name&gt;Set   Character   Encoding&lt;/filter-name&gt;   <br />                  &lt;url-pattern&gt;/*&lt;/url-pattern&gt;   <br />          &lt;/filter-mapping&gt;   <br />    <br />  3)完成.   <br />    <br />  2   get方式的解决办法   <br />  1)   打开tomcat的server.xml文件，找到区块，加入如下一行：   <br />  URIEncoding=”GBK”   <br />  完整的应如下：   <br />          &lt;Connector     <br />  port="80"                               maxThreads="150"   minSpareThreads="25"   maxSpareThreads="75"   <br />                                enableLookups="false"   redirectPort="8443"   acceptCount="100"   <br />                                debug="0"   connectionTimeout="20000"     <br />                                disableUploadTimeout="true"   URIEncoding="GBK"   /&gt;   <br />    <br />  2)重启tomcat,一切OK。   <br />    <br />  执行如下jsp页页测试是否成功   <br />    <br />    <br />  &lt;%@   page   contentType="text/html;charset=gb2312"%&gt;   <br />  &lt;%@   page   import="java.util.*"%&gt;   <br />  &lt;%   <br />          String   q=request.getParameter("q");   <br />          q   =   q   ==   null?   "没有值"   :   q;   <br />  %&gt;   <br />  &lt;HTML&gt;   <br />  &lt;HEAD&gt;&lt;TITLE&gt;新闻列表显示&lt;/TITLE&gt;   <br />  &lt;META   http-equiv=Content-Type   content="text/html;   charset=gb2312"&gt;   <br />  &lt;META   http-equiv=pragma   content=no-cache&gt;   <br />  &lt;/HEAD&gt;   <br />    <br />  &lt;body&gt;   <br />  你提交了：   <br />  &lt;%=q%&gt;   <br />  &lt;br&gt;   <br />  &lt;form   action="tcnchar.jsp"   method="post"&gt;   <br />  输入中文:&lt;input   type="text"   name="q"&gt;&lt;input   type="submit"   value="确定"&gt;   <br />  &lt;br&gt; &lt;a   href="tcnchar.jsp?q=中国"&gt;通过get方式提交&lt;/a&gt;   <br />  &lt;/form&gt;   <br />  &lt;/BODY&gt;   <br />  &lt;/HTML&gt;   <br />    <br />  测试结果如果你输入文本框或者点超链都会显示:你提交了”中国”,说明成功!!!!!   <br /><img src ="http://www.blogjava.net/kemi/aggbug/129221.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-07-10 09:32 <a href="http://www.blogjava.net/kemi/archive/2007/07/10/129221.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat中文乱码问题原因和解决方法</title><link>http://www.blogjava.net/kemi/archive/2007/07/10/129220.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 10 Jul 2007 01:31:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/07/10/129220.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/129220.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/07/10/129220.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/129220.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/129220.html</trackback:ping><description><![CDATA[自从接触Java和JSP以来，就不断与Java的中文乱码问题打交道，现在终于得到了彻底的解决，现将我们的解决心得与大家共享。
<p>　　一、Java中文问题的由来</p><p>　　Java的内核和class文件是基于unicode的，这使Java程序具有良好的跨平台性，但也带来了一些中文乱码问题的麻烦。原因主要有两方面，Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。</p><p>　　首先Java（包括JSP）源文件中很可能包含有中文，而Java和JSP源文件的保存方式是基于字节流的，如果Java和JSP编译成class文件过程中，使用的编码方式与源文件的编码不一致，就会出现乱码。基于这种乱码，建议在Java文件中尽量不要写中文（注释部分不参与编译，写中文没关系），如果必须写的话，尽量手动带参数－ecoding GBK或－ecoding gb2312编译；对于JSP，在文件头加上&lt;%@ page contentType="text/html;charset=GBK"%&gt;或&lt;%@ page contentType="text/html;charset=gb2312"%&gt;基本上就能解决这类乱码问题。</p><p>　　本文要重点讨论的是第二类乱码，即Java程序与其他存储媒介交互时产生的乱码。很多存储媒介，如数据库，文件，流等的存储方式都是基于字节流的，Java程序与这些媒介交互时就会发生字符(char)与字节(byte)之间的转换，例如从页面提交表单中提交的数据在Java程序里显示乱码等情况。</p><p>　　如果在以上转换过程中使用的编码方式与字节原有的编码不一致，很可能就会出现乱码。</p><p>　　二、解决方法</p><p>　　对于流行的Tomcat来说，有以下两种解决方法：</p><p>　　1) 更改 D:\Tomcat\conf\server.xml，指定浏览器的编码格式为“简体中文”：</p><p>　　方法是找到 server.xml 中的</p><p>    &lt;Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />    enableLookups="false" redirectPort="8443" acceptCount="100"<br />    connectionTimeout="20000" disableUploadTimeout="true" <strong>URIEncoding='GBK'</strong> /&gt;<br /></p><p>　　标记，粗体字是我添加的。</p><p>　　可以这样验证你的更改是否成功：在更改前，在你出现乱码的页面的IE浏览器，点击菜单“查看｜编码”，会发现“西欧(ISO)”处于选中状态。而更改后，点击菜单“查看｜编码”，会发现“简体中文(GB2312)”处于选中状态。</p><p>　　b)更该 Java 程序，我的程序是这样的：</p><p>public class ThreeParams extends HttpServlet {<br />  public void doGet(HttpServletRequest request, HttpServletResponse response)<br />   throws ServletException, IOException {<br />      <strong>response.setContentType("text/html; charset=GBK");<br /></strong>      ...<br />  }  <br />}<br /></p><p>　　粗体字是必需要有的，它的作用是让浏览器把Unicode字符转换为GBK字符。这样页面的内容和浏览器的显示模式都设成了GBK，就不会乱码了。</p><img src ="http://www.blogjava.net/kemi/aggbug/129220.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-07-10 09:31 <a href="http://www.blogjava.net/kemi/archive/2007/07/10/129220.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(原创) 使用AXIS 实现附件上传到服务器</title><link>http://www.blogjava.net/kemi/archive/2007/07/06/128621.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Fri, 06 Jul 2007 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/07/06/128621.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/128621.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/07/06/128621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/128621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/128621.html</trackback:ping><description><![CDATA[
		<p>package com.telecom.communication;</p>
		<p>import java.io.BufferedInputStream;<br />import java.io.File;<br />import java.io.FileNotFoundException;<br />import java.io.FileOutputStream;<br />import java.io.IOException;<br />import java.io.InputStream;<br />import java.io.OutputStream;<br />import java.net.URL;<br />import java.sql.Connection;<br />import java.sql.ResultSet;<br />import java.sql.Statement;<br />import java.util.ArrayList;</p>
		<p>import javax.activation.DataHandler;</p>
		<p>import org.apache.axis.attachments.ManagedMemoryDataSource;<br />import org.apache.axis.types.URI;<br />import org.apache.struts.upload.FormFile;</p>
		<p>import cn.com.chinatelecom.www.schema.ctcc.common.v2_1.SimpleReference;<br />import cn.com.chinatelecom.www.schema.ctcc.multimedia_messaging.v2_2.MessagePriority;<br />import cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messaging.send.v2_2._interface.SendMessage;<br />import cn.com.chinatelecom.www.wsdl.ctcc.multimedia_messaging.send.v2_2.service.SendMessageServiceLocator;</p>
		<p>import com.telecom.dao.DBLinker;<br />import com.telecom.util.AttachPart;<br />import com.telecom.util.Sequence;</p>
		<p>public class MMS_send {<br /> public MMS_send() {</p>
		<p> }</p>
		<p> private AttachPart attachmentParts[];</p>
		<p> private static SimpleReference _receipt_request;</p>
		<p>   public void saveMmsMessage(String filepath, AttachPart[] ap,String mmsRoad) {<br />  for (int i = 0; i &lt; ap.length; i++) {<br />   AttachPart part = ap[i];<br />   try {<br />    String s=saveAttachmentMessage(part.getContent().getInputStream(), part<br />      .getContentType(), mmsRoad, filepath);<br />    System.out.println("last s:"+s);</p>
		<p>   } catch (Exception e) {</p>
		<p>    e.printStackTrace();</p>
		<p>   }<br />  }</p>
		<p> }</p>
		<p> public String saveAttachmentMessage(InputStream in, String contentType,<br />   String fileName, String folderPath) throws Exception {<br />  System.out.println("FileName: "+fileName);<br />  // 打开多媒体库<br />  File file = new File(folderPath + "/mmsImage");<br />  // 如果媒体库不存在则建设多媒体库<br />  if (!file.exists()) {<br />   file.mkdirs();<br />  }<br />  // 将图片存放到多媒体库,并保存其信息到数据库<br />  String filePath = file.getAbsolutePath();</p>
		<p>  BufferedInputStream bin = null;<br />  OutputStream os = null;</p>
		<p>  try {<br />   bin = new BufferedInputStream(in);<br />   file = new File(filePath + "/" + fileName);<br />   if (!file.exists()) {<br />    file.createNewFile();<br />   }<br />   os = new FileOutputStream(file);<br />   byte[] bytes = new byte[1];<br />   int beginIndex = 0;<br />   int endIndex = beginIndex + 1;<br />   while (true) {<br />    int _read = bin.read(bytes, beginIndex, endIndex);<br />    if (_read == -1) {<br />     break;<br />    }<br />    os.write(bytes);<br />   }<br />   String contextPathFileName = "mmsImage/" + fileName;<br />   bin.close();<br />   in.close();<br />   os.close();<br />   return contextPathFileName;<br />  } catch (IOException e) {<br />   e.printStackTrace();<br />   throw new Exception();<br />  } catch (Exception e) {<br />   e.printStackTrace();<br />   throw new Exception();<br />  } finally {<br />   try {<br />    bin.close();<br />    in.close();<br />    os.close();<br />   } catch (IOException e) {<br />    throw new Exception();<br />   }</p>
		<p>  }<br /> }</p>
		<p> public AttachPart buildEMAttachmentPartFromFile(FormFile mmsFile) {<br />  AttachPart attchmentPart = new AttachPart();<br />  try {<br />   InputStream in = mmsFile.getInputStream();<br />   String contentType = mmsFile.getContentType();<br />   if ("image/pjpeg".equals(contentType))<br />    contentType = "image/jpeg";<br />   ManagedMemoryDataSource source = new ManagedMemoryDataSource(<br />     mmsFile.getInputStream(), 16384, contentType, true);<br />   attchmentPart.setContent(source);<br />   attchmentPart.setContentType(mmsFile.getContentType());<br />   String fileName = mmsFile.getFileName();<br />   String suffix = fileName.substring(fileName.indexOf('.'));<br />   attchmentPart.setFileName(Sequence.getID("") + suffix);<br />  } catch (FileNotFoundException e) {<br />   e.printStackTrace();<br />  } catch (IOException e) {<br />   e.printStackTrace();<br />  }<br />  return attchmentPart;<br /> }</p>
		<p> public static void main(String[] args) {<br />  Sag_sms s = new Sag_sms();<br />  try {<br />   s.sendSmsBySAG("13977770119", "法律", "1004");<br />  } catch (Exception ex) {<br />   ex.printStackTrace();<br />  } finally {<br />  }</p>
		<p> }</p>
		<p>}<br /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/128621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-07-06 16:53 <a href="http://www.blogjava.net/kemi/archive/2007/07/06/128621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再学习AXIS的WEB服务 （转）</title><link>http://www.blogjava.net/kemi/archive/2007/06/11/123364.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 11 Jun 2007 04:56:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/06/11/123364.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/123364.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/06/11/123364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/123364.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/123364.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 下载								Apache Axis								用来实现								SOAP(								简单对象访问协议								)								。																		http://ws.apache.org/axis/																																																...&nbsp;&nbsp;<a href='http://www.blogjava.net/kemi/archive/2007/06/11/123364.html'>阅读全文</a><img src ="http://www.blogjava.net/kemi/aggbug/123364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-06-11 12:56 <a href="http://www.blogjava.net/kemi/archive/2007/06/11/123364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>值得深思的一个JSP文件： </title><link>http://www.blogjava.net/kemi/archive/2007/04/24/113199.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 24 Apr 2007 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/04/24/113199.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/113199.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/04/24/113199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/113199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/113199.html</trackback:ping><description><![CDATA[
		<p>1.Struts下面Vector居然不在bean 的属性认识范畴，而String[]可行！<br />2.页面刷新的时候，可以在&lt;HEAD&gt;处设置no-cache，完成了页面的刷新任务，但是耗费资源了。<br /><br />&lt;%@ page contentType="text/html; charset=gb2312" language="java"<br /> import="java.sql.*" errorPage=""%&gt;<br />&lt;%@ page import="com.telecom.common.form.DepForm"%&gt;<br />&lt;%@ page import="java.sql.Connection"%&gt;<br />&lt;%@ page import="java.sql.ResultSet"%&gt;<br />&lt;%@ page import="java.sql.Statement"%&gt;<br />&lt;%@ page import="java.util.Vector"%&gt;<br />&lt;%@ page import="com.telecom.dao.DBLinker"%&gt;<br />&lt;%@ page import="com.telecom.common.form.EnterpriseNumForm"%&gt;</p>
		<p>
				<br />&lt;%<br /> EnterpriseNumForm enf = new EnterpriseNumForm();<br /> Connection conn = null;<br /> ResultSet rs = null;<br /> ResultSet rs2 = null;<br /> Statement sta = null;<br /> Statement sta2 = null;<br /> try {<br />  conn = (Connection) DBLinker.linkDB();<br />  String sql1 = "select distinct(strEnID) eid from tbEnterpriseNum";<br />  rs = null;<br />  sta = conn.createStatement();<br />  rs = sta.executeQuery(sql1);<br />  if (rs.next()) {<br />   enf.setEnID(rs.getString("eid"));<br />  }else{<br />  enf.setEnID("0000");<br />  }</p>
		<p>  String sql2 = "select distinct(strPresentNum) pn from tbEnterpriseNum ";<br />  rs2 = null;<br />  sta2 = conn.createStatement();<br />  rs2 = sta2.executeQuery(sql2);<br />  Vector v = new Vector();<br />  <br />  while (rs2.next()) {<br />   v.add(rs2.getString("PN"));<br />  }<br />  String[] s=new String[v.size()];<br />  for(int i=0;i&lt;v.size();i++){<br />  s[i]=v.elementAt(i).toString();<br />  }<br />  enf.setNums(s);<br />  System.out.println(v.size());<br />  //session.setAttribute("enf",enf);<br /> } catch (Exception e) {<br /> } finally {<br />  rs2.close();<br />  rs.close();<br />  sta.close();<br />  sta2.close();<br />  conn.close();<br /> }<br />%&gt;</p>
		<p>
				<br />&lt;html&gt;<br /> &lt;head&gt;<br />  &lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />  &lt;link rel="stylesheet" type="text/css" href="../include/style.css"&gt;<br />  &lt;title&gt;详细信息&lt;/title&gt;<br />  &lt;script language="javascript"&gt;</p>
		<p>function checkNum(){<br />    selectAllMember(form1.nums);<br />    form1.submit();<br />   <br />  }<br />function selectAllMember(selection)<br />  {<br />   var ops=selection.options;<br />   for(var i=0;i&lt;ops.length;i++)<br />   {<br />    ops[i].selected=true;<br />   }<br />  }<br />function deleteSelectedMember(selection)<br />  {<br />   var ops=selection.options;<br />   for(var i=0;i&lt;ops.length;i++)<br />   {<br />    if(ops[i].selected==true)<br />    {<br />     selection.remove(i);<br />     i--;<br />    }<br />   }<br />  }<br />function other_add(){<br />        if(form1.otherNum.value==""){<br />  alert("不能为空");<br />  }else{<br />  additemNoRepeat(form1.otherNum.value,form1.otherNum.value,form1.nums);<br />  }<br /> <br />}</p>
		<p>function additemNoRepeat(Otext,Ovalue,selectElement){//不重复的添加<br /> for(j=0;j&lt;selectElement.options.length;j++){<br />  if(selectElement.options[j].value==Ovalue){<br />   var flag=1;<br />   alert(Otext+"已添加");<br />   break;<br />  }<br /> }<br /> if(flag!=1){<br />  selectElement.options[selectElement.options.length]=new Option(Otext,Ovalue);<br /> }<br />}<br />  <br /> </p>
		<p>&lt;/script&gt;<br />  &lt;style type="text/css"&gt;<br />&lt;!--<br />.style3 {FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #246bad; LINE-HEIGHT: 2 }<br />body {<br /> background-color: #E7F0FA;<br />}<br />--&gt;<br />&lt;/style&gt;<br /><font color="#ff1493">&lt;meta http-equiv="pragma" content="no-cache"&gt;</font></p>
		<p>
				<font color="#ff1493">&lt;%response.setHeader("Pragma","No-cache");  <br />        response.setHeader("Cache-Control","no-cache");  <br />        response.addHeader("Expires","Thu, 01 Jan 1970 00:00:01 GMT");  <br />        response.flushBuffer();%&gt;</font>
		</p>
		<p> &lt;/head&gt;</p>
		<p> &lt;body opener.location.reload()"&gt; </p>
		<p>  &lt;table width="100%"&gt;<br />   &lt;tr&gt;<br />    &lt;td bgcolor="#ffffff"&gt;<br />     &lt;table width="530" border="0" cellpadding="0" cellspacing="0"<br />      style="word-break:break-all; "&gt;<br />      &lt;tr&gt;<br />       &lt;td width="60" background="../linkman/images/s22.jpg"&gt;<br />        &amp;nbsp;<br />       &lt;/td&gt;<br />       &lt;td width="447" background="../linkman/images/s23.jpg"&gt;<br />        &amp;nbsp;<br />        &lt;span class="style3"&gt;修改企业号码和主叫绑定号码&lt;/span&gt;<br />       &lt;/td&gt;<br />       &lt;td width="6"&gt;<br />        &lt;img src="../linkman/images/s24.jpg" width="6" height="58"&gt;<br />       &lt;/td&gt;<br />       &lt;td width="17"&gt;&lt;/td&gt;<br />      &lt;/tr&gt;</p>
		<p>      &lt;tr&gt;<br />       &lt;td colspan="4"&gt;<br />        &lt;table width="100%" border="0" cellpadding="0" cellspacing="0"&gt;<br />         &lt;tr&gt;<br />          &lt;td width="17"&gt;<br />           &amp;nbsp;<br />          &lt;/td&gt;<br />          &lt;td bgcolor="#e7f0fa"&gt;<br />           &lt;table width="94%" border="0" align="center" cellpadding="0"<br />            cellspacing="0"&gt;<br />            &lt;form name="form1" method="post" <br />             action="../companyadmin/EditENF.do?method=SaveENF" &gt;<br />            &lt;tr&gt;<br />             &lt;td width="17%" height="25"&gt;<br />              企业号码：<br />             &lt;/td&gt;<br />             &lt;td width="100%" height="25"&gt;<br />             <br />              &lt;input name="enID" type="text" id="enID"<br />               value="&lt;%=enf.getEnID()%&gt;"&gt;<br />             &lt;/td&gt;<br />            &lt;/tr&gt;<br />            &lt;tr&gt;<br />             &lt;td width="17%" height="25"&gt;<br />              主叫绑定号码：<br />             &lt;/td&gt;<br />             &lt;td&gt;<br />          <font color="#008000">    &lt;select name="nums" size="20" multiple id="nums"<br />               style="width:64%"&gt;<br />               &lt;%<br />                String[] v = enf.getNums();<br />                System.out.println(v.length);<br />                if (v.length != 0) {</font></p>
		<p>
				<font color="#008000">                 for (int k = 0; k &lt; v.length; k++) {<br />                  String oldpn = new String();<br />                  oldpn = v[k];<br />                  System.out.println(oldpn);<br />               %&gt;<br />               &lt;option value="&lt;%=oldpn%&gt;"&gt;<br />                &lt;%=oldpn%&gt;<br />               &lt;/option&gt;<br />               &lt;%<br />                }<br />                }<br />               %&gt;<br />              &lt;/select&gt;</font>
		</p>
		<p>
				<font color="#000080">            </font>
				<font color="#000000">  &lt;input type="button" name="Submit" value="删除号码"<br /></font>               onClick="deleteSelectedMember(document.all.nums)"&gt;</p>
		<p>             &lt;/td&gt;<br />            &lt;/tr&gt;<br />            &lt;tr&gt;<br />             &lt;td height="30" scope="col"&gt;<br />              请输入号码:<br />             &lt;/td&gt;<br />             &lt;td&gt;<br />              &lt;input  type="text" id="otherNum"&gt;<br />              &amp;nbsp;<br />              &lt;input type="button" name="Submit" value="添加"<br />               onClick="other_add()"&gt;</p>
		<p>             &lt;/td&gt;<br />            &lt;/tr&gt;</p>
		<p>            &lt;/form&gt;<br />           &lt;/table&gt;<br />          &lt;/td&gt;<br />          &lt;td width="17"&gt;<br />           &amp;nbsp;<br />          &lt;/td&gt;<br />         &lt;/tr&gt;<br />        &lt;/table&gt;<br />       &lt;/td&gt;<br />      &lt;/tr&gt;</p>
		<p> </p>
		<p>      &lt;tr&gt;<br />       &lt;td height="30" colspan="4"&gt;<br />        &lt;div align="center"&gt;<br />         &lt;a href="javascript:checkNum();"&gt;保存设置&lt;/a&gt;</p>
		<p>        &lt;/div&gt;<br />       &lt;/td&gt;<br />      &lt;/tr&gt;<br />     &lt;/table&gt;<br />    &lt;/td&gt;<br />   &lt;/tr&gt;<br />  &lt;/table&gt;</p>
		<p> &lt;/body&gt;<br />&lt;/html&gt;</p>
		<p> </p>
		<p> </p>
<img src ="http://www.blogjava.net/kemi/aggbug/113199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-04-24 15:42 <a href="http://www.blogjava.net/kemi/archive/2007/04/24/113199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AXIS 开发 WS 流程</title><link>http://www.blogjava.net/kemi/archive/2007/03/01/101298.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 01 Mar 2007 12:08:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/03/01/101298.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/101298.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/03/01/101298.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/101298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/101298.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">Axis</span>
				</b>
				<b>
						<span style="FONT-SIZE: 14pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">部署说明</span>
				</b>
				<b>
						<span lang="EN-US" style="FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">
								<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US">
								<o:p> </o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US">
								<o:p> </o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 18pt; TEXT-INDENT: -18pt; mso-list: l0 level1 lfo1; tab-stops: list 18.0pt">
				<b style="mso-bidi-font-weight: normal">
						<span lang="EN-US" style="mso-fareast-font-family: 'Times New Roman'">
								<span style="mso-list: Ignore">1．<span style="FONT: 7pt 'Times New Roman'"></span></span>
						</span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">安装</span>
				<span lang="EN-US">axis</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">：将</span>
				<span lang="EN-US">axis</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发布包（</span>
				<span lang="EN-US">webapps\axis</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）复制到服务器部署的目录下</span>
				<span lang="EN-US">D:\Tomcat 5.0\webapps</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，启动</span>
				<span lang="EN-US">tomcat</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，访问</span>
				<span lang="EN-US">
						<a href="http://192.168.0.51:7070/axis/">
								<span style="COLOR: windowtext; TEXT-DECORATION: none; text-underline: none">http://192.168.0.51:7070/axis/</span>
						</a>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">axis</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: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US">2</span>
				</b>
				<span lang="EN-US">.</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">添加必要的类包：将生成</span>
				<span lang="EN-US">webservice</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">所需的</span>
				<span lang="EN-US">jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包拷贝至（</span>
				<span lang="EN-US">D:\Tomcat 5.0\webapps\axis\WEB-INF\lib</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">）目录下，并将类和配置文件等拷贝至</span>
				<span lang="EN-US">D:\Tomcat 5.0\webapps\axis\WEB-INF\classes</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: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US">3. </span>
				</b>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">设置部署环境变量</span>
				<span lang="EN-US">someclasspath</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，</span>
				<span lang="EN-US">someclasspath</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中设置的是部署</span>
				<span lang="EN-US">webservice</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">过程中所需用到的</span>
				<span lang="EN-US">jar</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包，它包含了</span>
				<span lang="EN-US">axis</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下所有的类包和</span>
				<span lang="EN-US">tomcat</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: 0cm 0cm 0pt">
				<span lang="EN-US">D:\Tomcat5.0\webapps\axis\WEB-INF\lib\axis.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\axis-ant.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\commons-discovery.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\commons-logging.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\jaxrpc.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\log4j-1.2.8.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\saaj.jar;D:\Tomcat 5.0\webapps\axis\WEB-INF\lib\wsdl4j.jar;</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">4</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">．设置部署</span>
				<span lang="EN-US">webservice</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的部署文件</span>
				<span lang="EN-US">(</span>
				<span lang="EN-US" style="FONT-FAMILY: 宋体">deploy.wsdd</span>
				<span lang="EN-US">)</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，具体设置如下。将</span>
				<span lang="EN-US" style="FONT-FAMILY: 宋体">deploy.wsdd文件放在c:\目录下</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<o:p> </o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">&lt;deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"&gt;<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">    </span>&lt;service name="SMS" provider="java:RPC"&gt;<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">        </span>
								<span style="COLOR: red">&lt;!-- 指出要发布成web service的类 --&gt;<o:p></o:p></span>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">        </span>&lt;parameter name="className" value="com.beyondbit.sms.port.SMSPort "/&gt;<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">        </span>
								<span style="COLOR: red">&lt;!-- 允许所有public方法可被调用 --&gt;<o:p></o:p></span>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">        </span>&lt;parameter name="allowedMethods" value="*"/&gt;<span style="mso-spacerun: yes">      </span><o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">    </span>&lt;/service&gt;<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<span style="mso-spacerun: yes">   </span>&lt;/deployment&gt;<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span lang="EN-US" style="FONT-FAMILY: 宋体">
								<o:p> </o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">在<span lang="EN-US">dos环境下运行部署命令，部署webservice<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">命令：<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">java -cp "%someclasspath%" org.apache.axis.client.AdminClient –p 7070 deploy.wsdd<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">发布成功，此时可通过 <span lang="EN-US">http://192.168.0.51:7070/axis/servlet/AxisServlet地址看到名字为sms的webservice已部署成功<o:p></o:p></span></span> (<font color="#ff1493">或者不用通过wsdd文件,直接去写server-config.wsdd.在相应区域添加例如下面的内容:<br />    &lt;service name="TestWS" provider="java:RPC"&gt;<br />  &lt;parameter name="allowedMethods" value="*"/&gt;<br />   &lt;parameter name="className" value="com.telecom.notify.DefaultSmsNotify"/&gt; <br /> &lt;/service&gt;<br /></font>)</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">可通过点击<span lang="EN-US">webservice名字旁的描述文件链接，察看webservice的描述文件<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">5．在客户端生成调用webservice的java文件,命令如下java -cp "%someclasspath%" org.apache.axis.wsdl.WSDL2Java -p &lt;测试用例包&gt;<span style="mso-spacerun: yes">  </span>-t&lt;url地址&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">在<span lang="EN-US">dos环境下输入命令<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">java -cp "%someclasspath%" org.apache.axis.wsdl.WSDL2Java -p com.smsCase<span style="mso-spacerun: yes">  </span>-t http://192.168.0.51:7070/axis/services/sms?wsdl<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">系统执行该命令后会在<span lang="EN-US">c:\目录下生成com\smsCase文件夹，其中包含生成的类。利用ant等工具编译这些文件（编译过程中需要用到someclasspath中的jar包）。可通过以下例程调用webservice,<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">public String parseXml()<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 1">    </span>{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>String xmlString = "";<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>try<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 3">            </span>
						<span style="COLOR: red">SMSPortServiceLocator service = new SMSPortServiceLocator();<o:p></o:p></span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="COLOR: red; FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 3">            </span>SMSServiceSoapBindingStub binding = (SMSServiceSoapBindingStub)new SMSPortServiceLocator().getSMSService();<span style="mso-tab-count: 2">        </span><o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="COLOR: red; FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 3">            </span>binding = (SMSServiceSoapBindingStub)service.getSMSService();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="COLOR: red; FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 3">            </span>xmlString<span style="mso-spacerun: yes">  </span>= binding.toReceiveMsg("000","1234");</span>
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>catch(Exception e)<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>{<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 3">            </span>e.printStackTrace();<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 2">        </span>return xmlString;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-tab-count: 1">    </span>}<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">此中调用<span lang="EN-US">webservice中的sms中的toReceiveMsg方法。<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">6．卸载weservice，设置卸载部署文件 undeploy.wsdd，</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">将</span>
				<span lang="EN-US" style="FONT-FAMILY: 宋体">undeploy.wsdd文件放在c:\目录下</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">&lt;undeployment xmlns="http://xml.apache.org/axis/wsdd/"&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<span style="mso-spacerun: yes"> </span>&lt;service name="sms"/&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">&lt;/undeployment&gt;<o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">
						<o:p> </o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">在<span lang="EN-US">dos环境下运行卸载webservice命令，卸载webservice<o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体">命令：<span lang="EN-US"><o:p></o:p></span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US" style="FONT-FAMILY: 宋体">java -cp "%someclasspath%" org.apache.axis.client.AdminClient –p 7070 undeploy.wsdd<o:p></o:p></span>
		</p>
<img src ="http://www.blogjava.net/kemi/aggbug/101298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-03-01 20:08 <a href="http://www.blogjava.net/kemi/archive/2007/03/01/101298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于 struts 资源文件</title><link>http://www.blogjava.net/kemi/archive/2007/02/12/99400.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 12 Feb 2007 03:40:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/02/12/99400.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/99400.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/02/12/99400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/99400.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/99400.html</trackback:ping><description><![CDATA[
		<p>1，将a.properties转化为二进制资源文件（struts承认）<br />   native2ascii a.properties b<br /> 内容为：<br /><br />All.error.a=\u8f93\u5165\u4e3a\u7a7a</p>
		<p>Pass.error.a=\u65e7\u5bc6\u7801\u4e0d\u5bf9<br />Pass.error.b=\u5bc6\u7801\u4e0d\u5339\u914d</p>
		<p>
				<br />
				<br />
				<br />2.将b放到src下,后缀为properties.在config文件配置其&lt;message-resources parameter="b" null="false"/&gt;<br /><br />3.使用<br />   if (oldpass.equals("") || newpass.equals("")|| conpass.equals("")) {<br />   errors.add("fail_1", new ActionError("All.error.a"));<br />   saveErrors(request, errors);<br />   return mapping.findForward("fail");<br /><br />4.打完收工，Easy~</p>
<img src ="http://www.blogjava.net/kemi/aggbug/99400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-02-12 11:40 <a href="http://www.blogjava.net/kemi/archive/2007/02/12/99400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>精读：深入equal() 方法    （转载：Axman）</title><link>http://www.blogjava.net/kemi/archive/2007/02/02/97582.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Fri, 02 Feb 2007 09:00:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/02/02/97582.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/97582.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/02/02/97582.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/97582.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/97582.html</trackback:ping><description><![CDATA[
		<span class="h1b">深入equals方法</span>
		<br />
		<br />
		<table cellspacing="0" cellpadding="0" width="100%" border="0">
				<tbody>
						<tr>
								<td height="64">时间：2006-07-26<br />作者：<a href="http://dev2dev.bea.com.cn/author/536.html">axman</a><br />浏览次数：
<script language="JavaScript" src="/beabbscount.jsp?d_id=163384" type="text/JavaScript"></script>
 2070 <br />本文关键字：<a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=java">java</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=equal">equal</a>, <a href="http://dev2dev.bea.com.cn/products/search.jsp?searchtype=keywords&amp;keywords=基础">基础</a></td>
								<td>
										<table class="box_content" cellspacing="0" cellpadding="0" border="0">
												<tbody>
														<tr>
																<td>
																		<span class="h2b">文章工具</span>
																		<br />
																		<img height="10" alt="推荐给朋友" src="http://dev2dev.bea.com.cn/images/letter001.gif" width="19" align="absMiddle" /> <a href="javascript:sendmail()">推荐给朋友</a><br /><img height="18" alt="打印文章" src="http://dev2dev.bea.com.cn/images/print001.gif" width="19" align="absMiddle" /> <a href="javascript:window.print()">打印文章</a></td>
														</tr>
												</tbody>
										</table>
								</td>
						</tr>
				</tbody>
		</table>
		<!-- 提取技术文章 -->
		<div class="beas">
				<img height="1" alt="" src="http://dev2dev.bea.com.cn/images/dot6B6B6B.gif" width="100%" />
		</div>
		<p>　　equals方法的重要性毋须多言,只要你想比较的两个对象不愿是同一对象,你就应该实现equals方法,让对象用你认为相等的条件来进行比较。</p>
		<p>　　下面的内容只是API的规范,没有什么太高深的意义,但我之所以最先把它列在这儿,是因为这些规范在事实中并不是真正能保证得到实现。</p>
		<ol>
				<li>对于任何引用类型, o.equals(o) == true成立。 
</li>
				<li>如果 o.equals(o1) == true 成立,那么o1.equals(o)==true也一定要成立。 
</li>
				<li>如果 o.equals(o1) == true 成立且  o.equals(o2) == true 成立,那么o1.equals(o2) == true 也成立。 
</li>
				<li>如果第一次调用o.equals(o1) == true成立再o和o1没有改变的情况下以后的任何次调用都成立。 
</li>
				<li>o.equals(null) == true 任何时间都不成立。 </li>
		</ol>
		<p>　　以上几条规则并不是最完整的表述,详细的请参见API文档。</p>
		<p>　　对于Object类,它提供了一个最最严密的实现,那就是只有是同一对象是,equals方法才返回true,也就是人们常说的引用比较而不是值比较。这个实现严密得已经没有什么实际的意义,所以在具体子类(相对于Object来说)中,如果我们要进行对象的值比较,就必须实现自己的equals方法。 </p>
		<p>　　先来看一下以下这段程序:</p>
		<pre class="code">    public boolean equals(Object obj)
    {
        if (obj == null) return false;
        if (!(obj instanceof FieldPosition))
            return false;
        FieldPosition other = (FieldPosition) obj;
        if (attribute == null) {
            if (other.attribute != null) {
                return false;
            }
        }
        else if (!attribute.equals(other.attribute)) {
            return false;
        }
        return (beginIndex == other.beginIndex
            &amp;&amp; endIndex == other.endIndex
            &amp;&amp; field == other.field);
    }
</pre>
		<p>　　这是JDK中java.text.FieldPosition的标准实现,似乎没有什么可说的. 我相信大多数或绝大多数程序员认为,这是正确的合法的equals实现.毕竟它是JDK的API实现啊. 还是让我们以事实来说话吧:</p>
		<pre class="code">package debug;
import java.text.*;
public class Test {
  public static void main(String[] args) {
    FieldPosition fp = new FieldPosition(10);
    FieldPosition fp1 = new MyTest(10);
    System.out.println(fp.equals(fp1));
    System.out.println(fp1.equals(fp));
  }
}
class MyTest extends FieldPosition{
  int x = 10;
  public MyTest(int x){
    super(x);
    this.x = x;
  }
  public boolean equals(Object o){
    if(o==null) return false;
    if(!(o instanceof MyTest )) return false;
    return ((MyTest)o).x == this.x;
  }
}
</pre>
		<p>　　 运行一下看看会打印出什么:</p>
		<pre class="code">System.out.println(fp.equals(fp1));打印true
System.out.println(fp1.equals(fp));打印flase</pre>
		<p>　　两个对象,出现了不对称的equals算法.问题出在哪里(脑筋急转弯：当然出在JDK实现的BUG)?</p>
		<p>　　我相信有太多的程序员(除了那些根本不知道实现equals方法的程序员外)在实现equals方法时都用过instanceof运行符来进行短路优化的，实事求是地说很长一段时间我也这么用过。太多的教程，文档都给了我们这样的误导。而有些稍有了解的程序员可能知道这样的优化可能有些不对但找不出问题的关键。另外一种极端是知道这个技术缺陷的骨灰级专家就提议不要这样应用。</p>
		<p>　　我们知道，"通常"要对两个对象进行比较，那么它们"应该"是同一类型。所以首先利用nstanceof运行符进行短路优化，如果被比较的对象不和当前对象是同一类型则不用比较返回false,但事实上，"子类是父类的一个实例"，所以如果 子类 o instanceof 父类，始终返回true,这时肯定不会发生短路优化，下面的比较有可能出现多种情况，一种是不能造型成子类而抛出异常，另一种是父类的private 成员没有被子类继承而不能进行比较，还有就是形成上面这种不对称比较。可能会出现太多的情况。</p>
		<p>　　那么，是不是就不能用 instanceof运行符来进行优化？答案是否定的，JDK中仍然有很多实现是正确的，如果一个class是final的，明知它不可能有子类，为什么不用 instanceof来优化呢？</p>
		<p>　　为了维护SUN的开发小组的声誉，我不说明哪个类中，但有一个小组成员在用这个方法优化时在后加加上了加上了这样的注释：</p>
		<pre class="code"> if (this == obj)             // quick check
         return true;
      if (!(obj instanceof XXXXClass))  // (1) same object?
         return false;</pre>
		<p>　　可能是有些疑问，但不知道如何做（不知道为什么没有打电话给我......）</p>
		<p>　　那么对于非final类，如何进行类型的quick check呢？</p>
		<pe>if(obj.getClass() != XXXClass.class) return false;<pre></pre><p>　　用被比较对象的class对象和当前对象的class比较，看起来是没有问题，但是，如果这个类的子类没有重新实现equals方法，那么子类在比较的时候，obj.getClass() 肯定不等于XXXCalss.class,也就是子类的equals将无效，所以if(obj.getClass() != this.getClass()) return false;才是正确的比较。 <br />另外一个quick check是if(this==obj) return true;</p><p>　　是否equals方法一定比较的两个对象就一定是要同一类型？上面我用了"通常"，这也是绝大多数程序员的愿望，但是有些特殊的情况，我们可以进行不同类型的比较，这并不违反规范。但这种特殊情况是非常罕见的，一个不恰当的例子是，Integer类的equals可以和Sort做比较，比较它们的value是不是同一数学值。（事实上JDK的API中并没有这样做，所以我才说是不恰当的例子）。在完成quick check以后，我们就要真正实现你认为的“相等”。对于如果实现对象相等，没有太高的要求，比如你自己实现的“人”类，你可以认为只要name相同即认为它们是相等的，其它的sex,ago都可以不考虑。这是不完全实现，但是如果是完全实现，即要求所有的属性都是相同的，那么如何实现equals方法？</p><pre class="code">class Human{
 private String name;
 private int ago;
 private String sex;
        ....................
        public boolean equals(Object obj){
  quick check.......
  Human other = (Human)ojb;
  return this.name.equals(other.name) 
   &amp;&amp; this.ago == ohter.ago
   &amp;&amp; this.sex.equals(other.sex);
 }
}
</pre><p>　　 这是一个完全实现，但是，有时equals实现是在父类中实现，而要求被子类继承后equals能正确的工作，这时你并不事实知道子类到底扩展了哪些属性，所以用上面的方法无法使equals得到完全实现。</p><p>　　一个好的方法是利用反射来对equals进行完全实现：</p><pre class="code"> public boolean equals(Object obj){
  quick check.......
  Class c = this.getClass();
  Filed[] fds = c.getDeclaredFields();
  for(Filed f:fds){
   if(!f.get(this).equals(f.get(obj)))
    return false;
  }
  return true;
 }
</pre><p>　　为了说明的方便，上明的实现省略了异常，这样的实现放在父类中，可以保证你的子类的equals可以按你的愿望正确地工作。</p><p>　　关于equals方法的最后一点是：如果你要是自己重写（正确说应该是履盖）了equals方法，那同时就一定要重写hashCode().为是规范，否则.............</p><p>　　我们还是看一下这个例子：</p><pre class="code">public final class PhoneNumber {
    private final int areaCode;
    private final int exchange;
    private final int extension;
    public PhoneNumber(int areaCode, int exchange, int extension) {
        rangeCheck(areaCode, 999, "area code");
        rangeCheck(exchange, 99999999, "exchange");
        rangeCheck(extension, 9999, "extension");
        this.areaCode = areaCode;
        this.exchange = exchange;
        this.extension = extension;
    }
    private static void rangeCheck(int arg, int max, String name) {
        if(arg &lt; 0 || arg &gt; max)
            throw new IllegalArgumentException(name + ": " + arg);
    }
    public boolean equals(Object o) {
        if(o == this)
            return true;
        if(!(o instanceof PhoneNumber))
            return false;
        PhoneNumber pn = (PhoneNumber)o;
        return pn.extension == extension &amp;&amp; pn.exchange == exchange &amp;&amp; pn.areaCode == areaCode;
    }
}
</pre><p>　　注意这个类是final的，所以这个equals实现没有什么问题。 </p><p>　　我们来测试一下:</p><pre class="code">    public static void main(String[] args) {
        Map hm = new HashMap();
        PhoneNumber pn = new PhoneNumber(123, 38942, 230);
        hm.put(pn, "I love you");
        PhoneNumber pn1 = new PhoneNumber(123, 38942, 230);
        System.out.println(pn);
        System.out.println("pn.equals(pn1) is " + pn.equals(pn1));
        System.out.println(hm.get(pn1));
        System.out.println(hm.get(pn));
    }
</pre><p>　　既然pn.equals(pn1),那么我put(pn,"I love you");后，get(pn1)这什么是null呢？</p><p>　　答案是因为它们的hashCode不一样，而hashMap就是以hashCode为主键的。</p><p>　　所以规范要求，如果两个对象进行equals比较时如果返回true,那么它们的hashcode要求返回相等的值。 </p><p>　　好了，休息，休息一下。。。。。。。。。。。。。。。。 </p><p>　　<strong>转载自dev2dev网友axman的<a href="http://blog.csdn.net/axman/" target="_blank">go deep into java专栏</a>。</strong></p><h3>个人自述</h3><p>一个男人.<br />一个写程序的男人.<br />一个写程序并正在从程序中寻找快乐的男人.<br />一个写程序并正在从程序中寻找快乐并把快乐传递给大家的男人.</p><p>一个书生.<br />一个寂寞的书生.<br />一个寂寞的梅香竹影下敲声写韵的书生.<br />一个寂寞的梅香竹影下敲声写韵晨钟暮鼓中逸气扬剑的书生.</p><p>那个男人是位书生。没有人知道他的姓名，居无定所，行无定踪，亦耕变读，或渔或樵。<br />所以有人叫他樵夫(Axman)，有人叫他渔郎(fisher)。</p><!--文章其他信息--></pe>
<img src ="http://www.blogjava.net/kemi/aggbug/97582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-02-02 17:00 <a href="http://www.blogjava.net/kemi/archive/2007/02/02/97582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Swing ,AWT,SWT三种应用程序框架的性能比较</title><link>http://www.blogjava.net/kemi/archive/2007/02/02/97480.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Fri, 02 Feb 2007 04:46:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/02/02/97480.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/97480.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/02/02/97480.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/97480.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/97480.html</trackback:ping><description><![CDATA[
		<font size="2">
				<font face="宋体">自</font>
				<span lang="EN-US">IBM</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">公司提供的跨平台</span>
				<span lang="EN-US">GUI</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">开发包</span>
				<span lang="EN-US">SWT</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">以来，越来越多受到广大程序员的亲睐，已经有不少程序员用它开发出美观、高效、实用的桌面应用程序。这让我们更有理由去探索</span>
				<span lang="EN-US">SWT</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">给我们带来的惊奇。</span>
		</font>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /?>
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span lang="EN-US">        SWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在外观和性能上都超过了</span>
						<span lang="EN-US">awt/swing</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，为什么这样说呢？下面简单的测试程序会让你一目了然。废话也不多说，让我们看程序。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">    下面让我们写一个简单的程序来测试一下，程序只做一件事，就是用</span>
						<span lang="EN-US">Label</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">显示</span>
						<span lang="EN-US">”Hello World!”</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，我的测试环境是</span>
						<span lang="EN-US">JDK<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /?><st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">1.5.0</st1:chsdate>+Eclipse3.1</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。看看在</span>
						<span lang="EN-US">AWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">、</span>
						<span lang="EN-US">SWING</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">和</span>
						<span lang="EN-US">SWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">下分别实现该效果所需要的时间和内存消耗。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">AWT_CODE:</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.Frame;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.Label;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.event.WindowAdapter;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.event.WindowEvent;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">public class awtTest {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>public static void main(String[] args) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long memory = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long time = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>memory = Runtime.getRuntime().freeMemory();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>time = System.currentTimeMillis();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>Frame frame = new Frame();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>Label label = new Label();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>label.setText("Hello World!");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.add(label);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.setVisible(true);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.addWindowListener(new WindowAdapter() {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>public void windowClosing(WindowEvent we) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 4">                            </span>System.exit(0);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>});</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.pack();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(System.currentTimeMillis() - time);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(memory - Runtime.getRuntime().freeMemory());</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">运行效果及所用的时间和内存值：</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /?>
						<v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
								<font size="2">
										<v:stroke joinstyle="miter">
										</v:stroke>
										<v:formulas>
												<v:f eqn="if lineDrawn pixelLineWidth 0">
												</v:f>
												<v:f eqn="sum @0 1 0">
												</v:f>
												<v:f eqn="sum 0 0 @1">
												</v:f>
												<v:f eqn="prod @2 1 2">
												</v:f>
												<v:f eqn="prod @3 21600 pixelWidth">
												</v:f>
												<v:f eqn="prod @3 21600 pixelHeight">
												</v:f>
												<v:f eqn="sum @0 0 1">
												</v:f>
												<v:f eqn="prod @6 1 2">
												</v:f>
												<v:f eqn="prod @7 21600 pixelWidth">
												</v:f>
												<v:f eqn="sum @8 21600 0">
												</v:f>
												<v:f eqn="prod @7 21600 pixelHeight">
												</v:f>
												<v:f eqn="sum @10 21600 0">
												</v:f>
										</v:formulas>
										<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect">
										</v:path>
										<o:lock v:ext="edit" aspectratio="t">
										</o:lock>
								</font>
						</v:shapetype>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2">
								</font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<img onmousewheel="return bbimg(this)" style="ZOOM: 100%" height="160" src="http://www.j2medev.com/Article/UploadFiles/200509/20050908153345279.jpg" width="400" onload="javascript:resizepic(this)" border="0" />
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
						</font>
				</span> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">SWING_CODE:</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import javax.swing.JFrame;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import javax.swing.JLabel;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.event.WindowAdapter;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import java.awt.event.WindowEvent;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">public class swingTest {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>public static void main(String[] args) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long memory = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long time = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>memory = Runtime.getRuntime().freeMemory();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>time = System.currentTimeMillis();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>JFrame frame = new JFrame();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>JLabel label = new JLabel();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>label.setText("Hello World!");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.add(label);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.setVisible(true);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.addWindowListener(new WindowAdapter() {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>public void windowClosing(WindowEvent we) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 4">                            </span>System.exit(0);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>});</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>frame.pack();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.print("Time:");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(System.currentTimeMillis() - time);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.print("Memory:");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(memory - Runtime.getRuntime().freeMemory());</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">运行效果及所用的时间和内存值：</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
								<font size="2">
										<img onmousewheel="return bbimg(this)" height="160" src="http://www.j2medev.com/Article/UploadFiles/200509/20050908153442776.jpg" width="400" onload="javascript:resizepic(this)" border="0" />
								</font>
						</span>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
						</font>
				</span> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">SWT_CODE:</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import org.eclipse.swt.widgets.Display;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import org.eclipse.swt.widgets.Shell;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import org.eclipse.swt.widgets.Label;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">import org.eclipse.swt.SWT;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">public class swtTest {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>public static void main(String[] args) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long memory = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>long time = <st1:chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="0" unitname="l">0L</st1:chmetcnv>;</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>memory = Runtime.getRuntime().freeMemory();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>time = System.currentTimeMillis();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>Display display = new Display();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>Shell shell = new Shell(display);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>Label label = new Label(shell, SWT.NONE);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>label.setText("Hello World!");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>shell.pack();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>label.pack();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>shell.open();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.print("Time:");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(System.currentTimeMillis() - time);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.print("Memory:");</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>System.out.println(Runtime.getRuntime().freeMemory() - memory);</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>while(!shell.isDisposed()) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>if(!display.readAndDispatch()) {</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 4">                            </span>display.sleep();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 3">                     </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>display.dispose();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 2">              </span>label.dispose();</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
								<span style="mso-tab-count: 1">       </span>}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">}</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">运行效果及所用的时间和内存值：</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">
								<img onmousewheel="return bbimg(this)" height="160" src="http://www.j2medev.com/Article/UploadFiles/200509/20050908153421491.jpg" width="400" onload="javascript:resizepic(this)" border="0" />
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
						<font size="2">
						</font>
				</span> </p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font size="2">
						</font>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你仔细看代码，你会发现在</span>
						<span lang="EN-US">SWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的代码中，我注解为</span>
						<span lang="EN-US">’***’</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">代码处，与前两者有所不同，这也我疑惑的地方，在整个程序运行中，运行后的剩余内存居然比运行前的剩余内存值大。接着，我在调试该程序的时候，我发现在</span>
						<span lang="EN-US">Shell shell = new Shell(display)</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语句执行后，内存值有明显的增加，如果你知道</span>
						<span lang="EN-US">SWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">底层是如何操作的，知道这是什么原因引起的，请你</span>
						<span lang="EN-US">
								<a href="mailto:numenzq@yahoo.com.cn">
										<span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">
												<span lang="EN-US">
														<u>
																<font color="#800080">联系我</font>
														</u>
												</span>
										</span>
								</a>
						</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">并告诉我这是为什么，我好做出修正。</span>
				</font>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<o:p>
								<font size="2"> </font>
						</o:p>
				</span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<font size="2">
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">如果你是初学者，不知道怎么运行</span>
						<span lang="EN-US">SWT</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序，其实很简单的，只需要在你的工程的</span>
						<span lang="EN-US">Libraries</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">添加一个名为</span>
						<span lang="EN-US">org.eclipse.swt.win32.win32.x86_<st1:chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">3.1.0</st1:chsdate>.jar</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">包，该包的位置在你的</span>
						<span lang="EN-US">Eclipse</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的安装目录下的</span>
						<span lang="EN-US">\plugins\</span>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">文件夹里。</span>
				</font>
		</p>
<img src ="http://www.blogjava.net/kemi/aggbug/97480.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-02-02 12:46 <a href="http://www.blogjava.net/kemi/archive/2007/02/02/97480.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>教你使用 AutoJava （原创）</title><link>http://www.blogjava.net/kemi/archive/2007/01/29/96466.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 29 Jan 2007 03:44:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2007/01/29/96466.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/96466.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2007/01/29/96466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/96466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/96466.html</trackback:ping><description><![CDATA[AutoJava 下载地址：<a href="http://down.11nong.com/weiojsdf/down/@LinkGate@21809172189552x1170039420x21809173718254-9039e952bf06a91424f4d041f8952288@LK@/autoJava.zip">http://down.11nong.com/weiojsdf/down/@LinkGate@21809172189552x1170039420x21809173718254-9039e952bf06a91424f4d041f8952288@LK@/autoJava.zip</a><br />(注意：软件运行环境 JDK1.4以上)<br /><br />1.下载后解压<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto1.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto1.bmp" /><br /><br />2.执行批处理文件，配置参数，例子是一个Sql Server数据库<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto2.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto2.bmp" /><br /><br /><br />3.数据库驱动，必须放到解压目录的lib下<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto3.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto3.bmp" /><br /><br />4.编辑－选取表，可以看到连接上的数据库的相关表.<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto4.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto4.bmp" /><br /><br />5,选择Hb_Admin,然后文件－生成，如果顺利，将显示出下面的信息。<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto5.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto5.bmp" /><br /><br />6,现在去刚才配置的输出路径"D://temp"下，将看到已经自动生成的文件结构和Hb_Admin的Model了，哈哈！<br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto6.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto6.bmp" /><br /><br /><br /><img src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto7.bmp" temp_src="C:\Documents and Settings\Administrator\My Documents\My Pictures\auto7.bmp" /><img src ="http://www.blogjava.net/kemi/aggbug/96466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2007-01-29 11:44 <a href="http://www.blogjava.net/kemi/archive/2007/01/29/96466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向冰同学指导的打开应用程序的JAVA代码</title><link>http://www.blogjava.net/kemi/archive/2006/12/26/90092.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Tue, 26 Dec 2006 05:44:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/12/26/90092.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/90092.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/12/26/90092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/90092.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/90092.html</trackback:ping><description><![CDATA[
		<p>public class TestFile {<br /> public static void main(String args[]) {<br />  try {<br />   Process process = Runtime<br />     .getRuntime()<br />     .exec(<br />     // "cmd.exe /c start <a href="http://www.sina.net">http://www.sina.net</a>");</p>
		<p>       "D:\\Program Files\\Microsoft Office\\Office10\\powerpnt.exe /s 1.pps");<br />   // "C:\\WINDOWS\\system32\\rundll32.exe jpg.jpg");</p>
		<p>  } catch (Exception e) {<br />   e.printStackTrace();<br />  }</p>
		<p> }<br />}<br /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/90092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-12-26 13:44 <a href="http://www.blogjava.net/kemi/archive/2006/12/26/90092.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将Jdeveloper项目成功移植到tomcat5.X</title><link>http://www.blogjava.net/kemi/archive/2006/11/27/83723.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Mon, 27 Nov 2006 02:32:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/11/27/83723.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/83723.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/11/27/83723.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/83723.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/83723.html</trackback:ping><description><![CDATA[
		<p>
				<span class="bodycopy">由于 Tomcat 没有 EJB 容器，因此您只能部署该示例应用程序的两层版本。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 1 步，安装 ADF 运行时库</span>
		</p>
		<p>
				<span class="bodycopy">此步骤与将运行时库安装到 OC4J 的步骤类似。在运行安装程序时请确保服务器处于停止状态。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 2 步，创建与应用服务器的连接</span>
		</p>
		<p>
				<span class="bodycopy">按照前面所述创建一个新连接。您无法测试此连接。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 3 步，创建部署描述文件</span>
		</p>
		<p>
				<span class="bodycopy">您唯一需要的描述文件就是 web.xml，它由 JDeveloper10<i>g</i> 在创建 web 页面时生成。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 4 步，为每一层创建部署配置文件</span>
		</p>
		<p>
				<span class="bodycopy">编辑 web 客户端的部署配置文件。确保将目标连接设置为您在第 2 步中创建的 tomcat 连接。输入正确的 war 文件名。在 Tomcat 中，上下文根基于 web 应用程序的文件夹名称。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 5 步，创建一个全局部署配置文件（仅限三层应用程序）</span>
		</p>
		<p>
				<span class="bodycopy">跳过此步骤。</span>
		</p>
		<p>
				<span class="boldbodycopy">第 6 步，部署应用程序</span>
		</p>
		<p>
				<span class="bodycopy">右键单击“webapp.deploy”</span>。 </p>
		<p>
				<span class="bodycopy">选择“deploy to tomcat”</span>
		</p>
		<p>
				<span class="boldbodycopy">第 7 步，测试应用程序</span>
		</p>
		<p>
				<span class="bodycopy">通过在浏览器中键入 http://localhost:8080/[warfilename]/departments.jsp，测试应用程序的部署。</span>
		</p>
<img src ="http://www.blogjava.net/kemi/aggbug/83723.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-11-27 10:32 <a href="http://www.blogjava.net/kemi/archive/2006/11/27/83723.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse 插件介绍</title><link>http://www.blogjava.net/kemi/archive/2006/10/13/74942.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Fri, 13 Oct 2006 03:16:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/10/13/74942.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/74942.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/10/13/74942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/74942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/74942.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="2">
				<strong>eclipse 插件集锦</strong>
				<br />
				<br />
				<font color="#ff0000">XML Schema Infoset Model (XSD)</font> <br />功能：XML Schema Infoset Model 是个参考库提供用于测试，创建或者修改 W3C XML Schema 的 API。<br />主页：</font>
		<a href="http://www.eclipse.org/xsd/">
				<a href="http://www.eclipse.org/xsd/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.eclipse.org/xsd/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Graphical Editing Framework</font><br />功能：这个插件允许开发者快速开发图形编辑器。<br />主页：</font>
		<a href="http://www.eclipse.org/gef/">
				<a href="http://www.eclipse.org/gef/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.eclipse.org/gef/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Eclipse Modeling Framework (EMF) </font><br />功能：EMF是一个建模框架和基于结构化数据模型的代码生成工具。它能够将按照约定所进行描述的XML和其它EMF<br /><br />工具产生或运行时支持一套JAVA类模型、一套用于查看和处理模型操作的接口类。这套模型可以用包含注释的<br /><br />JAVA代码、XML文档或者用ROSE之类的建模工具所制作的模型导成EMF。最重要的是，EMF提供其它基于EMF的工具<br /><br />及应用程序的基础协作平台。<br />主页：</font>
		<a href="http://www.eclipse.org/emf/">
				<a href="http://www.eclipse.org/emf/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.eclipse.org/emf/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Eclipse Web Tools Platform (WTP)<br /></font>版本：1.0<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free<br />开发状况： Beta<br />公司： eclipse.org<br />功能：包含了 HTML , javascript , CSS , JSP , SQL , DTD , XSD &amp; WSDL 编辑器，提供图形化的 XSD &amp; WSDL <br /><br />编辑器，J2EE 工程构建，建模，发布。Web service 向导数据库访问和查询工具，五星级插件！强烈推荐。<br />主页：</font>
		<a href="http://www.eclipse.org/webtools/index.html">
				<a href="http://www.eclipse.org/webtools/index.html" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.eclipse.org/webtools/index.html</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Lomboz</font><br />版本：Build-20050526<br />开发状况： 5 - Production/Stable<br />使用协议：GNU Lesser General Public License (LGPL)<br />功能：Lomaz 是著名的 eclipse 的 J2EE 开发插件，它使用了以下开源技术：Jasper，Xdoclet，Axis 和 Ant，<br /><br />完全支持编码，发布，测试和调试的开发环节。<br />主页：</font>
		<a href="http://forge.objectweb.org/projects/lomboz">
				<a href="http://forge.objectweb.org/projects/lomboz" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://forge.objectweb.org/projects/lomboz</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Myeclipse</font><br />版本：3.8.4<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书：commerce<br />开发状况：stable<br />公司： Genuitec, LLC<br />功能：<br /><br /><br />要钱的东西，不过是最强悍的 J2EE 开发插件。<br />可视化的 JSF 和 Struts 开发，XML 编辑器，Hibernate 支持，UML建模，应用服务器连接，支持 EJB 开发，同<br /><br />步发布 JSP （不必发布整个应用程序）……<br />非常强大的工具，使用一下就能体会到了 : ) <br /><br /><font color="#ff0000">Sysdeo Eclipse Tomcat Launcher plugin</font><br />版本：3.1 Beta<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free<br />开发状况： Beta<br />公司： Sysdeo<br />功能：<br /><br /><br />在Elipse中启动停止重启Tomcat<br />注册 Tomcat 进程到 Eclipse 调试器<br />创建 WAR 文件<br />把 Java 工程添加到 Tomcat Classpath 中<br />设置 Tomcat JVM 参数，Classpath 和 bootclasspath<br />把 Tomcat 工程导出为 WAR 文件<br />选择 Tomcat 配置文件 <br /><br />插件主页：</font>
		<a href="http://www.eclipse-plugins.info/eclipse/index.jsp">
				<a href="http://www.eclipse-plugins.info/eclipse/index.jsp" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.eclipse-plugins.info/eclipse/index.jsp</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><br /><font color="#ff0000">JavaScript Editor</font> <br />版本：0.0.9b<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：Javascript 编辑，提供了代码高亮，自动完成和内容纲要的功能。<br />插件主页：</font>
		<a href="http://jseditor.sourceforge.net/">
				<a href="http://jseditor.sourceforge.net/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://jseditor.sourceforge.net/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">CSSEditor</font><br />版本：0.0.4<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：代码高亮，内容提示，纲要栏显示 CSS 规则，输入时显示错误。<br />主页：</font>
		<a href="http://csseditor.sourceforge.net/">
				<a href="http://csseditor.sourceforge.net/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://csseditor.sourceforge.net/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Exadel Studio</font><br />版本：2.5<br />支持的 Eclipse 版本： 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：支持 JSF，Struts，JSP 编辑（支持2.0），Spring Framework，Hibernate，数据库浏览，图形化的属性<br /><br />编辑器，CSS 编辑器，JavaScript 编辑器，图像浏览，XSD 编辑，支持 XML Schema，支持超过 20 种应用服务<br /><br />器的发布……功能非常强大。 <br /><br /><font color="#ff0000">Struts Console</font><br />版本：4.8<br />支持的 Eclipse 版本： ALL<br />使用证书： Free<br />开发状况： stable<br />公司： N/A<br />功能：支持 *.tld文件，Struts 1.0 － 1.2 配置文件， Tiles配置文件， Validator 1.0 和 1.1配置文件，支<br /><br />持主流的 Java IDEs。<br />主页：</font>
		<a href="http://www.jamesholmes.com/struts/console/">
				<a href="http://www.jamesholmes.com/struts/console/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.jamesholmes.com/struts/console/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Faces Console</font><br />版本：1.7<br />支持的 Eclipse 版本： ALL<br />使用证书： Free<br />开发状况： stable<br />公司： N/A<br />功能：完全支持 JSF 配置文件，支持 JSP Tag Library 文件，支持主流的 Java IDEs。<br />主页：</font>
		<a href="http://www.jamesholmes.com/JavaServerFaces/console/">
				<a href="http://www.jamesholmes.com/JavaServerFaces/console/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.jamesholmes.com/JavaServerFaces/console/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><br /><font color="#ff0000">HTML Tidy Eclipse Plug-in</font><br />版本：1.2.1<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：格式化和校验 (X)HTML 和 XML 代码。本身并不提供编辑器。<br />主页：</font>
		<a href="http://eclipsetidy.sourceforge.net/">
				<a href="http://eclipsetidy.sourceforge.net/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://eclipsetidy.sourceforge.net/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Eclipse HTML Editor Plugin</font><br />版本：N/A<br />支持的 Eclipse 版本： 2.1 &amp; 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：<br /><br /><br />Eclipse HTML Editor 是 HTML/JSP/XML 编辑插件。<br />HTML/JSP/XML/CSS 高亮。<br />HTML/JSP 预览<br />JSP/XML 校验<br />Contents 帮助(HTML Tags/Attributes, XML based on DTD and JSP taglib and more)<br />创建 HTML/JSP/XML 文件向导<br />代码折叠<br />图片浏览<br />CSS 代码完成 <br /><br />主页：</font>
		<a href="http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor">
				<a href="http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgi?page=EclipseHTMLEditor</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">PHPeclipse（PHP Development Toolkit ）</font><br />版本：N/A<br />支持的 Eclipse 版本： 3.0<br />使用证书： Free CPL<br />开发状况： Beta<br />公司： N/A<br />功能：eclipse 的 PHP 开发环境，支持代码高亮和代码自动完成，预览 PHP 页面。可以在eclipse中控制 <br /><br />apache，mysql 的启动，停止和重启。功能强大！<br />主页：</font>
		<a href="http://www.phpeclipse.de/tiki-view_articles.php">
				<a href="http://www.phpeclipse.de/tiki-view_articles.php" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.phpeclipse.de/tiki-view_articles.php</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">XMLBuddy</font><br />版本：N/A<br />支持的 Eclipse 版本： 3.0<br />使用证书： Free &amp; commerce<br />开发状况： stable<br />公司： N/A<br />功能：这是个免费版本，很好用，试试就知道了。<br />主页：</font>
		<a href="http://www.xmlbuddy.com/">
				<a href="http://www.xmlbuddy.com/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.xmlbuddy.com/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">Doclipse</font><br />版本：N/A<br />支持的 Eclipse 版本： 3.0<br />使用证书： Free<br />开发状况： stable<br />公司： N/A<br />功能：看名字就知道了，在 eclipse 中使用 javadoc 标签的辅助工具。<br />主页：</font>
		<a href="http://www.beust.com/doclipse/">
				<a href="http://www.beust.com/doclipse/" target="_blank">
						<font face="Courier New" color="#5c5a5b" size="2">http://www.beust.com/doclipse/</font>
				</a>
		</a>
		<font face="Courier New" size="2"> <br /><br /><font color="#ff0000">jadclipse</font><br />版本：2.06<br />支持的 Eclipse 版本： 所有<br />使用证书： Free<br />开发状况： stable<br />公司： N/A<br />功能：很棒的工具，可以在 eclipse 中直接反编译 class 文件！ </font>
<img src ="http://www.blogjava.net/kemi/aggbug/74942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-10-13 11:16 <a href="http://www.blogjava.net/kemi/archive/2006/10/13/74942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AXIS For Web Service Step by Step (转)</title><link>http://www.blogjava.net/kemi/archive/2006/10/13/74922.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Fri, 13 Oct 2006 01:54:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/10/13/74922.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/74922.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/10/13/74922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/74922.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/74922.html</trackback:ping><description><![CDATA[
		<p>(CSdn上面的一个例程：<a href="http://topic.csdn.net/t/20050422/17/3959160.html">http://topic.csdn.net/t/20050422/17/3959160.html</a>)<br /><br />AXIS实现web服务配置部署简要流程<br />1：编写服务器端接口，并在&lt;webapp&gt;/WEB-INF/classes下编译。</p>
		<p>       javac –d . *.java</p>
		<p>2：在%APP_HOME%/webapp/WEB-INF目录下创建server-config.wsdd（AXIS配置文件，所有web服务都要在该文件中注册）文件。形如：</p>
		<p>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;deployment xmlns="<a href="http://xml.apache.org/axis/wsdd/">http://xml.apache.org/axis/wsdd/</a>" xmlns:java="<a href="http://xml.apache.org/axis/wsdd/providers/java">http://xml.apache.org/axis/wsdd/providers/java</a>"&gt; <br />          &lt;globalConfiguration&gt;  <br />                    &lt;parameter name="adminPassword" value="admin"/&gt;  <br />                    &lt;parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/&gt;  <br />                    &lt;parameter name="sendXsiTypes" value="true"/&gt;  <br />                    &lt;parameter name="sendMultiRefs" value="true"/&gt;  <br />                    &lt;parameter name="sendXMLDeclaration" value="true"/&gt;  <br />                    &lt;parameter name="axis.sendMinimizedElements" value="true"/&gt;  <br />                    &lt;requestFlow&gt;   <br />                               &lt;handler type="java:org.apache.axis.handlers.JWSHandler"&gt;    <br />                                         &lt;parameter name="scope" value="session"/&gt;   <br />                               &lt;/handler&gt;   <br />                               &lt;handler type="java:org.apache.axis.handlers.JWSHandler"&gt;    <br />                                         &lt;parameter name="scope" value="request"/&gt;    <br />                                         &lt;parameter name="extension" value=".jwr"/&gt;   <br />                               &lt;/handler&gt;  <br />                    &lt;/requestFlow&gt; <br />          &lt;/globalConfiguration&gt; <br />          &lt;handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/&gt; <br />          &lt;handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/&gt; <br />          &lt;handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/&gt;   <br /> <br />          &lt;service name="login" provider="java:RPC"&gt;  <br />                    &lt;!-- 服务类名 --&gt;     <br />                    &lt;parameter name="className" value="com.test.service.loginService"/&gt;  <br />                    &lt;!-- 允许访问所有方法 --&gt;  <br />                    &lt;parameter name="allowedMethods" value="*"/&gt; <br />          &lt;/service&gt;  <br />          &lt;transport name="http"&gt;  <br />                    &lt;requestFlow&gt;   <br />                               &lt;handler type="URLMapper"/&gt;   <br />                               &lt;handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/&gt;  <br />                    &lt;/requestFlow&gt; <br />          &lt;/transport&gt; <br />          &lt;transport name="local"&gt;  <br />                    &lt;responseFlow&gt;   <br />                               &lt;handler type="LocalResponder"/&gt;  <br />                    &lt;/responseFlow&gt; <br />          &lt;/transport&gt;<br />&lt;/deployment&gt;</p>
		<p> </p>
		<p>
				<br /> </p>
		<p>
				<br />注：server-config.wsdd文件也可以通过编写deploy.wsdd文件生成，具体方法为，在%APP_HOME%/webapp/WEB-INF目录下创建deploy.wsdd文件（SOAP发布描述文件），形如：</p>
		<p>&lt;deployment xmlns="<a href="http://xml.apache.org/axis/wsdd/">http://xml.apache.org/axis/wsdd/</a>" xmlns:java="<a href="http://xml.apache.org/axis/wsdd/providers/java">http://xml.apache.org/axis/wsdd/providers/java</a>"&gt;<br />    &lt;service name="login" provider="java:RPC"&gt;<br />        &lt;parameter name="className" value="LoginService"/&gt;<br />        &lt;parameter name="allowedMethods" value="*"/&gt;<br />    &lt;/service&gt;<br />&lt;/deployment&gt;<br />然后将相应服务器端class编译后在命令行输入：</p>
		<p>java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient deploy.wsdd<br />将在当前目录下生成server-config.wsdd文件。</p>
		<p>
				<br />完成以上操作后，可在浏览器中通过<a href="http://localhost:8080/axis/services/login?wsdl">http://localhost:8080/axis/services/login?wsdl</a> 访问该服务。<br /> </p>
		<p>
				<br />3：JAVA客户端实现：</p>
		<p>可以通过AXIS中的org.apache.axis.wsdl.WSDL2Java类将已发布的web服务进行客户端实例化，具体命令为：在%APP_HOME%/webapp/WEB-INF目录下命令行输入：</p>
		<p>Java -Djava.ext.dirs=lib org.apache.axis.wsdl.WSDL2Java url[YiWang1] </p>
		<p> </p>
		<p>命令执行后会在本地当前目录下生成以url为模版的package目录层次结构(如：local.axis.service.*),该目录中针对每个服务器端接口会自动生成4个本地类。</p>
		<p>其中：</p>
		<p>       inferface LoginService在客户端本地定义服务器接口的映射。</p>
		<p>       interface LoginServiceService定义了用于获得web服务的getter方法。</p>
		<p>       class LoginServiceServiceLocator具体实现LoginServiceService接口，保存了服务器的url等相关信息。</p>
		<p>       class LoginSoapBindingStub 具体实现LoginService，负责服务器交互。</p>
		<p> </p>
		<p>
				<br />（部署了web服务之后，如果接口不变而url发生改变，可以直接在客户端更新LoginServiceServiceLocator中有关服务器地址的相关信息，或者用配置文件的形式修改）</p>
		<p>编译以上几个类时需要axis.jar，jaxrpc.jar两个包，命令为：</p>
		<p>  javac -classpath lib\axis.jar;lib\jaxrpc.jar –d . *.java<br />编译成class后可以通过jar命令打包作为接口部署在客户端。</p>
		<p>
				<br />客户端测试例程：</p>
		<p>       如果通过java应用程序形式进行测试，命令为：</p>
		<p>        java -Djava.ext.dirs=lib -cp . package.class</p>
		<p>
				<br />--------------------------------------------------------------------------------</p>
		<p> [YiWang1]服务器通过Wsdl形式发布的web服务的完整url地址。<br /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/74922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-10-13 09:54 <a href="http://www.blogjava.net/kemi/archive/2006/10/13/74922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过AXIS工具直接从WSDL生成.CLASS</title><link>http://www.blogjava.net/kemi/archive/2006/10/12/74764.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Thu, 12 Oct 2006 04:44:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/10/12/74764.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/74764.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/10/12/74764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/74764.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/74764.html</trackback:ping><description><![CDATA[
		<p>命令：execute java org.apache.axis.wsdl.WSDL2Java 中文path\简体AddressBook中文.wsdl<br />注意在execute之前在系统环境变量classpaht里面配好Axis路径。<br />这样生成.class后就直接可以在JAVA BEAN里面调用了，呵呵，这样是不是更方便~~~<br />具体要做的，也就是完成stub的编写，注意SOAP头的内容。其他没什么。<br /><br /></p>
<img src ="http://www.blogjava.net/kemi/aggbug/74764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-10-12 12:44 <a href="http://www.blogjava.net/kemi/archive/2006/10/12/74764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse如何和MyEclipse整合？(通用插件方法)</title><link>http://www.blogjava.net/kemi/archive/2006/09/30/72965.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Sat, 30 Sep 2006 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/09/30/72965.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/72965.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/09/30/72965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/72965.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/72965.html</trackback:ping><description><![CDATA[
		<font face="Courier New" size="2">1.下载EC,我还是一直用的老版本3.1;这个去</font>
		<span lang="EN-US" style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: 'Times New Roman'; mso-fareast-font-family: 宋体; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">
				<a href="http://www.eclipse.org/downloads/index.php">
						<font face="Courier New" size="2">http://www.eclipse.org/downloads/index.php</font>
				</a>
				<font face="Courier New" size="2">能下到，解压后释放到G：\eclipse；<br />2.下载MyEC，我当然用的是针对3.1出的Version:030801.然后找到EC，安装到某处，如G:\MyEC;这时候将两个文件夹plugins,feathers拷到另处。然后Unitall MyEC.最后将刚才转移的两个文件夹复制会G:\eclipse。进入EC后，你能在window-perference里面清楚看到MyEclipse.剩下的就是破解了。在Subscription里面输入KEY，这里提供一个无限期的KEY：<br />    IceCraft                   VAR7ZL-819-56-54678656108018950<br />3.设置JDK位置，在MyEC中设置Application Server属性。OK！准备工作够简单吧，下面的开发就看能力了</font>
		</span>
<img src ="http://www.blogjava.net/kemi/aggbug/72965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-09-30 10:34 <a href="http://www.blogjava.net/kemi/archive/2006/09/30/72965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipseME:开始在插件海洋里探寻J2ME</title><link>http://www.blogjava.net/kemi/archive/2006/09/30/72962.html</link><dc:creator>Kimi</dc:creator><author>Kimi</author><pubDate>Sat, 30 Sep 2006 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/kemi/archive/2006/09/30/72962.html</guid><wfw:comment>http://www.blogjava.net/kemi/comments/72962.html</wfw:comment><comments>http://www.blogjava.net/kemi/archive/2006/09/30/72962.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/kemi/comments/commentRss/72962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/kemi/services/trackbacks/72962.html</trackback:ping><description><![CDATA[
		<p>本来一直打算始终坚持Jdeveloper的使用，不过对oracle东西依赖性太强，又因为J2ME的大环境考虑到eclipseMe的便利，于是又将拾起在daphne开发用过的EC，关注它曾经让我晕闷的芸芸插件。或许这是个契机，因为spring等框架在eclipse上的良好集成是公认的。<br />计划短期内涉足J2ME的开发～～敬请关注！吼吼</p>
<img src ="http://www.blogjava.net/kemi/aggbug/72962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/kemi/" target="_blank">Kimi</a> 2006-09-30 10:23 <a href="http://www.blogjava.net/kemi/archive/2006/09/30/72962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>