﻿<?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-开心小屋</title><link>http://www.blogjava.net/happyy2k/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 06:26:37 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 06:26:37 GMT</pubDate><ttl>60</ttl><item><title>安装个人Confluence 和 Mysql</title><link>http://www.blogjava.net/happyy2k/archive/2009/04/30/268265.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Wed, 29 Apr 2009 18:57:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2009/04/30/268265.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/268265.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2009/04/30/268265.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/268265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/268265.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 安装个人Confluence 和 Mysql&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2009/04/30/268265.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/268265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2009-04-30 02:57 <a href="http://www.blogjava.net/happyy2k/archive/2009/04/30/268265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用JMX-Adaptor  远程连接Tomcat</title><link>http://www.blogjava.net/happyy2k/archive/2009/04/24/267263.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Thu, 23 Apr 2009 20:34:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2009/04/24/267263.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/267263.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2009/04/24/267263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/267263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/267263.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用JMX-Adaptor  远程连接Tomcat&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2009/04/24/267263.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/267263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2009-04-24 04:34 <a href="http://www.blogjava.net/happyy2k/archive/2009/04/24/267263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Tomcat的jmx服务</title><link>http://www.blogjava.net/happyy2k/archive/2009/04/22/266881.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Tue, 21 Apr 2009 21:30:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2009/04/22/266881.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/266881.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2009/04/22/266881.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/266881.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/266881.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本文介绍了如何查看、使用Tomcat的JMX服务，并调用Tomcat的JMX，停止和启动Web应用。&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2009/04/22/266881.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/266881.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2009-04-22 05:30 <a href="http://www.blogjava.net/happyy2k/archive/2009/04/22/266881.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>下载Google Gadget  的方法</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/240627.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:25:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/240627.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/240627.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/240627.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/240627.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/240627.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Google Gadget  就是在iGoogle 页面上的那些小的工具。&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2008/11/15/240627.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/240627.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:25 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/240627.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>编写User Token Authentication 的 WS-Security client </title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/116076.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:08:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/116076.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/116076.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/116076.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/116076.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/116076.html</trackback:ping><description><![CDATA[<p style="font-size: 12pt">如果用XFire 实现WS-Secuiry 在<a href="http://xfire.codehaus.org/WS-Security">http://xfire.codehaus.org/WS-Security</a>&nbsp;<br />
<br />
下面说说如何写Client 去 调用User Token Authentication 的 WS-Security.<br />
<br />
1.用Xfire 根据WSDL 去生成 Client stub.<br />
通常,用eclipse的XFire plug-in, 里面有一个Code generation from WSDL document的Wizard.生成的java文件里通常有xxxxServiceClient.java xxxxServcie.java xxxxServiceImpl.java 等文件.<br />
</p>
如果不考虑WS-Security Client code 很容易写<br />
例如:
<p style="font-size: 12pt" align="left">xxxxServiceClient service = new xxxxxServiceClient();</p>
<p style="font-size: 12pt" align="left">xxxxService client = service.getxxxServiceHttpPort("<a href='http://localhost:8080/services/xxxxService");2' href_cetemp='http://localhost:8080/services/xxxxService");2'>http://localhost:8080/services/xxxxService");</p>
<br />
2</a>. 加WS-Security <br />
最好不要改XFire 生成的文件, 而是在自己的调用程序里增加.这样将来WSDL改变, 可以在用XFire 生成Code 而不影响自己的程序<br />
<p style="font-size: 12pt" align="left">xxxxServiceClient service = new xxxServiceClient();</p>
<p style="font-size: 12pt" align="left">xxxxService client = service.getxxxxServiceHttpPort("<a href='http://localhost:8080/services/xxxxService");' href_cetemp='http://localhost:8080/services/xxxxService");'><u><font color="#0000ff">http://localhost:8080/services/xxxxService");</font></u></a><br />
</p>
<font size="2"><font size="2">
<p style="font-size: 12pt">addWSSecurity(stallInfoClient);</p>
</font></font><font style="color: #000000" color="#7f0055" size="2">
<p style="font-size: 12pt" align="left"><span style="color: #000000">public void addWSSecurity(StallInfoService stallInfoService)<br />
</span>&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Client client = org.codehaus.xfire.client.Client.getInstance(stallInfoService);<br />
&nbsp;&nbsp;&nbsp;&nbsp; client.addOutHandler(new DOMOutHandler());<br />
&nbsp;&nbsp;&nbsp;&nbsp; Properties properties = new Properties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; configureOutProperties(properties);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WSS4JOutHandler wss4jOutHandler = new WSS4JOutHandler(properties);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: blue; background-color: white">Map props = wss4jOutHandler.getProperties();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PasswordHandler pwdHandler = new PasswordHandler();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pwdHandler.setPassword(password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; props.put(WSHandlerConstants.PW_CALLBACK_REF, pwdHandler);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wss4jOutHandler.setProperties(props);<br />
</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; client.addOutHandler(wss4jOutHandler);<br />
&nbsp;}<br />
protected void configureOutProperties(Properties config)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Action to perform : user token<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.setProperty(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Password type : plain text<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // for hashed password use:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //properties.setProperty(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // User name to send<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; config.setProperty(WSHandlerConstants.USER, username);</p>
<p style="font-size: 12pt" align="left">&nbsp;&nbsp;&nbsp; }<br />
public class PasswordHandler implements CallbackHandler {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private String password = " ";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public PasswordHandler() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void setPassword(String password) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this.password = password;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String uid = pc.getIdentifer();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc.setPassword(password);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
}<br />
</font>&nbsp;<br />
当使用<font style="color: #000000" color="#7f0055">WSHandlerConstants.PW_CALLBACK_REF Xfire 有缺陷, 如果不手动把 passwordhandler 加入wss4jOutHandler的properties里,&nbsp;将来是XFire无法调用自己的passwordhandler变量,&nbsp;&nbsp;WSHandlerConstants.PW_CALLBACK_CLASS 没有这个问题.<br />
<br />
通过这种方法,Client 就会在SOAP request 加入 security head.<br />
<br />
</font><font style="color: #000000" color="#7f0055">&lt;soap:Envelope xmlns:soap="<a href="http://schemas.xmlsoap.org/soap/envelope/">http://schemas.xmlsoap.org/soap/envelope/</a>" xmlns:xsd="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>"&gt;<br />
&lt;soap:Header&gt;<br />
<span style="color: red">&lt;wsse:Security soap:mustUnderstand="1" xmlns:wsse="</span><a href='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:usernametoken' href_cetemp='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><wsse:usernametoken'><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;wsse:UsernameToken</span></a><span style="color: red"> wsu:Id="UsernameToken-26235040" xmlns:wsse="</span><a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd</span></a><span style="color: red">" xmlns:wsu="</span><a href='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:username' href_cetemp='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsse:username'><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;wsse:Username</span></a><span style="color: red"> xmlns:wsse="</span><a href='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">username' href_cetemp='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">username'><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&gt;username</span></a><br />
<span style="color: red">&nbsp;&nbsp;&nbsp;&lt;/wsse:Username&gt;<br />
&nbsp;&nbsp;&nbsp;&lt;wsse:Password Type="</span><a href="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText</span></a><span style="color: red">" xmlns:wsse="</span><a href='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">password</wsse:password></wsse:usernametoken></wsse:security></soap:header><soap:body><getrequest' href_cetemp='http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">password</wsse:password></wsse:usernametoken></wsse:security></soap:header><soap:body><getrequest'><span style="color: red">http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"&gt;password<br />
&nbsp;&nbsp;&nbsp;&lt;/wsse:Password&gt;<br />
&lt;/wsse:UsernameToken&gt;<br />
&lt;/wsse:Security&gt;<br />
</span>&lt;/soap:Header&gt;<br />
&lt;soap:Body&gt;<br />
&lt;GetRequest</a> xmlns="<a href='http://ws.digitalpioneer.com/stallInfo">11</getlotrequest></soap:body></soap:envelope' href_cetemp='http://ws.digitalpioneer.com/stallInfo">11</getlotrequest></soap:body></soap:envelope'>...."&gt;11&lt;/GetRequest&gt;<br />
&lt;/soap:Body&gt;<br />
&lt;/soap:Envelope</a>&gt;</font></p>
  <img src ="http://www.blogjava.net/happyy2k/aggbug/116076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:08 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/116076.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DOS Here</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/119287.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:08:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/119287.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/119287.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/119287.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/119287.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/119287.html</trackback:ping><description><![CDATA[Dos here shell for Windows<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Windows&nbsp;Registry&nbsp;Editor&nbsp;Version&nbsp;</span><span style="COLOR: #000000">5.00</span><span style="COLOR: #000000">&nbsp;<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="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>@</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DOS&nbsp;Here</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<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="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box\command</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>@</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">hex(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">):</span><span style="COLOR: #000000">43</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4d</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2e</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">45</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">58</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">45</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2f</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4b</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">43</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">\&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>Windows&nbsp;Registry&nbsp;Editor&nbsp;Version&nbsp;</span><span style="COLOR: #000000">5.00</span><span style="COLOR: #000000">&nbsp;<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="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>@</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DOS&nbsp;Here</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;<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="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">HKEY_CLASSES_ROOT\Folder\shell\Open_DOS_Box\command</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>@</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">hex(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">):</span><span style="COLOR: #000000">43</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4d</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2e</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">45</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">58</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">45</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2f</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4b</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">43</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">\&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">25</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">00</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span></div>
  <img src ="http://www.blogjava.net/happyy2k/aggbug/119287.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:08 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/119287.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用Java Web Start 的经验</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/116349.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:07:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/116349.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/116349.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/116349.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/116349.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/116349.html</trackback:ping><description><![CDATA[看了 Swing 的<a class=postTitle2 id=viewpost1_TitleUrl href="http://www.blogjava.net/Swing/archive/2007/05/08/115898.html"><font color=#56b6e9>Java Web Start 学习</font></a> 正好自己也写了一个Java Application, 而同事是用Mac,他不太会设java 环境, 于是决定把自己的application 放在server 上, 用Java Web Start 技术,这样就方便别人使用.<br><br>1.keystore的有效时间<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">keytool&nbsp;-genkey&nbsp;-keystore&nbsp;myKeystore&nbsp;-alias&nbsp;jwstest&nbsp;-validity&nbsp;365</span></div>
用 -validity valDays 来设定, 缺省的是 6个月<br><br>2.Sign Jar文件<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">jarsigner&nbsp;-keystore&nbsp;myKeystore&nbsp;-storepass&nbsp;xxxx&nbsp;yourtest.jar&nbsp;jwstest</span></div>
直接用 storepass 传password 给jarsigner, 不需要每次单独输入, 很适合做批处理,对多个Jar一起sign. 因为用JWS,所以引用的Jar都需要Sign.<br><br>3. 引用的已经被别人Sign 过的Jar<br>如果不特殊处理,可能会遇到 Exception<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: red">JAR&nbsp;resources&nbsp;in&nbsp;JNLP&nbsp;file&nbsp;are&nbsp;not&nbsp;signed&nbsp;by&nbsp;same&nbsp;certificate</span></div>
验证JAR 是不是已经被sign 可以用-verfiy这个命令<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">jarsigner&nbsp;-certs&nbsp;-verbose&nbsp;-verify&nbsp;yourtest.jar</span></div>
<br>通常解决的办法是把这个Sign过的JAR 写成单独的JNLP, 然后在自己的主JNLP中引用它<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&lt;?xml&nbsp;version="1.0"&nbsp;encoding="UTF-8"?&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&lt;jnlp&nbsp;spec="1.0+"&nbsp;codebase="http://localhost:8080/webstart/"&nbsp;href="signedjar.jnlp"&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;information&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;title&gt;Signed&nbsp;Jar&lt;/title&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;vendor&gt;ABC&nbsp;Company&lt;/vendor&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;offline-allowed/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;/information&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;offline-allowed/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;<span style="COLOR: red">&lt;resources&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="signed.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&lt;/resources&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span>&nbsp;&nbsp;&nbsp;&lt;component-desc/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&lt;/jnlp&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></div>
<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><img src="http://www.blogjava.net/Images/dot.gif"><br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&lt;resources&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;j2se&nbsp;version="1.5+"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="jaxbw.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="substance.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="jaxb-api.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="jaxb-impl.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="jaxb-xjc.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;jar&nbsp;href="jsr173_api.jar"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="COLOR: red">&lt;extension&nbsp;name="signedjar"&nbsp;href="signedjar.jnlp"/&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top></span>&nbsp;&nbsp;&nbsp;&lt;/resources&gt;<br><img src="http://www.blogjava.net/Images/OutliningIndicators/None.gif" align=top><img src="http://www.blogjava.net/Images/dot.gif"></div>
<br><br>参考网站 <br><a href="http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/contents.html">http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/contents.html</a><br><a href="http://weblogs.java.net/blog/kirillcool/archive/2005/05/signing_jars_fo.html">http://weblogs.java.net/blog/kirillcool/archive/2005/05/signing_jars_fo.html</a><br>
  <img src ="http://www.blogjava.net/happyy2k/aggbug/116349.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:07 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/116349.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转换 xs:date 到 java.util.Date 的Tips</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/119862.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:06:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/119862.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/119862.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/119862.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/119862.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/119862.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 缺省情况JAXB2.0 XJC将xs:date 转换 为 XMLGregorianCalendar 本文讨论如何将xs:date转换 java.util.Date&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2008/11/15/119862.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/119862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:06 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/119862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于Acegi 增加portmapping 的方法</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/130951.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:06:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/130951.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/130951.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/130951.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/130951.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/130951.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Acegi缺省的port 映射是80->443 443->80 8080->8443 8443->8080 ...&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2008/11/15/130951.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/130951.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:06 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/130951.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 强制要求压缩 Response 的 检测</title><link>http://www.blogjava.net/happyy2k/archive/2008/11/15/151909.html</link><dc:creator>happyy2k</dc:creator><author>happyy2k</author><pubDate>Fri, 14 Nov 2008 23:05:00 GMT</pubDate><guid>http://www.blogjava.net/happyy2k/archive/2008/11/15/151909.html</guid><wfw:comment>http://www.blogjava.net/happyy2k/comments/151909.html</wfw:comment><comments>http://www.blogjava.net/happyy2k/archive/2008/11/15/151909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/happyy2k/comments/commentRss/151909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/happyy2k/services/trackbacks/151909.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 强制检查压缩response 的request header&nbsp;&nbsp;<a href='http://www.blogjava.net/happyy2k/archive/2008/11/15/151909.html'>阅读全文</a><img src ="http://www.blogjava.net/happyy2k/aggbug/151909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/happyy2k/" target="_blank">happyy2k</a> 2008-11-15 07:05 <a href="http://www.blogjava.net/happyy2k/archive/2008/11/15/151909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>