﻿<?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-ann-随笔分类-tool</title><link>http://www.blogjava.net/ann/category/39372.html</link><description>冰是没有未来的，因为它的永恒</description><language>zh-cn</language><lastBuildDate>Fri, 12 Jun 2009 21:33:25 GMT</lastBuildDate><pubDate>Fri, 12 Jun 2009 21:33:25 GMT</pubDate><ttl>60</ttl><item><title>jetty starter 不检查 端口是否被占用</title><link>http://www.blogjava.net/ann/archive/2009/06/12/281846.html</link><dc:creator>冰是没有未来的，因为它的永恒</dc:creator><author>冰是没有未来的，因为它的永恒</author><pubDate>Fri, 12 Jun 2009 07:15:00 GMT</pubDate><guid>http://www.blogjava.net/ann/archive/2009/06/12/281846.html</guid><wfw:comment>http://www.blogjava.net/ann/comments/281846.html</wfw:comment><comments>http://www.blogjava.net/ann/archive/2009/06/12/281846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ann/comments/commentRss/281846.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ann/services/trackbacks/281846.html</trackback:ping><description><![CDATA[<font  face="Arial" size="3"><span  style="border-collapse: collapse; font-size: 12px;">
<div style="background-color: #eeeeee; font-size: 13px; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">class</span><span style="color: #000000; ">&#160;RestaurantCenterJettyStarter&#160;{<br />
&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&#160;main(String[]&#160;args)&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&#160;start&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;System.currentTimeMillis();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;set&#160;up&#160;files&#160;and&#160;urls<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;URL[]&#160;urls;<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;urls&#160;=&#160;RefreshingURLClassLoader.getReloadableUrls();<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;deal&#160;with&#160;classloader<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ClassLoader&#160;parent&#160;=&#160;Thread.currentThread().getContextClassLoader();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;eclipse&#160;will&#160;recompile&#160;the&#160;class.&#160;so&#160;I&#160;disable&#160;this<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; "><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;for&#160;(int&#160;i&#160;=&#160;0;&#160;i&#160;&lt;&#160;files.length;&#160;i++)&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;File&#160;file&#160;=&#160;files[i];<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;CompilingClassLoader&#160;ccl&#160;=&#160;new&#160;CompilingClassLoader(parent,<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;file);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;ccl.start();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;parent&#160;=&#160;ccl;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;}<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;URLClassLoader&#160;urlCloader&#160;=&#160;new&#160;RefreshingURLClassLoader(urls,&#160;parent);<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Thread.currentThread().setContextClassLoader(urlCloader);<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;finally,&#160;start&#160;the&#160;server!</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Server&#160;server&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;Server();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;SelectChannelConnector&#160;connector&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;SelectChannelConnector();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;connector.setPort(</span><span style="color: #000000; ">8080</span><span style="color: #000000; ">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;connector.setReuseAddress(</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">); //<span  style="font-size: 12px; ">这样就不能重复启动同一个 jetty 了.&#160;</span><span  style="border-collapse: separate; color: #003366; font-size: 17px; font-weight: bold; ">jetty starter 不检查 端口是否被占用</span><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;server.setConnectors(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;Connector[]&#160;{&#160;connector&#160;});<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;WebAppContext&#160;wac4&#160;=&#160;new&#160;WebAppContext("./chatty",&#160;"/chatty");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;WebAppContext&#160;wac&#160;=&#160;new&#160;WebAppContext("/s100-webdata/photo",<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;"/photo");<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;WebAppContext&#160;wac2&#160;=&#160;new&#160;WebAppContext("/s100-webdata/photo",<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;"/video");</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;WebAppContext&#160;wac3&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;WebAppContext(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">./web</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">/RestaurantCenter</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;wac.setClassLoader(urlCloader);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;wac2.setClassLoader(urlCloader);<br />
</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;wac3.setClassLoader(urlCloader);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;wac4.setClassLoader(urlCloader);</span><span style="color: #008000; "><br />
</span><span style="color: #000000; "><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;ContextHandlerCollection&#160;contexts&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;ContextHandlerCollection();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;contexts.setHandlers(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;Handler[]&#160;{&#160;wac3,&#160;</span><span style="color: #008000; ">/*</span><span style="color: #008000; ">&#160;wac,&#160;wac2,wac4&#160;</span><span style="color: #008000; ">*/</span><span style="color: #000000; ">});&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;the<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;order<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;doesn't<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&#160;matter</span><span style="color: #008000; "><br />
</span><span style="color: #000000; "><br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;HandlerCollection&#160;handlers&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;HandlerCollection();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;handlers.setHandlers(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;Handler[]&#160;{&#160;contexts,&#160;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&#160;DefaultHandler()&#160;});<br />
<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;server.setHandler(handlers);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;server.start();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&#160;duration&#160;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&#160;System.currentTimeMillis()&#160;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&#160;start;<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">启动&#160;Jetty&#160;服务器&#160;in&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;duration&#160;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&#160;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">ms</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Web&#160;Service&#160;is&#160;@&#160;http://localhost:8080/RestaurantCenter/RestaurantWebService?wsdl</span><span style="color: #000000; ">"</span><span style="color: #000000; ">&#160;);<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}&#160;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&#160;(Exception&#160;e)&#160;{<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;e.printStackTrace();<br />
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<br />
<br />
&#160;&#160;&#160;&#160;}<br />
}<br />
<br />
</span></div>
</span></font>
<img src ="http://www.blogjava.net/ann/aggbug/281846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ann/" target="_blank">冰是没有未来的，因为它的永恒</a> 2009-06-12 15:15 <a href="http://www.blogjava.net/ann/archive/2009/06/12/281846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>本地文件上传到远程服务器的软件</title><link>http://www.blogjava.net/ann/archive/2009/05/22/277370.html</link><dc:creator>冰是没有未来的，因为它的永恒</dc:creator><author>冰是没有未来的，因为它的永恒</author><pubDate>Fri, 22 May 2009 08:55:00 GMT</pubDate><guid>http://www.blogjava.net/ann/archive/2009/05/22/277370.html</guid><wfw:comment>http://www.blogjava.net/ann/comments/277370.html</wfw:comment><comments>http://www.blogjava.net/ann/archive/2009/05/22/277370.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ann/comments/commentRss/277370.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ann/services/trackbacks/277370.html</trackback:ping><description><![CDATA[&#160;1. putty：
<div>&#160;&#160;http://the.earth.li/~sgtatham/putty/latest/x86/pscp.exe&#160;</div>
<div>上传的命令：PSCP.EXE -P62020 filename sigma@192.168.0.1:/home/sigma/&#160;</div>
<div>2.&#160;<span  style="font-family: Arial; font-size: 12px; ">使用 rsync, 能后进行差额同步, 大大减少文件传输量, 例如下面的命令本地的 dist 目录下面的 TakeoutServer.war 同步到远程服务器 etch1 的 ~ 目录 (home 目录)</span></div>
<span  style="font-family: Arial; font-size: 12px; "><br />
rsync -avz --delete --progress -e "ssh" dist/TakeoutServer.war etch1:~/</span>
<div><br />
</div>
<img src ="http://www.blogjava.net/ann/aggbug/277370.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ann/" target="_blank">冰是没有未来的，因为它的永恒</a> 2009-05-22 16:55 <a href="http://www.blogjava.net/ann/archive/2009/05/22/277370.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> FireDaemon Pro</title><link>http://www.blogjava.net/ann/archive/2009/05/04/268776.html</link><dc:creator>冰是没有未来的，因为它的永恒</dc:creator><author>冰是没有未来的，因为它的永恒</author><pubDate>Mon, 04 May 2009 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/ann/archive/2009/05/04/268776.html</guid><wfw:comment>http://www.blogjava.net/ann/comments/268776.html</wfw:comment><comments>http://www.blogjava.net/ann/archive/2009/05/04/268776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/ann/comments/commentRss/268776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/ann/services/trackbacks/268776.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; 最近做个j2se的程序，想安装为wins的service，老大介绍了一款不错的工具--<strong> </strong><strong> FireDaemon Pro</strong>。<br />
&nbsp;&nbsp; FireDaemon是为Microsoft
Windows准备的一个系统工具。通过FireDaemon，您可以将任意应用程序或脚本程序作为一个交互式或非交互式的Windows服务来运
行，FireDaemon支持的程序类型包括现有的32位或64位本地程序，以及脚本或说明语言（如Java, .NET, Perl,
BAT/CMD, Python, Ruby, TCL/TK）程序等。<br />
<br />
<br />
<img src ="http://www.blogjava.net/ann/aggbug/268776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/ann/" target="_blank">冰是没有未来的，因为它的永恒</a> 2009-05-04 11:12 <a href="http://www.blogjava.net/ann/archive/2009/05/04/268776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>