﻿<?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-从心开始-随笔分类-JAVA技术</title><link>http://www.blogjava.net/liyingcheng/category/22765.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 28 Jan 2008 17:07:16 GMT</lastBuildDate><pubDate>Mon, 28 Jan 2008 17:07:16 GMT</pubDate><ttl>60</ttl><item><title>系统时间修改方法</title><link>http://www.blogjava.net/liyingcheng/archive/2008/01/08/173840.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Tue, 08 Jan 2008 15:47:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2008/01/08/173840.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/173840.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2008/01/08/173840.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/173840.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/173840.html</trackback:ping><description><![CDATA[
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align="center">
				<b>
						<span lang="EN-US">java</span>
				</b>
				<b>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改系统时间方法</span>
						<span lang="EN-US">
								<?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 style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第一种方法：</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</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>
				<span lang="EN-US">jna.jar<span style="mso-spacerun: yes">                            </span></span>
		</p>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">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">Kernel32</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">接口<br /></span>
		</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: #0000ff">package</span>
				<span style="COLOR: #000000"> time.test;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> com.sun.jna.Native;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> com.sun.jna.Structure;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">import</span>
				<span style="COLOR: #000000"> com.sun.jna.win32.StdCallLibrary;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">interface</span>
				<span style="COLOR: #000000"> Kernel32 </span>
				<span style="COLOR: #0000ff">extends</span>
				<span style="COLOR: #000000"> StdCallLibrary<br /><img id="Codehighlighter1_168_598_Open_Image" onclick="this.style.display='none'; Codehighlighter1_168_598_Open_Text.style.display='none'; Codehighlighter1_168_598_Closed_Image.style.display='inline'; Codehighlighter1_168_598_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_168_598_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_168_598_Closed_Text.style.display='none'; Codehighlighter1_168_598_Open_Image.style.display='inline'; Codehighlighter1_168_598_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_168_598_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_168_598_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    Kernel32 INSTANCE </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> (Kernel32)Native.loadLibrary(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">kernel32</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">, Kernel32.</span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> SYSTEMTIME GetSystemTime();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> SetLocalTime(SYSTEMTIME localTime);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">static</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000"> SYSTEMTIME </span>
						<span style="COLOR: #0000ff">extends</span>
						<span style="COLOR: #000000"> Structure<br /><img id="Codehighlighter1_387_596_Open_Image" onclick="this.style.display='none'; Codehighlighter1_387_596_Open_Text.style.display='none'; Codehighlighter1_387_596_Closed_Image.style.display='inline'; Codehighlighter1_387_596_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_387_596_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_387_596_Closed_Text.style.display='none'; Codehighlighter1_387_596_Open_Image.style.display='inline'; Codehighlighter1_387_596_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_387_596_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_387_596_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">必须有这么多个字段,按这个顺序定义属性</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /> </span>
								<span style="COLOR: #000000">        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wYear;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wMonth;<br />             <span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000"> wDayOfWeek;</span><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wDay;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wHour;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wMinute;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wSecond;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">short</span>
								<span style="COLOR: #000000"> wMilliseconds;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />       </span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</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>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<span lang="EN-US">
						<font face="Times New Roman">b)</font>
				</span>
				<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">修改时间</span>
		</p>
		<p> </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: #0000ff">import</span>
				<span style="COLOR: #000000"> time.test.Kernel32.SYSTEMTIME;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> SysTimeSettingDaoImp<br /><img id="Codehighlighter1_74_735_Open_Image" onclick="this.style.display='none'; Codehighlighter1_74_735_Open_Text.style.display='none'; Codehighlighter1_74_735_Closed_Image.style.display='inline'; Codehighlighter1_74_735_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_74_735_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_74_735_Closed_Text.style.display='none'; Codehighlighter1_74_735_Open_Image.style.display='inline'; Codehighlighter1_74_735_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_74_735_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_74_735_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">protected</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setLocalTime(String time)<br /><img id="Codehighlighter1_119_733_Open_Image" onclick="this.style.display='none'; Codehighlighter1_119_733_Open_Text.style.display='none'; Codehighlighter1_119_733_Closed_Image.style.display='inline'; Codehighlighter1_119_733_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_119_733_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_119_733_Closed_Text.style.display='none'; Codehighlighter1_119_733_Open_Image.style.display='inline'; Codehighlighter1_119_733_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span id="Codehighlighter1_119_733_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_119_733_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />      </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000">time时间格式是14位的字符串，如"20080108152130"</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">        Short year </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">4</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Short month </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">4</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">6</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Short day </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">6</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">8</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Short hour </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">8</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">10</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Short minute </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">10</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">12</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Short second </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Short.parseShort(time.substring(</span>
								<span style="COLOR: #000000">12</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">14</span>
								<span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        SYSTEMTIME ss </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">new</span>
								<span style="COLOR: #000000"> SYSTEMTIME();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWYear(year);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWMonth(month);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWDay(day);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWHour(hour);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWMinute(minute);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        ss.setWSecond(second);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Kernel32 lib </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> Kernel32.INSTANCE;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        lib.SetLocalTime(ss);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</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>
		</div>
		<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt">
				<b>
						<span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">第二种方法</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p> </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: #0000ff">public</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000"> MyTimeClass<br /><img id="Codehighlighter1_25_840_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_840_Open_Text.style.display='none'; Codehighlighter1_25_840_Closed_Image.style.display='inline'; Codehighlighter1_25_840_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_25_840_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_840_Closed_Text.style.display='none'; Codehighlighter1_25_840_Open_Image.style.display='inline'; Codehighlighter1_25_840_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
				<span id="Codehighlighter1_25_840_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_25_840_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">timeAndDate格式位14位的字符串表示形式。</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">            </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">void</span>
						<span style="COLOR: #000000"> setLocalTime(String timeAndDate)<br /><img id="Codehighlighter1_110_339_Open_Image" onclick="this.style.display='none'; Codehighlighter1_110_339_Open_Text.style.display='none'; Codehighlighter1_110_339_Closed_Image.style.display='inline'; Codehighlighter1_110_339_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_110_339_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_110_339_Closed_Text.style.display='none'; Codehighlighter1_110_339_Open_Image.style.display='inline'; Codehighlighter1_110_339_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span id="Codehighlighter1_110_339_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_110_339_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            String date </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> getDate(timeAndDate);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            String time </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> getTime(timeAndDate);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            </span>
								<span style="COLOR: #008000">//</span>
								<span style="COLOR: #008000"> 修改系统日期和时间</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
								</span>
								<span style="COLOR: #000000">                            Runtime.getRuntime().exec(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">cmd /c date </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> date);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                            Runtime.getRuntime().exec(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">cmd /c time </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> time);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> String getDate(String timeAndDate)<br /><img id="Codehighlighter1_389_582_Open_Image" onclick="this.style.display='none'; Codehighlighter1_389_582_Open_Text.style.display='none'; Codehighlighter1_389_582_Closed_Image.style.display='inline'; Codehighlighter1_389_582_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_389_582_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_389_582_Closed_Text.style.display='none'; Codehighlighter1_389_582_Open_Image.style.display='inline'; Codehighlighter1_389_582_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span id="Codehighlighter1_389_582_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_389_582_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String year </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">0</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">4</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String month </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">4</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">6</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String day </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">6</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">8</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> year </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">-</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> month </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">-</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> day;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> String getTime(String timeAndDate)<br /><img id="Codehighlighter1_632_838_Open_Image" onclick="this.style.display='none'; Codehighlighter1_632_838_Open_Text.style.display='none'; Codehighlighter1_632_838_Closed_Image.style.display='inline'; Codehighlighter1_632_838_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_632_838_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_632_838_Closed_Text.style.display='none'; Codehighlighter1_632_838_Open_Image.style.display='inline'; Codehighlighter1_632_838_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span id="Codehighlighter1_632_838_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_632_838_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String hour </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">8</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">10</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String minute </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">10</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">12</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    String second </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> timeAndDate.substring(</span>
								<span style="COLOR: #000000">12</span>
								<span style="COLOR: #000000">, </span>
								<span style="COLOR: #000000">14</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                    </span>
								<span style="COLOR: #0000ff">return</span>
								<span style="COLOR: #000000"> hour </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">:</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> minute </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">:</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> second;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
						</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>
		</div>
		<p>Linux系统修改时间<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">
				<p>
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #000000">  String os </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> System.getProperty(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">os.name</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">).toLowerCase();</span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000">获取操作系统名称</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000">(os.indexOf(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">windows</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">) </span>
						<span style="COLOR: #000000">!=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">-</span>
						<span style="COLOR: #000000">1</span>
						<span style="COLOR: #000000">)<br /><img id="Codehighlighter1_102_295_Open_Image" onclick="this.style.display='none'; Codehighlighter1_102_295_Open_Text.style.display='none'; Codehighlighter1_102_295_Closed_Image.style.display='inline'; Codehighlighter1_102_295_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_102_295_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_102_295_Closed_Text.style.display='none'; Codehighlighter1_102_295_Open_Image.style.display='inline'; Codehighlighter1_102_295_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span>
						<span id="Codehighlighter1_102_295_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_102_295_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cmd </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">cmd /c time </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> timeStr;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    ProcessUtil.printErr(Runtime.getRuntime().exec(cmd));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cmd </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">cmd /c date </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> timeStr;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    ProcessUtil.printErr(Runtime.getRuntime().exec(cmd));<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: #0000ff">else</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_308_402_Open_Image" onclick="this.style.display='none'; Codehighlighter1_308_402_Open_Text.style.display='none'; Codehighlighter1_308_402_Closed_Image.style.display='inline'; Codehighlighter1_308_402_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
								<img id="Codehighlighter1_308_402_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_308_402_Closed_Text.style.display='none'; Codehighlighter1_308_402_Open_Image.style.display='inline'; Codehighlighter1_308_402_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />   </span>
						<span id="Codehighlighter1_308_402_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_308_402_Open_Text">
								<span style="COLOR: #000000">{  <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    cmd </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">date </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> timeStr; //timeStr时间到分，先写时间再写日期<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    ProcessUtil.printErr(Runtime.getRuntime().exec(cmd));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />   }<br /><br /><br />public class ProcessUtil {<br />    <br />    public static void printErr(Process p) {<br />        BufferedReader br = null;<br />        try {<br />            br = new BufferedReader(new InputStreamReader(p.getErrorStream()));<br />            String line = null;<br />            while ((line = br.readLine()) != null) {<br />                System.out.println(line);<br />            }<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        } finally {<br />            try {<br />                if (br != null)<br />                    br.close();<br />            } catch (Exception e) {<br />                e.printStackTrace();<br />            }<br />            p.destroy();<br />        }<br />    }<br />    <br />    public static void printConsole(Process p) {<br />        BufferedReader br = null;<br />        try {<br />            br = new BufferedReader(new InputStreamReader(p.getInputStream()));<br />            String line = null;<br />            while ((line = br.readLine()) != null) {<br />                System.out.println(line);<br />            }<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        } finally {<br />            try {<br />                if (br != null)<br />                    br.close();<br />            } catch (Exception e) {<br />                e.printStackTrace();<br />            }<br />        }<br />    }<br />    <br />    public static String getErrInfo(Process p) {<br />        StringBuffer sb = new StringBuffer();<br />        BufferedReader br = null;<br />        try {<br />            br = new BufferedReader(new InputStreamReader(p.getErrorStream()));<br />            String line = null;<br />            while ((line = br.readLine()) != null) {<br />                sb.append(line).append("\n");<br />            }<br />            return sb.toString();<br />        } catch (Exception e) {<br />            e.printStackTrace();<br />        } finally {<br />            try {<br />                if (br != null)<br />                    br.close();<br />            } catch (Exception e) {<br />                e.printStackTrace();<br />            }<br />        }<br />        return null;<br />    }</span>
						</span>
				</p>
				<p>
						<span>
								<span style="COLOR: #000000">}</span>
						</span>
				</p>
		</div>
		<p>
				<br /> </p>
<img src ="http://www.blogjava.net/liyingcheng/aggbug/173840.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2008-01-08 23:47 <a href="http://www.blogjava.net/liyingcheng/archive/2008/01/08/173840.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DBCP数据库连接池</title><link>http://www.blogjava.net/liyingcheng/archive/2007/11/05/158321.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Mon, 05 Nov 2007 10:15:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/11/05/158321.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/158321.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/11/05/158321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/158321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/158321.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: DBCP是Apache的一个开源项目：				commons.dbcp.jarhttp://jakarta.apache.org/commons/dbcp/index.htmlDBCP依赖Apache的另外2个开源项目commons.collections.jar和commons.pool.jar下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用...&nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/11/05/158321.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/158321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-11-05 18:15 <a href="http://www.blogjava.net/liyingcheng/archive/2007/11/05/158321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java多线程学习</title><link>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156175.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Fri, 26 Oct 2007 08:10:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156175.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/156175.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156175.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/156175.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/156175.html</trackback:ping><description><![CDATA[一：理解多线程 <br /><br />??多线程是这样一种机制，它允许在程序中并发执行多个指令流，每个指令流都称为一个线程，彼此间互相独立。 线程又称为轻量级进程，它和进程一样拥有独立的执行控制，由操作系统负责调度，区别在于线程没有独立的存储空间，而是和所属进程中的其它线程共享一个存储空间，这使得线程间的通信远较进程简单。 <br /><br />??多个线程的执行是并发的，也就是在逻辑上“同时”，而不管是否是物理上的“同时”。如果系统只有一个CPU，那么真正的“同时”是不可能的，但是由于CPU的速度非常快，用户感觉不到其中的区别，因此我们也不用关心它，只需要设想各个线程是同时执行即可。 <br />多线程和传统的单线程在程序设计上最大的区别在于，由于各个线程的控制流彼此独立，使得各个线程之间的代码是乱序执行的，由此带来的线程调度，同步等问题，将在以后探讨。 <br /><br />　　二：在Java中实现多线程 <br /><br />??我们不妨设想，为了创建一个新的线程，我们需要做些什么？很显然，我们必须指明这个线程所要执行的代码，而这就是在Java中实现多线程我们所需要做的一切！ <br /><br />??真是神奇！Java是如何做到这一点的？通过类！作为一个完全面向对象的语言，Java提供了类 java.lang.Thread 来方便多线程编程，这个类提供了大量的方法来方便我们控制自己的各个线程，我们以后的讨论都将围绕这个类进行。 <br /><br />??那么如何提供给 Java 我们要线程执行的代码呢？让我们来看一看 Thread 类。Thread 类最重要的方法是 run() ，它为Thread 类的方法 start() 所调用，提供我们的线程所要执行的代码。为了指定我们自己的代码，只需要覆盖它！ <br /><br />　　方法一：继承 Thread 类，覆盖方法 run()，我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面是一个例子： <br /><br />public class MyThread extends Thread { <br />　int count= 1, number; <br />　public MyThread(int num) { <br />　　number = num; <br />　　System.out.println("创建线程 " + number); <br />　} <br />　public void run() { <br />　　while(true) { <br />　　　System.out.println("线程 " + number + ":计数 " + count); <br />　　　if(++count== 6) return; <br />　　} <br />　} <br />　public static void main(String args[]) { <br />　　for(int i = 0; i 〈 5; i++) new MyThread(i+1).start(); <br />　} <br />} <br /><br />??这种方法简单明了，符合大家的习惯，但是，它也有一个很大的缺点，那就是如果我们的类已经从一个类继承（如小程序必须继承自 Applet 类），则无法再继承 Thread 类，这时如果我们又不想建立一个新的类，应该怎么办呢？ <br /><br />??我们不妨来探索一种新的方法：我们不创建 Thread 类的子类，而是直接使用它，那么我们只能将我们的方法作为参数传递给 Thread 类的实例，有点类似回调函数。但是 Java 没有指针，我们只能传递一个包含这个方法的类的实例。那么如何限制这个类必须包含这一方法呢？当然是使用接口！（虽然抽象类也可满足，但是需要继承，而我们之所以要采用这种新方法，不就是为了避免继承带来的限制吗？） <br />Java 提供了接口 java.lang.Runnable 来支持这种方法。 <br /><br />　　方法二：实现 Runnable 接口 <br /><br />??Runnable 接口只有一个方法 run()，我们声明自己的类实现 Runnable 接口并提供这一方法，将我们的线程代码写入其中，就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持，我们还必须创建 Thread 类的实例，这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是一个例子： <br /><br />public class MyThread implements Runnable { <br />　int count= 1, number; <br />　public MyThread(int num) { <br />　　number = num; <br />　　System.out.println("创建线程 " + number); <br />　} <br />　public void run() { <br />　　while(true) { <br />　　　System.out.println("线程 " + number + ":计数 " + count); <br />　　　if(++count== 6) return; <br />　　} <br />　} <br />　public static void main(String args[]) { <br />　　for(int i = 0; i 〈 5; i++) new Thread(new MyThread(i+1)).start(); <br />　} <br />} <br /><br />??严格地说，创建 Thread 子类的实例也是可行的，但是必须注意的是，该子类必须没有覆盖 Thread 类的 run 方法，否则该线程执行的将是子类的 run 方法，而不是我们用以实现Runnable 接口的类的 run 方法，对此大家不妨试验一下。 <br /><br />　　使用 Runnable 接口来实现多线程使得我们能够在一个类中包容所有的代码，有利于封装，它的缺点在于，我们只能使用一套代码，若想创建多个线程并使各个线程执行不同的代码，则仍必须额外创建类，如果这样的话，在大多数情况下也许还不如直接用多个类分别继承 Thread 来得紧凑。 <br /><br />　　综上所述，两种方法各有千秋，大家可以灵活运用。 <br /><br />　　下面让我们一起来研究一下多线程使用中的一些问题。 <br />　　三：线程的四种状态 <br /><br />　　1. 新状态：线程已被创建但尚未执行（start() 尚未被调用）。 <br /><br />　　2. 可执行状态：线程可以执行，虽然不一定正在执行。CPU 时间随时可能被分配给该线程，从而使得它执行。 <br /><br />　　3. 死亡状态：正常情况下 run() 返回使得线程死亡。调用 stop()或 destroy() 亦有同样效果，但是不被推荐，前者会产生异常，后者是强制终止，不会释放锁。 <br /><br />　　4. 阻塞状态：线程不会被分配 CPU 时间，无法执行。 <br /><br />　　四：线程的优先级 <br /><br />??线程的优先级代表该线程的重要程度，当有多个线程同时处于可执行状态并等待获得 CPU 时间时，线程调度系统根据各个线程的优先级来决定给谁分配 CPU 时间，优先级高的线程有更大的机会获得 CPU 时间，优先级低的线程也不是没有机会，只是机会要小一些罢了。 <br /><br />??你可以调用 Thread 类的方法 getPriority() 和 setPriority()来存取线程的优先级，线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间，缺省是5(NORM_PRIORITY)。 <br /><br />　　五：线程的同步 <br /><br />??由于同一进程的多个线程共享同一片存储空间，在带来方便的同时，也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突，有效避免了同一个数据对象被多个线程同时访问。 <br /><br />　　由于我们可以通过 private 关键字来保证数据对象只能被方法访问，所以我们只需针对方法提出一套机制，这套机制就是 synchronized 关键字，它包括两种用法：synchronized 方法和 synchronized 块。 <br /><br />　　1. synchronized 方法：通过在方法声明中加入 synchronized关键字来声明 synchronized 方法。如： <br /><br />public synchronized void accessVal(int newVal); <br /><br />　　synchronized 方法控制对类成员变量的访问：每个类实例对应一把锁，每个 synchronized 方法都必须获得调用该方法的类实例的锁方能执行，否则所属线程阻塞，方法一旦执行，就独占该锁，直到从该方法返回时才将锁释放，此后被阻塞的线程方能获得该锁，重新进入可执行状态。这种机制确保了同一时刻对于每一个类实例，其所有声明为 synchronized 的成员函数中至多只有一个处于可执行状态（因为至多只有一个能够获得该类实例对应的锁），从而有效避免了类成员变量的访问冲突（只要所有可能访问类成员变量的方法均被声明为 synchronized）。 <br /><br />　　在 Java 中，不光是类实例，每一个类也对应一把锁，这样我们也可将类的静态成员函数声明为 synchronized ，以控制其对类的静态成员变量的访问。 <br /><br />　　synchronized 方法的缺陷：若将一个大的方法声明为synchronized 将会大大影响效率，典型地，若将线程类的方法 run() 声明为 synchronized ，由于在线程的整个生命期内它一直在运行，因此将导致它对本类任何 synchronized 方法的调用都永远不会成功。当然我们可以通过将访问类成员变量的代码放到专门的方法中，将其声明为 synchronized ，并在主方法中调用来解决这一问题，但是 Java 为我们提供了更好的解决办法，那就是 synchronized 块。 <br /><br />　　2. synchronized 块：通过 synchronized关键字来声明synchronized 块。语法如下： <br /><br />synchronized(syncObject) { <br />//允许访问控制的代码 <br />} <br /><br />??synchronized 块是这样一个代码块，其中的代码必须获得对象 syncObject （如前所述，可以是类实例或类）的锁方能执行，具体机制同前所述。由于可以针对任意代码块，且可任意指定上锁的对象，故灵活性较高。 <br />  六：线程的阻塞 
<p>??为了解决对共享存储区的访问冲突，Java 引入了同步机制，现在让我们来考察多个线程对共享资源的访问，显然同步机制已经不够了，因为在任意时刻所要求的资源不一定已经准备好了被访问，反过来，同一时刻准备好了的资源也可能不止一个。为了解决这种情况下的访问控制问题，Java 引入了对阻塞机制的支持。 </p><p>??阻塞指的是暂停一个线程的执行以等待某个条件发生（如某资源就绪），学过操作系统的同学对它一定已经很熟悉了。Java 提供了大量方法来支持阻塞，下面让我们逐一分析。 </p><p>　　1. sleep() 方法：sleep() 允许 指定以毫秒为单位的一段时间作为参数，它使得线程在指定的时间内进入阻塞状态，不能得到CPU 时间，指定的时间一过，线程重新进入可执行状态。 </p><p>　　典型地，sleep() 被用在等待某个资源就绪的情形：测试发现条件不满足后，让线程阻塞一段时间后重新测试，直到条件满足为止。 </p><p>　　2. suspend() 和 resume() 方法：两个方法配套使用，suspend()使得线程进入阻塞状态，并且不会自动恢复，必须其对应的resume() 被调用，才能使得线程重新进入可执行状态。典型地，suspend() 和 resume() 被用在等待另一个线程产生的结果的情形：测试发现结果还没有产生后，让线程阻塞，另一个线程产生了结果后，调用 resume() 使其恢复。 </p><p>　　3. yield() 方法：yield() 使得线程放弃当前分得的 CPU 时间，但是不使线程阻塞，即线程仍处于可执行状态，随时可能再次分得 CPU 时间。调用 yield() 的效果等价于调度程序认为该线程已执行了足够的时间从而转到另一个线程。 </p><p>　　4. wait() 和 notify() 方法：两个方法配套使用，wait() 使得线程进入阻塞状态，它有两种形式，一种允许 指定以毫秒为单位的一段时间作为参数，另一种没有参数，前者当对应的 notify() 被调用或者超出指定时间时线程重新进入可执行状态，后者则必须对应的 notify() 被调用。 </p><p>??初看起来它们与 suspend() 和 resume() 方法对没有什么分别，但是事实上它们是截然不同的。区别的核心在于，前面叙述的所有方法，阻塞时都不会释放占用的锁（如果占用了的话），而这一对方法则相反。 </p><p>　　上述的核心区别导致了一系列的细节上的区别。 </p><p>??首先，前面叙述的所有方法都隶属于 Thread 类，但是这一对却直接隶属于 Object 类，也就是说，所有对象都拥有这一对方法。初看起来这十分不可思议，但是实际上却是很自然的，因为这一对方法阻塞时要释放占用的锁，而锁是任何对象都具有的，调用任意对象的 wait() 方法导致线程阻塞，并且该对象上的锁被释放。而调用 任意对象的notify()方法则导致因调用该对象的 wait() 方法而阻塞的线程中随机选择的一个解除阻塞（但要等到获得锁后才真正可执行）。 </p><p>??其次，前面叙述的所有方法都可在任何位置调用，但是这一对方法却必须在 synchronized 方法或块中调用，理由也很简单，只有在synchronized 方法或块中当前线程才占有锁，才有锁可以释放。同样的道理，调用这一对方法的对象上的锁必须为当前线程所拥有，这样才有锁可以释放。因此，这一对方法调用必须放置在这样的 synchronized 方法或块中，该方法或块的上锁对象就是调用这一对方法的对象。若不满足这一条件，则程序虽然仍能编译，但在运行时会出现IllegalMonitorStateException 异常。 </p><p>??wait() 和 notify() 方法的上述特性决定了它们经常和synchronized 方法或块一起使用，将它们和操作系统的进程间通信机制作一个比较就会发现它们的相似性：synchronized方法或块提供了类似于操作系统原语的功能，它们的执行不会受到多线程机制的干扰，而这一对方法则相当于 block 和wakeup 原语（这一对方法均声明为 synchronized）。它们的结合使得我们可以实现操作系统上一系列精妙的进程间通信的算法（如信号量算法），并用于解决各种复杂的线程间通信问题。 </p><p>　　关于 wait() 和 notify() 方法最后再说明两点： </p><p>??第一：调用 notify() 方法导致解除阻塞的线程是从因调用该对象的 wait() 方法而阻塞的线程中随机选取的，我们无法预料哪一个线程将会被选择，所以编程时要特别小心，避免因这种不确定性而产生问题。 </p><p>??第二：除了 notify()，还有一个方法 notifyAll() 也可起到类似作用，唯一的区别在于，调用 notifyAll() 方法将把因调用该对象的 wait() 方法而阻塞的所有线程一次性全部解除阻塞。当然，只有获得锁的那一个线程才能进入可执行状态。 </p><p>??谈到阻塞，就不能不谈一谈死锁，略一分析就能发现，suspend() 方法和不指定超时期限的 wait() 方法的调用都可能产生死锁。遗憾的是，Java 并不在语言级别上支持死锁的避免，我们在编程中必须小心地避免死锁。 </p><p>??以上我们对 Java 中实现线程阻塞的各种方法作了一番分析，我们重点分析了 wait() 和 notify() 方法，因为它们的功能最强大，使用也最灵活，但是这也导致了它们的效率较低，较容易出错。实际使用中我们应该灵活使用各种方法，以便更好地达到我们的目的。 </p><p>　　七：守护线程 </p><p>??守护线程是一类特殊的线程，它和普通线程的区别在于它并不是应用程序的核心部分，当一个应用程序的所有非守护线程终止运行时，即使仍然有守护线程在运行，应用程序也将终止，反之，只要有一个非守护线程在运行，应用程序就不会终止。守护线程一般被用于在后台为其它线程提供服务。 </p><p>　　可以通过调用方法 isDaemon() 来判断一个线程是否是守护线程，也可以调用方法 setDaemon() 来将一个线程设为守护线程。 </p><p>　　八：线程组 </p><p>??线程组是一个 Java 特有的概念，在 Java 中，线程组是类ThreadGroup 的对象，每个线程都隶属于唯一一个线程组，这个线程组在线程创建时指定并在线程的整个生命期内都不能更改。你可以通过调用包含 ThreadGroup 类型参数的 Thread 类构造函数来指定线程属的线程组，若没有指定，则线程缺省地隶属于名为 system 的系统线程组。 </p><p>??在 Java 中，除了预建的系统线程组外，所有线程组都必须显式创建。在 Java 中，除系统线程组外的每个线程组又隶属于另一个线程组，你可以在创建线程组时指定其所隶属的线程组，若没有指定，则缺省地隶属于系统线程组。这样，所有线程组组成了一棵以系统线程组为根的树。 </p><p>??Java 允许我们对一个线程组中的所有线程同时进行操作，比如我们可以通过调用线程组的相应方法来设置其中所有线程的优先级，也可以启动或阻塞其中的所有线程。 </p><p>　　Java 的线程组机制的另一个重要作用是线程安全。线程组机制允许我们通过分组来区分有不同安全特性的线程，对不同组的线程进行不同的处理，还可以通过线程组的分层结构来支持不对等安全措施的采用。Java 的 ThreadGroup 类提供了大量的方法来方便我们对线程组树中的每一个线程组以及线程组中的每一个线程进行操作。 </p><p>　　九：总结 </p><p>??在本文中，我们讲述了 Java 多线程编程的方方面面，包括创建线程，以及对多个线程进行调度、管理。我们深刻认识到了多线程编程的复杂性，以及线程切换开销带来的多线程程序的低效性，这也促使我们认真地思考一个问题：我们是否需要多线程？何时需要多线程？ </p><p>??多线程的核心在于多个代码块并发执行，本质特点在于各代码块之间的代码是乱序执行的。我们的程序是否需要多线程，就是要看这是否也是它的内在特点。 </p><p>??假如我们的程序根本不要求多个代码块并发执行，那自然不需要使用多线程；假如我们的程序虽然要求多个代码块并发执行，但是却不要求乱序，则我们完全可以用一个循环来简单高效地实现，也不需要使用多线程；只有当它完全符合多线程的特点时，多线程机制对线程间通信和线程管理的强大支持才能有用武之地，这时使用多线程才是值得的。<br /><br />转自：<a href="http://ssby.blogdriver.com/ssby/">http://ssby.blogdriver.com/ssby/</a></p><img src ="http://www.blogjava.net/liyingcheng/aggbug/156175.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-10-26 16:10 <a href="http://www.blogjava.net/liyingcheng/archive/2007/10/26/156175.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java常用学习（转载）</title><link>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156123.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Fri, 26 Oct 2007 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156123.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/156123.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/10/26/156123.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/156123.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/156123.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: JDBC初级应用实例(三)						发表人:wzh2352802 | 发表时间: 2007年一月23日, 13:53												再谈JDBC连结为什么要反复谈JDBC连结,因为所以JDBC的性能,最主要的就是JDBC连结,而SQL语句的优化,和JAVA编程无关,你的一个查询语句的效率,是你对于SQL语法的使用技巧,这一方面你就可请教DBA,而不是来看我这种程序设计...&nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/10/26/156123.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/156123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-10-26 13:52 <a href="http://www.blogjava.net/liyingcheng/archive/2007/10/26/156123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service （转载）</title><link>http://www.blogjava.net/liyingcheng/archive/2007/10/24/155602.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Wed, 24 Oct 2007 07:11:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/10/24/155602.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/155602.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/10/24/155602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/155602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/155602.html</trackback:ping><description><![CDATA[
		<div class="post">
				<div class="posthead">
						<h2>
								<a class="singleposttitle" id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html">
										<font color="#223355">在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service</font>
								</a>
						</h2>Posted on 2006-11-16 00:04 <a href="http://stephencat.cnblogs.com/"><font color="#223355">Stephen Wong</font></a> 阅读(1320) <a href="http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html#Post"><font color="#223355">评论(0)</font></a>  <a href="http://www.cnblogs.com/stephencat/admin/EditPosts.aspx?postid=561816"><font color="#223355">编辑</font></a>  <a id="lnkFavorite561816" onclick="Favorite(561816,'在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service','http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html',this);return false" href="http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html#"><font color="#223355">收藏</font></a> 所属分类: <a href="http://www.cnblogs.com/stephencat/category/52895.html"><font color="#223355">WebService</font></a> 、<a href="http://www.cnblogs.com/stephencat/category/54330.html"><font color="#223355">Java</font></a> 、<a href="http://www.cnblogs.com/stephencat/category/54347.html"><font color="#223355">J2EE</font></a> 、<a href="http://www.cnblogs.com/stephencat/category/75897.html"><font color="#223355">Java 开发环境</font></a><img height="1" src="http://www.cnblogs.com/stephencat/aggbug/561816.html?webview=1" width="1" /><!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
rdf:about="http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html"
dc:identifier="http://www.cnblogs.com/stephencat/archive/2006/11/16/561816.html"
dc:title="在 MyEclipse 5.1GA 上使用 XFire 编写 Web Service"
trackback:ping="http://www.cnblogs.com/stephencat/services/trackbacks/561816.aspx" />
</rdf:RDF>
--></div>
				<div class="postbody">   来源：<a href="http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml"><font color="#1d58d1">http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml</font></a>    （<font color="#ff0000">红色部分为实验批注</font>）<br /><br />附：MyEclipse 5.0 官方提供的<strong>图文教程</strong>：<br /><br /><a href="http://www.myeclipseide.com/ContentExpress-display-ceid-81.html#webservices"><font color="#1d58d1">http://www.myeclipseide.com/ContentExpress-display-ceid-81.html#webservices</font></a><br /><strong><br />   开发环境</strong><br />    Sun Java 5+ Eclipse 3.2 +MyEclipse 5.0.0. <br /><br />    <strong>概述</strong> <br /><br />    本文介绍了使用MyEclipse Web Service来迅速开发和测试一个HelloWorld Web Service,其中包括: <br />    1. 介绍了MyEclipse Web Services的基本概念 <br />    2. 创建一个MyEclipse Web Services工程 <br />    3. 创建一个简单的HelloWorld Web Service <br />    4. 在Web容器中,如Tomcat 5中部署Web Service <br />    5. 使用Web Services Explorer来测试部署的Web Services <br /><br />    XFire Java SOAP框架概述 <br />    MyEclipse Web Services是建立在XFire Java SOAP框架和工具基础上的, XFire是一款开源的Java SOAP框架。它拥有一个轻量级的信息处理模块，通过STAX来与SOAP信息相结合。提供了一个工作在Web Services下的简单API，支持POJO和schema开发. XFire支持 Web Services standards,Spring 整合, 支持JBI , 支持 JAXB ,XMLBeans,Java 5 和JAX-WS.并支持HTTP, JMS, XMPP, In-memory传输协议. <br /><br />    <strong>一. 创建Web Service工程</strong> <br /><br />    在MyEclipse 5.0中引入了一个新的工程类型即Web Service工程,该工程扩展了MyEclipse Web Project来支持额外的Web Service配置,开发和部署.本部分将使用Web Services Project wizard来创建和配置一个新的Web Service Projects Web Service Wizard将完成下列的动作: <br />    创建MyEclipse J2EE Web Project <br />    在工程中的web.xml文件中配置XFire Servlet <br />    创建XFire services.xml配置文件 <br />    在工程中的构建路径中添加MyEclipse-XFire类库 <br />    添加一个指定的MyEclipse web project builder到.projects文件,以便部署services.xml文件到它合适的位置.如: &lt;webroot&gt;/WEB-INF/classes/META-INF/xfire/ <br /><br />    运行Web Service Project Wizard <br />    该向导包括三个页面, Page-1搜集Web Project配置细节, Page-2搜集XFire配置细节, Page-3在新建的构建路径中配置XFire类库 <br />    1. 执行Web Services Project Wizard. <br />       1). 选择File&gt;New&gt;Other <br />       2). 扩展MyEclipse种类按照J2EE工程的种类 <br />       3). 选择Web Services Project然后点击Next,如图所示<br /><p align="center"><img height="429" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281328.jpg" width="355" /></p><br />    Figure-1: New Project Wizard Launcher <br />    2. 添加Project Name,点击Next <br /><p align="center"><img height="402" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281390.gif" width="450" /></p><br />    Figure-2: Page-2, Collecting web configuration details <br />    3.在向导的Page-2中添加XFire servlet和service.xml文件的配置信息,按照默认的值即可. <br /><p align="center"><img height="402" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281387.gif" width="450" /></p><br />    Figure-3: XFire servlet and services.xml configuration <br />    4.在向导的Page-3中选择类库添加到工程的构建路径中,其中XFire Core Library是需要的,如果要在工程中开发一个客户端应用, XFire HTTP Client Libraries也是需要的.<br /><p align="center"><img height="402" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281341.gif" width="450" /></p><br />    Figure-4: Selecting XFire libraries to add to new web service project buildpath <br /><br />    5选择Finish完成Web Service工程的创建过程 <br />    Figure-5,显示了新创建的HelloWorld Web Service工程的组织结构,Web Service 工程和一个标准的MyEclipse Web工程很相似. XFire Web Service配置元素如图红色区域显示: <br /><p align="center"><img height="345" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281313.jpg" width="450" /></p><br />    Figure-5: Web services artifacts of a new web service project <br /><br />   <strong> 二. 创建Web Service-Code-first Strategy <br /></strong>    在这部分将用MyEclipse Web Service Wizard并通过使用Code-first Strategy来创建一个HelloWorldService示例. <br /><br />    1. 执行MyEclipse Web Service Wizard,有两种方法来执行MyEclipse Web Service Wizard <br />    方法1.从MyEclipse perspective toolbar中来执行向导 <br />    在打开的Web Service Wizard上的workbench上来选择新Web Service按钮 <br />    方法2.从workbench menubar执行向导 <br />    1. 从workbench menubar选择: File&gt;New&gt;Other&gt;MyEclipse&gt;Web Service <br /><p align="center"><img height="598" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281383.gif" width="394" /></p><br />    Figure-6: Launching Web Service Wizard <br /><br />    2. 在Page-1选择HelloWorld 工程并选择Create web service from Java bean <br />    3. 选择Next到Page-2 <br /><p align="center"><img height="418" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281375.jpg" width="450" /></p><br />    Figure-7: Page-1 of new web service wizard<br /><br />    4. 填写Web Service的名字HelloWorldService <br />    5. 选择Java Source folder或者选择New按钮来新建一个source folder <br />    6. 填写Java package或者通过选择Browse按钮来选择一个已经存在的package.也可以选择New按钮来新建一个Java package <br />    注意:对Service接口和Service执行的类的默认值是基于所填入Web Service名字来产生的. <br />    7. 选择Next来初始化Web Service的创建过程<br /><p align="center"><img height="417" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281370.jpg" width="450" /></p><br />    Figure-8: Page-2 of new web service wizard. <br />    该向导产生了IHelloWorldService Java接口和HelloWorldServiceImpl Java类.并且在services.xml配置文件中创建了一个&lt;service&gt;实体(如图所示),注意到example(String message)方法在接口类中产生,当Web Service部署后作为一个测试操作. <br /><p align="center"><img height="254" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281316.jpg" width="450" /></p><br />    Figure-9: Newly created HelloWorld interface and implementation class <br /><br /><font color="#ff0000"><strong>Web Service 服务端服务接口代码</strong></font>：<br /><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"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.stephencat.ws;<br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Generated by MyEclipse</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">interface</span><span style="COLOR: #000000"> ISampleService {<br />    <br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String example(String message);<br />    <br />}</span></div><br /><font color="#ff0000"><strong>Web Service 服务端服务实现代码</strong></font>：<br /><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"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.stephencat.ws;<br /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Generated by MyEclipse</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SampleServiceImpl </span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000"> ISampleService {<br />    <br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String example(String message) {<br />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> message </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> This is Xfire !!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />    }<br />    <br />}</span></div><br />    <br /><strong>    三. 部署Web Service Project</strong> <br />    Web Service可以部署在任何MyEclipse支持的J2EE应用服务器上,该部分将演示如何在Tomcat 5 Web容器上部署HelloWorld工程. <br /><br />    3.1部署HelloWorld Web Service Project <br /><br />    Figure-10显示了如何部署HelloWorld应用. <br />    1. 从Server Manager中选择Deployer按钮(step-1) <br />    2. 在Server Deployments对话框中选择Add to create a new deployment (step-2) <br />    3. 在New Deployment对话框中选择HelloWorld工程并选择Exploded Archive选项 <br />    4. 在New Deployment对话框选择Finish来将HelloWorld在Tomcat 5默认的位置中打包为WAR <br />    5. 选择OK完成部署 <br /><p align="center"><img height="350" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281437.jpg" width="450" /></p><br />    Figure-10: Three-step deployment process <br />    新HelloWorld WAR部署将出现在Server Manager视图中Tomcat 5节点下. <br /><p align="center"><img height="115" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281480.jpg" width="450" /></p><br />    Figure-11: Servers Manager View depicting deployed HelloWorld web service project<br /><br />    四. 启动Tomcat服务器 （<font color="#ff0000"><strong>或 JBoss 服务器</strong></font>）<br /><br />    五. <strong>使用Web Service Explorer测试Web Service</strong> <br />    MyEclipse提供了一个Web Service Explorer来测试Web Service. <br />    1. 在MyEclipse perspective中选择toolbar button来执行Web Service Explorer <br /><p align="center"><img height="119" alt="" src="http://image.it168.com/cms/2006-10-28/image/Image00007(1).jpg" width="263" /></p><br />    Figure-15: Web Services Explorer launch button on workbench toolbar <br /><br />    2. 选择WSDL模式(Figure-16) <br />    3. 在活动面板中键入HelloWorldService <strong>WSDL文档的URL</strong><br /><font color="#0000ff"><br /><a href="http://localhost:8080/wstest/services/SampleService?WSDL"><font color="#1d58d1"><strong>http://localhost:8080/wstest/services/SampleService?WSDL</strong><br /></font></a></font><br />Web Service Explorer将下载自动产生的WSDL文档,该WSDL文档由XFire framework,并产生一系列的操作能够调用service. <br />    4. 在活动面板中选择example操作并在in0域中键入HelloWorld <br />    5. 选择Go按钮来调用在HelloWorldService上的example操作,,结果出现在Status面板上 <br /><p align="center"><img height="356" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281421.gif" width="450" /></p><br />    Figure-16: Web Services Explorer testing HelloWorldService <br /><br />    <strong>六. 创建Java Test客户端</strong> <br />    XFire提供了一个动态的代理框架,能够读取WSDL文档和创建潜在的消息服务使Java类来执行在Web Service的行为.该部分将为HelloWorld Web Service写一个Java Web Service客户端 <br />    6.1增加XFire类库配置 <br />    为了使example client能够在HelloWorld工程中运行,需要增加XFire HTTP Client类库到工程的构建路径中. <br />    1. 在Package Explore视图中右击HelloWorld工程选择Build Path&gt;Add Library <br />    2. 选择MyEclipse Libraries <br />    3. 选择XFire HTTP Client Libraries <br /><p align="center"><img height="484" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281407.jpg" width="370" /></p><br />    Figure-17: Choosing the XFire HTTP Client Libraries <br />    4. 选择Finish <br />    6.2创建HelloWorldClient类 <br />    执行Java类向导来创建HelloWorldClient类 <br /><p align="center"><img height="500" alt="" src="http://image.it168.com/cms/2006-10-28/image/0610281417.jpg" width="450" /></p><br />    Figure-18: HelloWorldClient defined in New Java Class Wizard. <br /><br />    <font color="#ff0000"><strong>Web Service 客户端代码</strong></font>如下: <br /><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"><span style="COLOR: #0000ff">package</span><span style="COLOR: #000000"> org.stephencat.ws;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.service.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.service.binding.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> org.codehaus.xfire.client.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> java.net.</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">;<br /><br /></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> SampleClient {<br /><br />    </span><span style="COLOR: #008000">/**</span><span style="COLOR: #008000"><br />     * </span><span style="COLOR: #808080">@param</span><span style="COLOR: #008000"> args<br />     </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> main(String[] args) {<br />        Service srvcModel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"><br />        ObjectServiceFactory().create(ISampleService.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br />        XFireProxyFactory factory </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br />           </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> XFireProxyFactory(XFireFactory.newInstance().getXFire());<br />        String url </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br />           </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/wstest/services/SampleService</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br />        </span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"> {<br />            ISampleService srvc </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (ISampleService)factory.create(srvcModel, url);<br />           String result </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> srvc.example(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello world</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />           System.out.print(result);<br />        } </span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000"> (MalformedURLException e){<br />           e.printStackTrace();<br />        }<br /><br /><br />    }<br /><br />}<br /></span></div><br />    该段代码定义了创建一个XFire web service proxy的过程,该代理支持POJO IHelloWorldService接口 <br /><br />    右键点击Run As&gt;Java Application或者Debug As&gt;JavaApplication来运行或调试该程序 <br /><div></div></div>
		</div>
<img src ="http://www.blogjava.net/liyingcheng/aggbug/155602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-10-24 15:11 <a href="http://www.blogjava.net/liyingcheng/archive/2007/10/24/155602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java相关文档下载地址</title><link>http://www.blogjava.net/liyingcheng/archive/2007/09/26/148317.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Wed, 26 Sep 2007 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/09/26/148317.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/148317.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/09/26/148317.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/148317.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/148317.html</trackback:ping><description><![CDATA[log4j，struts等下载地址<a href="http://hi.baidu.com/zbzb/blog/item/d71bfcedbd98464d79f055ba.html"><br />http://hi.baidu.com/zbzb/blog/item/d71bfcedbd98464d79f055ba.html</a><br /><br />jdk1.6帮助文档下载地址<br /><a href="http://gceclub.sun.com.cn/Java_Docs/jdk6/JDK_API_1_6_zh_CN.CHM"><font face="宋体" color="#666600">http://gceclub.sun.com.cn/Java_Docs/jdk6/JDK_API_1_6_zh_CN.CHM</font></a><img src ="http://www.blogjava.net/liyingcheng/aggbug/148317.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-09-26 14:07 <a href="http://www.blogjava.net/liyingcheng/archive/2007/09/26/148317.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse插件安装的两个方法</title><link>http://www.blogjava.net/liyingcheng/archive/2007/08/31/141747.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Fri, 31 Aug 2007 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/08/31/141747.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/141747.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/08/31/141747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/141747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/141747.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/08/31/141747.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/141747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-08-31 15:42 <a href="http://www.blogjava.net/liyingcheng/archive/2007/08/31/141747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>swt学习（转）</title><link>http://www.blogjava.net/liyingcheng/archive/2007/06/22/125811.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Fri, 22 Jun 2007 05:00:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/06/22/125811.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/125811.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/06/22/125811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/125811.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/125811.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: swt入门介绍&nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/06/22/125811.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/125811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-06-22 13:00 <a href="http://www.blogjava.net/liyingcheng/archive/2007/06/22/125811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>udp及tcp穿越NAT</title><link>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119169.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Tue, 22 May 2007 09:08:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119169.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/119169.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/119169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/119169.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/05/22/119169.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/119169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-05-22 17:08 <a href="http://www.blogjava.net/liyingcheng/archive/2007/05/22/119169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse和java 反编译工具合作 查看源代码</title><link>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119167.html</link><dc:creator>飘雪</dc:creator><author>飘雪</author><pubDate>Tue, 22 May 2007 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119167.html</guid><wfw:comment>http://www.blogjava.net/liyingcheng/comments/119167.html</wfw:comment><comments>http://www.blogjava.net/liyingcheng/archive/2007/05/22/119167.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liyingcheng/comments/commentRss/119167.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liyingcheng/services/trackbacks/119167.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/liyingcheng/archive/2007/05/22/119167.html'>阅读全文</a><img src ="http://www.blogjava.net/liyingcheng/aggbug/119167.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liyingcheng/" target="_blank">飘雪</a> 2007-05-22 17:05 <a href="http://www.blogjava.net/liyingcheng/archive/2007/05/22/119167.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>