﻿<?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天地-随笔分类-java</title><link>http://www.blogjava.net/toby/category/38380.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 16 May 2013 06:34:47 GMT</lastBuildDate><pubDate>Thu, 16 May 2013 06:34:47 GMT</pubDate><ttl>60</ttl><item><title>eclipse install record</title><link>http://www.blogjava.net/toby/archive/2013/05/16/399347.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Thu, 16 May 2013 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2013/05/16/399347.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/399347.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2013/05/16/399347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/399347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/399347.html</trackback:ping><description><![CDATA[1. eclipse<br /><div>http://www.eclipse.org/downloads/<br /><br />2.subclipse<br /><div>http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA</div><br />3.startexplorer<div>http://basti1302.github.io/startexplorer/<br /><br />4.m2eclipse<br /><div>http://wiki.eclipse.org/Maven_Integration</div><br />5.sonar<br /><div>http://dist.sonar-ide.codehaus.org/eclipse/</div><br />6.eclemma</div><div>http://update.eclemma.org/</div></div><img src ="http://www.blogjava.net/toby/aggbug/399347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2013-05-16 11:31 <a href="http://www.blogjava.net/toby/archive/2013/05/16/399347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven related knowledge</title><link>http://www.blogjava.net/toby/archive/2013/05/06/398857.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 06 May 2013 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2013/05/06/398857.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/398857.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2013/05/06/398857.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/398857.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/398857.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.mvn assembly:assemblymvn package -Dmaven.test.skip=true-Dtest=SplashTestmvn test -Dtest=Test***#mvn help:effective-pommvn dependency:treehttp://www.cnblogs.com/bigtall/archive/2011/03/23/1993253.htm...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2013/05/06/398857.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/398857.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2013-05-06 13:58 <a href="http://www.blogjava.net/toby/archive/2013/05/06/398857.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Subversion中的关键字替换</title><link>http://www.blogjava.net/toby/archive/2012/08/07/385005.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 07 Aug 2012 10:06:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/08/07/385005.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/385005.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/08/07/385005.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/385005.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/385005.html</trackback:ping><description><![CDATA[<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; line-height: 25.200000762939453px; background-color: #ffffff; ">1.先打开TortoiseSVN -&gt; Settings -&gt; General -&gt; Subversion configuration file 点击Edit&nbsp;</span>&nbsp;<br />2.*.java=svn:keywords=Author Date Id Rev URL<br /><br />3.文件中用 $Author$ &nbsp; &nbsp;$Date$ &nbsp;&nbsp;$Id$ &nbsp;&nbsp;$Rev$ &nbsp; &nbsp;&nbsp;$URL$ &nbsp;来替换<br /><br />4.示例：<br /><div>&nbsp;* $Author: xweixio $ &nbsp; &nbsp;</div><div>&nbsp;* $Date: 2012-08-07 18:12:14 +0800 (Tue, 07 Aug 2012) $ &nbsp;&nbsp;</div><div>&nbsp;* $Id: Test.java 924070 2012-08-07 10:12:14Z xweixio $ &nbsp;&nbsp;</div><div>&nbsp;* $Rev: 924070 $ &nbsp; &nbsp;&nbsp;</div><div>&nbsp;* $URL: http://150.236.80.220/dev/dgc/adcampaign/releases/2.1.0-139/src/java/com/drutt/tpim/Test.java $<br /><br /><br />5.下面是完整写法<br /><span style="color: #333333; font-family: 'Luxi Sans', 'Lucida Grande', Geneva, Verdana, sans; font-size: 12px; line-height: 18px; background-color: #e0e0c6; ">Subversion 中可以使用的 Keyword 包括下面这些。</span><ul style="list-style: square outside; margin: 0px 0px 0px 16px; padding: 1em 0px; color: #333333; font-family: 'Luxi Sans', 'Lucida Grande', Geneva, Verdana, sans; font-size: 12px; line-height: 18px; background-color: #e0e0c6; "><li><strong>Id</strong><br />这是一种综合的格式，例如&#8220;$Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $&#8221;。</li><li><strong>LastChangedDate</strong><br />最后被修改的时间，这个属性也可以缩写为 Date。</li><li><strong>LastChangedBy</strong><br />最后修改该源代码文件的用户名，这个属性也可以被缩写为 Author。</li><li><strong>LastChangedRevision</strong><br />最后修订的版本号，这个属性也可以被缩写为 Revision 或者 Rev。</li><li><strong>HeadURL</strong><br />该源代码文件所位于的 Repository 上的绝对 URL 地址，这个属性也可以被缩写为 URL。</li></ul></div><img src ="http://www.blogjava.net/toby/aggbug/385005.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-08-07 18:06 <a href="http://www.blogjava.net/toby/archive/2012/08/07/385005.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>记录</title><link>http://www.blogjava.net/toby/archive/2012/03/31/373169.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Sat, 31 Mar 2012 15:20:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/03/31/373169.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/373169.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/03/31/373169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/373169.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/373169.html</trackback:ping><description><![CDATA[<strong>一、有没有写过自定义classloader<br />二、本地去更新远程服务器上容器代码的方法<br />三、两个对象的hashcode一样说明就是同一个对象吗<br />四、</strong><a href="http://sakyone.iteye.com/blog/668091" style="color: #006600; "><strong>java中关键字volatile的作用</strong><br /><p style="line-height: 20px; color: #648c5f; font-family: Arial; font-size: 12px; letter-spacing: 2px; background-color: #abe284; ">一般说来,volatile用在如下的几个地方：</p><p style="line-height: 20px; color: #648c5f; font-family: Arial; font-size: 12px; letter-spacing: 2px; background-color: #abe284; ">1、中断服务程序中修改的供其它程序检测的变量需要加volatile;</p><p style="line-height: 20px; color: #648c5f; font-family: Arial; font-size: 12px; letter-spacing: 2px; background-color: #abe284; ">2、多任务环境下各任务间共享的标志应该加volatile;</p><p style="line-height: 20px; color: #648c5f; font-family: Arial; font-size: 12px; letter-spacing: 2px; background-color: #abe284; ">3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;</p><p style="line-height: 20px; color: #648c5f; font-family: Arial; font-size: 12px; letter-spacing: 2px; background-color: #abe284; ">另外,以上这几种情况经常还要同时考虑数据的完整性（相互关联的几个标志读了一半被打断了重写）,在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。<br style="line-height: normal; " /><br style="line-height: normal; " />其实Volatile是由于编译器优化所造成的一个Bug而引入的关键字。<br style="line-height: normal; " />int a = 10;<br style="line-height: normal; " />int b = a;<br style="line-height: normal; " />int c = a;<br style="line-height: normal; " />理论上来讲每次使用a的时候都应该从a的地址来读取变量值，但是这存在一个效率问题，就是每次使用a都要去内存中取变量值，然后再通过系统总线传到CPU 处理，这样开销会很大。所以那些编译器优化者故作聪明，把a读进CPU的cache里，像上面的代码，假如a在赋值期间没有被改变，就直接从CPU的 cache里取a的副本来进行赋值。但是bug也显而易见，当a在赋给b之后，可能a已经被另一个线程改变而重新写回了内存，但这个线程并不知道，依旧按 照原来的计划从CPU的cache里读a的副本进来赋值给c，结果不幸发生了。<br style="line-height: normal; " />于是编译器的开发者为了补救这一bug，提供了一个Volatile让开发人员为他们的过失埋单，或者说提供给开发人员了一个选择效率的权利。当变量加上了Volatile时，编译器就老老实实的每次都从内存中读取这个变量值，否则就还按照优化的方案从cache里读</p></a><strong>五、spring在项目中的应用，版 本<br />六、maven的好处<br />七、硬引用和软引用区别 &nbsp; 强引用和弱引用区别</strong><br /><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><strong>1．强引用</strong><br />&nbsp;&nbsp;&nbsp; 本章前文介绍的引用实际上都是强引用，这是使用最普遍的引用。如果一个对象具有强引用，那就类似于必不可少的生活用品，垃圾回收器绝不会回收它。当内存空 间不足，<a target="_blank" href="http://java.chinaitlab.com/" style="color: #5fa207; text-decoration: none; ">Java</a>虚拟机宁愿抛出OutOfMemoryError错误，使程序异常终止，也不会靠随意回收具有强引用的对象来解决内存不足问题。</p><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><br /><strong>2．软引用（SoftReference）</strong></p><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; ">&nbsp;&nbsp;&nbsp; 如果一个对象只具有软引用，那就类似于可有可物的生活用品。如果内存空间足够，垃圾回收器就不会回收它，如果内存空间不足了，就会回收这些对象的内存。只要垃圾回收器没有回收它，该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存。<br />软引用可以和一个引用队列（ReferenceQueue）联合使用，如果软引用所引用的对象被垃圾回收，<a target="_blank" href="http://java.chinaitlab.com/" style="color: #5fa207; text-decoration: none; ">Java</a>虚拟机就会把这个软引用加入到与之关联的引用队列中。</p><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><strong>3．弱引用（WeakReference）</strong><br />&nbsp;&nbsp;&nbsp; 如果一个对象只具有弱引用，那就类似于可有可物的生活用品。弱引用与软引用的区别在于：只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它 所管辖的内存区域的过程中，一旦发现了只具有弱引用的对象，不管当前内存空间足够与否，都会回收它的内存。不过，由于垃圾回收器是一个优先级很低的线程， 因此不一定会很快发现那些只具有弱引用的对象。&nbsp;<br />弱引用可以和一个引用队列（ReferenceQueue）联合使用，如果弱引用所引用的对象被垃圾回收，Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。</p><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><br /><strong>4．虚引用（PhantomReference）</strong><br />&nbsp;&nbsp;&nbsp; "虚引用"顾名思义，就是形同虚设，与其他几种引用都不同，虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用，那么它就和没有任何引用一样，在任何时候都可能被垃圾回收。<br />虚引用主要用来跟踪对象被垃圾回收的活动。虚引用与软引用和弱引用的一个区别在于：虚引用必须和引用队列（ReferenceQueue）联合使用。当垃 圾回收器准备回收一个对象时，如果发现它还有虚引用，就会在回收对象的内存之前，把这个虚引用加入到与之关联的引用队列中。程序可以通过判断引用队列中是 否已经加入了虚引用，来了解</p><p style="color: #333333; font-family: Arial; text-align: left; background-color: #ffffff; margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; ">&nbsp;&nbsp;&nbsp; 被引用的对象是否将要被垃圾回收。程序如果发现某个虚引用已经被加入到引用队列，那么就可以在所引用的对象的内存被回收之前采取必要的行动。<br /><br /></p><strong>八、行业网关主要的业务是什么<br />九、客户经理发展的主要产品有哪些<br />十、webservice服务端具体开发<br /></strong><div>String webserviceurl = "http://wt.lmobile.cn:6003/submitdata/MmsWebInterface.asmx"; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>MmsWebInterfaceLocator mwifl = new MmsWebInterfaceLocator();</div><div>MmsWebInterfaceSoap mwifs = mwifl.getMmsWebInterfaceSoap(new java.net.URL(webserviceurl));<br /><br /><div>http://apps.hi.baidu.com/share/detail/23852724</div></div><strong><br />十一、java虚拟机中的内存模型及主要算法。堆栈区别<br />十二、.net和java中传输基本类型时大端及小端避免办法<br />十三、sessioin和cookie区别<br />十四、hash实现对key和value的排序<br />十五、如何在代码中中断一个线程任务<br />十六、动态代理和cglig区别<br />十七、java中是值传递还是引用传递<br />十八、java中集合类底层数据结构<br />十九、threadlocal解释<br />二十、状态模式、责任链模式、适配器模式、观察者模式、工厂方法、抽象工厂，各属于创建型、行为型还是什么型<br />二十一、面象对象设计原则<br />二十二、uml各图，特别是时序图<br />二十四、敏捷快发理解<br />二十五、写一个编译器最快算法(a+(b*c))*(d+e)正确，而))a+c则出错<br />二十六、linix中软链接和硬链接区别，&gt; &gt;&gt; 的区别，找出一个文件中第四行和第五行的命令<br /></strong><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: mceinline; ">1. 软连接（符号链接） ln -s&nbsp;&nbsp; source&nbsp; target &nbsp;</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: mceinline; ">2. 硬链接 ln source target &nbsp;&nbsp;<br /></span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-family: mceinline; ">知道了inode的作用就不难理解软硬链接的区别了。</span></p><ol><li><span style="font-family: mceinline; ">软连接相当于快捷方式，如果打开并修改软连接，相应的文件也会随之改变。但是如果删除软连接，源文件并不会受到影响。</span></li><li><span style="font-family: mceinline; ">硬链接有点像引用和指针的结合，当打开和修改它时，相应的文件随之改变，但是所有这个文件的硬链接的内容也随之改变，这是因为所有的硬链接都拥有唯一的一个 inode 号，他们指向的是同一文件。</span></li><li><span style="font-family: mceinline; ">软连接可以跨文件系统创建，也就是可以在某个分区中创建到另外一个分区的软连接</span></li><li><span style="font-family: mceinline; ">硬链接则只能在本文件系统中使用（想想为什么？），其实原理很简单，因为 inode 是这个文件在当前分区中的索引值，是相对于这个分区的，当然不能跨越文件系统了。</span></li><li><span style="font-family: mceinline; ">最后一个区别是软连接可以连接任何文件或者文件夹，而硬链接则只能在文件之间创建<br />&gt; 输出重定向，内容会全部覆盖 &nbsp; &nbsp; &nbsp; &gt;&gt;是追加&nbsp;<br /></span>&nbsp;<span style="color: #555555; font-family: 宋体, 'Arial Narrow', arial, serif; line-height: 28px; background-color: #ffffff; ">sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行</span></li></ol><strong>二十七、java基础方面书籍<br />二十八、加强英文<br />二十九、jdk5和jdk6的新特性<br /></strong><div>netstat -ano | findstr "1433"</div><strong> </strong><img src ="http://www.blogjava.net/toby/aggbug/373169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-03-31 23:20 <a href="http://www.blogjava.net/toby/archive/2012/03/31/373169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重构JDK中的decode方法</title><link>http://www.blogjava.net/toby/archive/2012/03/20/372298.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 20 Mar 2012 09:39:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/03/20/372298.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/372298.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/03/20/372298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/372298.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/372298.html</trackback:ping><description><![CDATA[<div><span style="white-space:pre">在实际使用时会存在.net语言中的encode。然后java中decode出来的结果不一样，以下为解决办法	<br /></span>/**</div><div><span style="white-space:pre">	</span> * add by</div><div><span style="white-space:pre">	</span> * @param str</div><div><span style="white-space:pre">	</span> * @param enc</div><div><span style="white-space:pre">	</span> * @return</div><div><span style="white-space:pre">	</span> * @throws UnsupportedEncodingException</div><div><span style="white-space:pre">	</span> */</div><div><span style="white-space:pre">	</span>public static String decode(String str, String enc) throws UnsupportedEncodingException{</div><div><span style="white-space:pre">		</span>if (enc.length() == 0) {</div><div><span style="white-space:pre">		</span> &nbsp; &nbsp;throw new UnsupportedEncodingException ("URLDecoder: empty string enc parameter");</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>List l = new LinkedList();</div><div><span style="white-space:pre">		</span>int strLen = str.length();</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>for(int i=0;i&lt;strLen;++i){</div><div><span style="white-space:pre">			</span>char c = str.charAt(i);</div><div><span style="white-space:pre">			</span>switch (c) {</div><div><span style="white-space:pre">				</span>case '+':</div><div><span style="white-space:pre">					</span>l.add((byte)' ');</div><div><span style="white-space:pre">				</span>break;</div><div><span style="white-space:pre">				</span>case '%':</div><div><span style="white-space:pre">					</span>byte b = (byte)Integer.parseInt(str.substring(i+1, i+3),16);</div><div><span style="white-space:pre">					</span>l.add(b);</div><div><span style="white-space:pre">					</span>i+=2;</div><div><span style="white-space:pre">				</span>break;</div><div><span style="white-space:pre">				</span>default:</div><div><span style="white-space:pre">					</span>l.add((byte)str.charAt(i));</div><div><span style="white-space:pre">				</span>break;</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>byte[] bs = new byte[l.size()];</div><div><span style="white-space:pre">		</span>for(int i=0;i&lt;l.size();++i)</div><div><span style="white-space:pre">			</span>bs[i] = (Byte)l.get(i);</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>return new String(bs,enc);</div><div><span style="white-space:pre">	</span>}</div><img src ="http://www.blogjava.net/toby/aggbug/372298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-03-20 17:39 <a href="http://www.blogjava.net/toby/archive/2012/03/20/372298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>另一种责任链实现模式</title><link>http://www.blogjava.net/toby/archive/2012/03/15/371916.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Thu, 15 Mar 2012 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/03/15/371916.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/371916.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/03/15/371916.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/371916.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/371916.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">package</span>&nbsp;com.toby.zerenliang;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">interface</span>&nbsp;IHandle&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;逻辑处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;mtMsg&nbsp;&nbsp;&nbsp;&nbsp;MT数据&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;成功返回true,否则false<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;process(MtMsg&nbsp;mtMsg);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;增加下级Handler.寄主Handler可以看情况调用该下级Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;hdl&nbsp;&nbsp;&nbsp;&nbsp;下级Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@return</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;下级Handler<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;IHandle&nbsp;addNextHandler(IHandle&nbsp;hdl);<br />}<br /><br /><br /><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; 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; ">package</span>&nbsp;com.toby.zerenliang;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;MtMsg&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;age;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;String&nbsp;name;<br />}<br /><br /><br /><br /><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; 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; ">package</span>&nbsp;com.toby.zerenliang;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;OneHandler&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;IHandle&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;IHandle&nbsp;nextHdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;IHandle&nbsp;addNextHandler(IHandle&nbsp;hdl)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.nextHdl&nbsp;=&nbsp;hdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">this</span>.nextHdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;process(MtMsg&nbsp;mtMsg)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;业务逻辑处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("业务逻辑处理one");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(nextHdl&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nextHdl.process(mtMsg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><br /><br /><br /><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; 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; ">package</span>&nbsp;com.toby.zerenliang;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;TwoHandler&nbsp;<span style="color: #0000FF; ">implements</span>&nbsp;IHandle&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">private</span>&nbsp;IHandle&nbsp;nextHdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;IHandle&nbsp;addNextHandler(IHandle&nbsp;hdl)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">this</span>.nextHdl&nbsp;=&nbsp;hdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">this</span>.nextHdl;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">boolean</span>&nbsp;process(MtMsg&nbsp;mtMsg)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;业务逻辑处理<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("业务逻辑处理two");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>(nextHdl&nbsp;!=&nbsp;<span style="color: #0000FF; ">null</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;nextHdl.process(mtMsg);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;<span style="color: #0000FF; ">true</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br /><br /><br /><br /><div style="border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; border-image: initial; 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; ">package</span>&nbsp;com.toby.zerenliang;<br /><br /><span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">class</span>&nbsp;Test&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #008000; ">/**</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;</span><span style="color: #808080; ">@param</span><span style="color: #008000; ">&nbsp;args<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">*/</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">public</span>&nbsp;<span style="color: #0000FF; ">static</span>&nbsp;<span style="color: #0000FF; ">void</span>&nbsp;main(String[]&nbsp;args)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MtMsg&nbsp;mm&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;MtMsg();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mm.age&nbsp;=&nbsp;17;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mm.name&nbsp;=&nbsp;"名字";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IHandle&nbsp;iHandle&nbsp;=&nbsp;<span style="color: #0000FF; ">new</span>&nbsp;OneHandler();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iHandle.addNextHandler(<span style="color: #0000FF; ">new</span>&nbsp;TwoHandler());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iHandle.process(mm);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}</div></div></div></div></div><img src ="http://www.blogjava.net/toby/aggbug/371916.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-03-15 11:18 <a href="http://www.blogjava.net/toby/archive/2012/03/15/371916.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jstat,jmap,jconsole,jvisualvm,jps,jinfo等JDK系统监控、性能调优工具</title><link>http://www.blogjava.net/toby/archive/2012/02/07/369544.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 07 Feb 2012 09:02:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/02/07/369544.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/369544.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/02/07/369544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/369544.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/369544.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<div>jmap -heap:format=b pid &nbsp; bin格式 &nbsp;javaversion 1.5</div>
<div>jmap -dump:format=b,file=filename pid javaversion &gt;1.6</div>
<div><br />
<br />
工具名称：IBM HeapAnalyzer<br />
<br />
<span style="color: #666666; font-family: Arial; ">
<p>JProfiler在java程序性能调试方便表现优越，推荐使用。也可使用下面jdk自己的一些工具。</p>
<p>所有工具都在JDK/bin目录下， jconsole和jvisualvm为GUI图形化工具，其他为命令行。</p>
<p>jvisualvm: GUI工具，可监控、性能评估、故障诊断主机上所有java进程的cpu，内存，线程使用情况，类似于JProfiler，严重推荐。</p>
<p>jinfo:可以输出并修改运行时的java 进程的opts。</p>
<p>jps:与unix上的ps类似，用来显示本地的java进程，可以查看本地运行着几个java程序，并显示他们的进程号。</p>
<p>jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。</p>
<p>jmap:打印出某个java进程（使用pid）内存内的，所有&#8216;对象&#8217;的情况（如：产生那些对象，及其数量）。</p>
<p>jconsole:一个java GUI监视工具，可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。</p>
<p>jstat工具特别强大，有众多的可选项，详细查看堆内各个部分的使用量，以及加载类的数量。使用时，需加上查看进程的进程id，和所选参数。以下详细介绍各个参数的意义。</p>
<p>jstat -class pid:显示加载class的数量，及所占空间等信息。<br />
jstat -compiler pid:显示VM实时编译的数量等信息。<br />
jstat -gc pid:可以显示gc的信息，查看gc的次数，及时间。其中最后五项，分别是young gc的次数，young gc的时间，full gc的次数，full gc的时间，gc的总时间。<br />
jstat -gccapacity:可以显示，VM内存中三代（young,old,perm）对象的使用和占用大小，如：PGCMN显示的是最小perm的内存使用量，PGCMX显示的是perm的内存最大使用量，PGC是当前新生成的perm内存占用量，PC是但前perm内存占用量。其他的可以根据这个类推， OC是old内纯的占用量。<br />
jstat -gcnew pid:new对象的信息。<br />
jstat -gcnewcapacity pid:new对象的信息及其占用量。<br />
jstat -gcold pid:old对象的信息。<br />
jstat -gcoldcapacity pid:old对象的信息及其占用量。<br />
jstat -gcpermcapacity pid: perm对象的信息及其占用量。<br />
jstat -util pid:统计gc信息统计。<br />
jstat -printcompilation pid:当前VM执行的信息。<br />
除了以上一个参数外，还可以同时加上 两个数字，如：jstat -printcompilation 3024 250 6是每250毫秒打印一次，一共打印6次，还可以加上-h3每三行显示一下标题。</p>
<p>jmap是一个可以输出所有内存中对象的工具，甚至可以将VM 中的heap，以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid&gt;a.log可以将其保存到文本中去，在一段时间后，使用文本对比工具，可以对比出GC回收了哪些对象。jmap -dump:format=b,file=String 3024可以将3024进程的内存heap输出出来到String文件里。</p>
<p>jinfo:的用处比较简单，就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt&nbsp; pid 如：查看2788的MaxPerm大小可以用&nbsp; jinfo -flag MaxPermSize 2788。</p>
<p>jconsole是一个用java写的GUI程序，用来监控VM，并可监控远程的VM，非常易用，而且功能非常强。由于是GUI程序，这里就不详细介绍了，不会的地方可以参考ＳＵＮ的官方文档。<br />
使用方法：命令行里打 jconsole，选则进程就可以了。</p>
<p>SUN官方说明：</p>
<p>jvisualvm:&nbsp;<a href="http://java.sun.com/javase/6/docs/technotes/tools/share/jvisualvm.html">http://java.sun.com/javase/6/docs/technotes/tools/share/jvisualvm.html</a></p>
<p>jps:http://java.sun.com/javase/6/docs/technotes/tools/share/jps.html<br />
jstat:http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html<br />
jmap:http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html<br />
jconsole:http://java.sun.com/javase/6/docs/technotes/tools/share/jconsole.html</p>
</span><br />
<br />
<br />
<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; font-size: 14px; line-height: 25px; ">在一次解决系统tomcat老是内存撑到头，然后崩溃的问题时，使用到了jmap。
<br />
1 使用命令
<br />
在环境是linux+jdk1.5以上，这个工具是自带的，路径在JDK_HOME/bin/下
<br />
<strong>jmap -histo pid&gt;a.log</strong>
<br />
<br />
2 输出结果摘要
<br />
Size&nbsp;&nbsp;&nbsp; Count&nbsp;&nbsp; Class description
<br />
-------------------------------------------------------
<br />
353371288&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9652324 char[]
<br />
<span style="color: red">230711112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9612963 java.lang.String</span>
<br />
139347160&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 114865&nbsp; byte[]
<br />
76128096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3172004 java.util.Hashtable$Entry
<br />
<span style="color: red">75782280&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3157595 com.test.util.IPSeeker$IPLocation</span>
<br />
25724272&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9115&nbsp;&nbsp;&nbsp; java.util.Hashtable$Entry[]
<br />
9319968 166428&nbsp; org.apache.tomcat.util.buf.MessageBytes
<br />
8533856 32889&nbsp;&nbsp; int[]
<br />
<br />
发现有大量的String和自定义对象com.test.util.IPSeeker$IPLocation存在，检查程序发现此处果然存在内存溢出。修改程序上线后再次用jmap抓取内存数据：
<br />
<br />
146881712&nbsp;&nbsp; 207163&nbsp; byte[]
<br />
98976352&nbsp;&nbsp;&nbsp; 354285&nbsp; char[]
<br />
42595272&nbsp;&nbsp;&nbsp; 53558&nbsp;&nbsp; int[]
<br />
11515632&nbsp;&nbsp;&nbsp; 479818&nbsp; java.util.HashMap$Entry
<br />
9521896 59808&nbsp;&nbsp; java.util.HashMap$Entry[]
<br />
<span style="color: red">8887392 370308&nbsp; com.test.bean.UnionIPEntry</span>
<br />
8704808 155443&nbsp; org.apache.tomcat.util.buf.MessageBytes
<br />
<span style="color: red">8066880 336120&nbsp; java.lang.String</span>
<br />
<br />
内存溢出问题消除。
<br />
注意：<span style="color: red">这个jmap使用的时候jvm是处在假死状态的，只能在服务瘫痪的时候为了解决问题来使用，否则会造成服务中断。</span></span><br />
<br />
<br />
</div>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/369544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-02-07 17:02 <a href="http://www.blogjava.net/toby/archive/2012/02/07/369544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mvn报错：No goals have been specified for this build</title><link>http://www.blogjava.net/toby/archive/2012/02/03/369314.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 03 Feb 2012 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/02/03/369314.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/369314.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/02/03/369314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/369314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/369314.html</trackback:ping><description><![CDATA[<p>选择【Run As】-【Maven build】的时候，报：<br />
[INFO] Scanning for projects&#8230;[INFO]<br />
[INFO] BUILD FAILURE[INFO]<br />
[INFO] Total time: 0.109s[INFO] Finished at: Wed Apr 13 11:04:20 CST 2011[INFO] Final Memory: 1M/4M[INFO]<br />
ERROR] No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format &lt;plugin-prefix&gt;:&lt;goal&gt; or &lt;plugin-group-id&gt;:&lt;plugin-artifact-id&gt;[:&lt;plugin-version&gt;]:&lt;goal&gt;. Available lifecycle phases are: validate, initialize, generate-sources, process-sources, generate-resources,<br />
process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-<br />
test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy, pre-site, site, post-site, site-deploy,<br />
pre-clean, clean, post-clean. -&gt; [Help 1][ERROR]&nbsp;[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.[ERROR] Re-run Maven using the -X switch to enable full debug logging.[ERROR]&nbsp;[ERROR] For more information about the errors and possible solutions, please read the following articles:[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException&nbsp;<br />
<br />
<br />
</p>
<p>eclipse安装的maven插件是m2eclipse，在控制台使用命令mvn compile并未报错。后在pom.xml文件&lt;build&gt;标签后面加上&lt;defaultGoal&gt;compile&lt;/defaultGoal&gt;即可。</p>
<p>其实使用命令行时就已经指定了phase，而使用m2eclipse的【Run As】-【Maven build】时并未为其指定goal或phase，所以才报这个错误。</p>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/369314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-02-03 11:32 <a href="http://www.blogjava.net/toby/archive/2012/02/03/369314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Remove @Override annotation错误提示</title><link>http://www.blogjava.net/toby/archive/2012/01/09/368153.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 09 Jan 2012 08:49:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2012/01/09/368153.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/368153.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2012/01/09/368153.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/368153.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/368153.html</trackback:ping><description><![CDATA[<h2>因为对于JDK5.0/1.5版本来说，@Override annotation只能用与对超类的方法重写上，</h2>
<h2>而不能用在对接口方法的实现方法上。</h2>
<h2>解决的方法是把JDK改为1.6的或动手把注释@Override去掉。<br />
</h2>
<div>You probably need to set the compiler compliance level in eclipse. This can be found in Window-&gt;Preferences-&gt;Java-&gt;Compiler</div>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/368153.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2012-01-09 16:49 <a href="http://www.blogjava.net/toby/archive/2012/01/09/368153.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>memcache存取数据注意事项</title><link>http://www.blogjava.net/toby/archive/2011/12/30/367562.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 30 Dec 2011 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/12/30/367562.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/367562.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/12/30/367562.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/367562.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/367562.html</trackback:ping><description><![CDATA[<strong>问题描述</strong><br />
1.如果set进memcache的entity的包结构放在com.ttt下<br />
2.如果get出memcache的entity的包结构放在com.ooo下,将拿取不到数据<br />
<strong>解决办法</strong><br />
1.统一get和set的entity包结构<br />
<strong>原因分析</strong><br />
memcachejava的客户端jar包为设计为侵入式，<br />
以后可考虑，自定义序列化算法,存进去前先序列化，要先的时候获取出来后再反序列化@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/367562.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-12-30 11:14 <a href="http://www.blogjava.net/toby/archive/2011/12/30/367562.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>各数据交换的协议优劣比较</title><link>http://www.blogjava.net/toby/archive/2011/12/26/367165.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 26 Dec 2011 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/12/26/367165.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/367165.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/12/26/367165.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/367165.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/367165.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<span style="border-collapse: collapse; font-size: 14px; line-height: 28px;"><span style="border-collapse: separate; ">
<h2>如何选择数据交换协议</h2>
<p>　　选择什么样的协议跟我们的应用场景有很大的关系。我们需要考虑我们开发是否方便、接口是否容易发布、是否需要考虑带宽占用成本、序列化和反序列化的性能、接口协议的扩展性等等。下面我们看下几个比较常用的交换协议实现。</p>
<table border="1" width="654" height="280">
    <tbody>
        <tr>
            <td>协议</td>
            <td>实现</td>
            <td>跨语言</td>
            <td>性能</td>
            <td>传输量</td>
            <td>RPC</td>
        </tr>
        <tr>
            <td>xml</td>
            <td>广泛</td>
            <td>几乎所有</td>
            <td>低</td>
            <td>很大</td>
            <td>N（可实现）</td>
        </tr>
        <tr>
            <td>json</td>
            <td>广泛</td>
            <td>大量</td>
            <td>一般</td>
            <td>一般</td>
            <td>N（可实现）</td>
        </tr>
        <tr>
            <td>php serialize</td>
            <td>PHPRPC</td>
            <td>大量</td>
            <td>一般</td>
            <td>一般</td>
            <td>Y</td>
        </tr>
        <tr>
            <td>hessian</td>
            <td>hessian</td>
            <td>大量</td>
            <td>一般</td>
            <td>小</td>
            <td>Y</td>
        </tr>
        <tr>
            <td>thrift</td>
            <td>thrift</td>
            <td>大量</td>
            <td>高</td>
            <td>小</td>
            <td>Y</td>
        </tr>
        <tr>
            <td>protobuf</td>
            <td>protobuf</td>
            <td>大量</td>
            <td>高</td>
            <td>小</td>
            <td>N（可实现）</td>
        </tr>
        <tr>
            <td>ice</td>
            <td>ice</td>
            <td>大量</td>
            <td>高</td>
            <td>小</td>
            <td>Y</td>
        </tr>
        <tr>
            <td>avro</td>
            <td><a title="Apache Avro " href="http://avro.apache.org/" target="_self">Apache Avro </a></td>
            <td>少量</td>
            <td>高</td>
            <td>小</td>
            <td>Y</td>
        </tr>
        <tr>
            <td>messagepack</td>
            <td><a title="messagepack " href="http://msgpack.org/" target="_self">messagepack </a>                        </td>
            <td>大量</td>
            <td>高</td>
            <td>小</td>
            <td>Y</td>
        </tr>
    </tbody>
</table>
<p>　　上面表格列出了一些常用数据交换协议的一些特性的比较。这里并没有比较好坏，只是想说明不同数据交换协议是有区别的，所以我们需要在我们的应用场景中进行选择。<br />
<br />
&nbsp;<a title="messagepack " href="http://msgpack.org/" target="_self">messagepack</a>相关资料</p>
<p>http://pluto418.iteye.com/blog/1108457<br />
<span style="color: #666666; font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 19px; ">优势：<br />
<strong>1.序列化和反序列化所需要的时间少。通过30000条的记录来测试，msgpack序列化的时间比使用jason来序列化JSON的时间要少三分之一；而反序列化的时间则要少一半。<br />
2.生成的文件体积小。同样也是基于30000条记录来测试，msgpack序列化后生成的二进制文件比用jason序列化出来的时间要少一半。</strong>
<br />
劣势：<br />
<strong>1.msgpack对复杂的数据类型（List、Map）支持的不够，序列化没有问题，但是反序列化回来就很麻烦，尤其是对于java开发人员。<br />
2.在上面也提到过，msgpack是通过value的顺序来定位属性的，那么需要在不同的语言中都要维护同样的模型以及模型中属性的顺序。这个会让开发人员很困扰。<br />
3.msgpack无法支持在模型中包含和嵌套其他自定义的模型（如weibo模型中包含comment的列表）。<br />
<br />
</strong></span></p>
</span></span>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/367165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-12-26 10:57 <a href="http://www.blogjava.net/toby/archive/2011/12/26/367165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jdk各版本下载地址</title><link>http://www.blogjava.net/toby/archive/2011/12/13/366202.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 13 Dec 2011 02:08:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/12/13/366202.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/366202.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/12/13/366202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/366202.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/366202.html</trackback:ping><description><![CDATA[http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u30-download-1377139.html
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/366202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-12-13 10:08 <a href="http://www.blogjava.net/toby/archive/2011/12/13/366202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java复制文件或文件夹</title><link>http://www.blogjava.net/toby/archive/2011/12/05/365585.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 05 Dec 2011 06:17:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/12/05/365585.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/365585.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/12/05/365585.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/365585.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/365585.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: @import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);Code highlighting produced by Actipro CodeHighlig...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2011/12/05/365585.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/365585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-12-05 14:17 <a href="http://www.blogjava.net/toby/archive/2011/12/05/365585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>单例模式的一些版本及演变过程</title><link>http://www.blogjava.net/toby/archive/2011/11/21/364438.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 21 Nov 2011 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/11/21/364438.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/364438.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/11/21/364438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/364438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/364438.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<br />
<strong>版本一:只支持单线程，多线程第一次实例化会有两个实例生成</strong><br />
<span style="color: #9a9a9a; font-family: monospace; line-height: 18px; white-space: pre; "><span style="color: #0000ff;">class</span><span style="color: #000000;"> Foo { <br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Helper helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Helper getHelper() {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (helper </span><span style="color: #000000;">==</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">) <br />
helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Helper();<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> helper;<br />
}<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;"> other functions and members...</span><span style="color: #008000;"><br />
</span><span style="color: #000000; ">}
<strong>版本二：多线程版本:每个线程过来都会到要到synchronized 方法块，这样处理效率较低.第一个初始化helper的时候需要locking(加锁)，而后面取用helper的时候，根本不需要线程同步</strong>
</span></span><span style="color: #9a9a9a; font-family: monospace; line-height: 18px; white-space: pre; "><span style="color: #008000;">//</span><span style="color: #008000;"> Correct multithreaded version</span><span style="color: #008000;"><br />
</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Foo { <br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Helper helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> synchronized Helper getHelper() {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (helper </span><span style="color: #000000;">==</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">) <br />
helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000; "> Helper();<br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000; "> helper;<br />
}<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;"> other functions and members...</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}
<strong>版本三：解决每次新建实例都要</strong></span></span><strong>synchronized的问题，运用双检锁来实现.此种方法行不通</strong><br />
<font color="#9A9A9A" face="monospace"><span style="line-height: 18px; white-space: pre; "><strong>
<span style="color: #9a9a9a; font-family: monospace; line-height: 18px; white-space: pre; "><span style="color: #0000ff;">class</span><span style="color: #000000;"> Foo { <br />
</span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Helper helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">;<br />
</span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Helper getHelper() {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (helper </span><span style="color: #000000;">==</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">) <br />
synchronized(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">) {<br />
</span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (helper </span><span style="color: #000000;">==</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">) <br />
helper </span><span style="color: #000000;">=</span> <span style="color: #0000ff;">new</span><span style="color: #000000;"> Helper();<br />
}    <br />
</span><span style="color: #0000ff;">return</span><span style="color: #000000;"> helper;<br />
}<br />
</span><span style="color: #008000;">//</span><span style="color: #008000;"> other functions and members...</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">}
</span></span></strong></span></font>
<div>思路很简单，就是我们只需要同步（synchronize）初始化helper的那部分代码从而使代码既正确又很有效率。</div>
<div><br />
</div>
<div>这就是所谓的&#8220;双检锁&#8221;机制（顾名思义）。</div>
<div><br />
</div>
<div>很可惜，这样的写法在很多平台和优化编译器上是错误的。</div>
<div><br />
</div>
<div>原因在于：helper = new Helper()这行代码在不同编译器上的行为是无法预知的。一个优化编译器可以合法地如下实现helper = new Helper():</div>
<div><br />
</div>
<div>1. helper = 给新的实体分配内存</div>
<div><br />
</div>
<div>2. 调用helper的构造函数来初始化helper的成员变量</div>
<div><br />
</div>
<div>现在想象一下有线程A和B在调用getHelper，线程A先进入，在执行到步骤1的时候被踢出了cpu。然后线程B进入，B看到的是 helper已经不是null了（内存已经分配），于是它开始放心地使用helper，但这个是错误的，因为在这一时刻，helper的成员变量还都是缺 省值，A还没有来得及执行步骤2来完成helper的初始化。</div>
<div><br />
</div>
<div>当然编译器也可以这样实现：</div>
<div><br />
</div>
<div>1. temp = 分配内存</div>
<div><br />
</div>
<div>2. 调用temp的构造函数</div>
<div><br />
</div>
<div>3. helper = temp</div>
<div><br />
</div>
<div>如果编译器的行为是这样的话我们似乎就没有问题了，但事实却不是那么简单，因为我们无法知道某个编译器具体是怎么做的，因为在Java的 memory model里对这个问题没有定义（C++也一样），而事实上有很多编译器都是用第一种方法（比如symantec的just-in-time compiler），因为第一种方法看起来更自然。</div>
<div><br />
</div>
<div>在上面的参考文章中还提到了更复杂的修改方法，不过很可惜，都是错误的<br />
<br />
<div>关于Out-of-order writes现象，就是</div>
<div>helper = new Helper();;</div>
<div>helper已经非空，但对象还没完成实例化，即new new Helper()未完成</div>
<div>详见：</div>
<div>http://www.ibm.com/developerworks/java/library/j-dcl.html</div>
<br />
<br />
<strong>版本四：目前知道最后版。实际应用时需验证一下</strong><br />
<div>private volatile static Singleton instance; &nbsp;</div>
<div>&nbsp;&nbsp;</div>
<div>public static Singleton getInstance() { &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;if (instance == null) { &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;synchronized(Singleton.class) { &nbsp;//1 &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (instance == null) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//2 &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;instance = new Singleton(); &nbsp;//3 &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;} &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;} &nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;return instance; &nbsp;</div>
<div>} &nbsp;</div>
<div><br />
</div>
<div>因为存在Out-of-order writes现象，所以这里volatile关键字是在当instance被初始化给Singleton实例时保证多线程正确地处理instance变量，那这里与线程间的可见性有关吗？</div>
<div>我觉得与可见性无关，因为synchronized block已经可以保证块内变量的可见性，这里应该是变量操作的原子性<br />
<br />
<br />
http://en.wikipedia.org/wiki/Double-checked_locking</div>
</div><img src ="http://www.blogjava.net/toby/aggbug/364438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-11-21 15:28 <a href="http://www.blogjava.net/toby/archive/2011/11/21/364438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手动添加依赖的jar文件到maven仓库</title><link>http://www.blogjava.net/toby/archive/2011/11/02/362503.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 02 Nov 2011 01:24:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/11/02/362503.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/362503.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/11/02/362503.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/362503.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/362503.html</trackback:ping><description><![CDATA[@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
<p>在编写maven项目的程序时，有时程序需要依赖于某一个类库jar文件。但是由于maven远程仓库</p>
<p>并不含有该文件，所以不能利用maven自身插件自动在其远程仓库下载。我们需要手动将其添加</p>
<p>到本地的仓库中，这样才能编译依赖于这个类库的工程。</p>
<p>&nbsp;</p>
<p>-------------------------------------------------------------------------------------</p>
<p>是自己编写的一个jar文件，每次添加单个jar到maven本地仓库的操作如下：</p>
<p>&nbsp;</p>
<p># 建立一个新的文件夹，将jar文件存放在该文件夹下。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;注意文件夹下最好只存放该文件。</p>
<p>&nbsp;</p>
<p># 在该文件夹下建立一个pom.xml文件，在pom文件中定义其maven坐标。</p>
<p>&nbsp;</p>
<p># 在cmd窗口中执行以下命令：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;mvn install:install-file -Dfile=&lt;path-to-file&gt; -DgroupId=&lt;group-id&gt; -DartifactId=&lt;artifact-id&gt; -Dversion=&lt;version&gt; -Dpackaging=&lt;packaging&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;例如：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;mvn install:install-file -Dfile=/home/hjq/sms.jar -DgroupId=ufmobile -DartifactId=sms -Dversion=3.0 -Dpackaging=jar</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;如此一来，该jar便安装成功了。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;注意：如若运行该命令，前提是安装了一个非eclipse插件的maven。</p>
<p>&nbsp;</p>
<p>---------------------------------------------------------------------------------------</p>
<p>&nbsp;</p>
<p># 如果在其他project中用到该jar类库作为依赖，在其pom.xml中增加相应的依赖代码即可。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; &nbsp;如下语句所示：</p>
<p>		&lt;dependency&gt;</p>
<p>			&lt;groupId&gt;ufmobile&lt;/groupId&gt;</p>
<p>			&lt;artifactId&gt;sms&lt;/artifactId&gt;</p>
<p>			&lt;version&gt;3.0&lt;/version&gt;</p>
<p>		&lt;/dependency&gt;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>备注：很多人都曾经在网上发帖探讨过这个问题。</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;有的把这个简单问题搞的很复杂。</p>
<p>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;有的人则认为上面的那个cmd命令行不通，原因可能就是没有添加pom文件。</p>
<p>=============================================================================================</p>
<p>&nbsp;</p>
<p>另 &nbsp; 技巧：</p>
<p>&nbsp;</p>
<p># 其实如果可以在网上下载jar文件和其pom文件，</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; &nbsp;则可以按以下步骤更方便：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp; &nbsp;将jar和pom导入eclipse中作为一个新的工程，利用install命令运行该工程即可</p>
<p>&nbsp;</p>
<p><br />
</p>
<p><span style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px; ">五、实际运行命令</span><br />
mvn install:install-file -Dfile=D:/玄武网关/网关模块/移动网关CMPP/newcmpp/lib/newcomapi.jar -DgroupId=com.xuanwu -DartifactId=newcomapi -Dversion=1.0 -Dpackaging=jar&nbsp;&nbsp; 这样的好处是要安装的jar文件的依赖会根据其pom自动的安装。而不必手动的安装该jar文件的依赖。<br />
<br />
</p>
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/362503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-11-02 09:24 <a href="http://www.blogjava.net/toby/archive/2011/11/02/362503.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven实际应用</title><link>http://www.blogjava.net/toby/archive/2011/11/01/362460.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 01 Nov 2011 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/11/01/362460.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/362460.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/11/01/362460.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/362460.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/362460.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&lt;project&nbsp;xmlns="http://maven.apache.org/POM/4.0.0"&nbsp;xmlns:xsi="http://www.w3.org/200...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2011/11/01/362460.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/362460.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-11-01 17:22 <a href="http://www.blogjava.net/toby/archive/2011/11/01/362460.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>maven初步了解</title><link>http://www.blogjava.net/toby/archive/2011/11/01/362459.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 01 Nov 2011 09:20:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/11/01/362459.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/362459.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/11/01/362459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/362459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/362459.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &lt;project&nbsp;xmlns="http://maven.apache.org/POM/4.0.0&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2011/11/01/362459.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/362459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-11-01 17:20 <a href="http://www.blogjava.net/toby/archive/2011/11/01/362459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>运行jar文件中某个类文件命令</title><link>http://www.blogjava.net/toby/archive/2011/11/01/362439.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Tue, 01 Nov 2011 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/11/01/362439.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/362439.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/11/01/362439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/362439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/362439.html</trackback:ping><description><![CDATA[1.java -cp target/simple-1.0-SNAPSHOT.jar org.sonatype.mavenbook.App<br />
2.java -jar target\hello-world-1.0-SNAPSHOT.jar@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/362439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-11-01 14:22 <a href="http://www.blogjava.net/toby/archive/2011/11/01/362439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse自动排版设置</title><link>http://www.blogjava.net/toby/archive/2011/09/29/359790.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Thu, 29 Sep 2011 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/09/29/359790.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/359790.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/09/29/359790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/359790.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/359790.html</trackback:ping><description><![CDATA[clipse上面选择window菜单，选择preferences,在里面选java,然后选 code style,选择format，点edit,选择line wrapping选项卡，然后把max line width 加大就可以了。这个数字默认的是80个字符。
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/359790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-09-29 15:47 <a href="http://www.blogjava.net/toby/archive/2011/09/29/359790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>warning: sun.security.action.GetPropertyAction is Sun proprietary API and may be removed in a future release</title><link>http://www.blogjava.net/toby/archive/2011/09/15/358678.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Thu, 15 Sep 2011 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/09/15/358678.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/358678.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/09/15/358678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/358678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/358678.html</trackback:ping><description><![CDATA[sun.security.action.GetPropertyActionK里能找到并使用，但是在API里查不到。这两个可能是SUN公司内部人使用的，我们使用后出了问题也就不能责怪SUN。据我所知SUN开头的包里面的类都找不到相关文档，所以里面可能都是非官方的类。出现警告也是非常合理和正常的，因为以后SUN可能会更新或这删除那些非官方的类。不用管它。
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);<img src ="http://www.blogjava.net/toby/aggbug/358678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-09-15 10:14 <a href="http://www.blogjava.net/toby/archive/2011/09/15/358678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>centos下安装was6.1</title><link>http://www.blogjava.net/toby/archive/2011/07/22/354867.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 22 Jul 2011 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/07/22/354867.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/354867.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/07/22/354867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/354867.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/354867.html</trackback:ping><description><![CDATA[
		<strong>1.下载was</strong>：<a href="https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=was60&amp;S_PKG=lnx61&amp;S_TACT=109J84IW&amp;S_CMP=web_dw_rt_swd&amp;lang=en_US&amp;cp=UTF-8&amp;&amp;&amp;dlmethod=http#">https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?source=was60&amp;S_PKG=lnx61&amp;S_TACT=109J84IW&amp;S_CMP=web_dw_rt_swd&amp;lang=en_US&amp;cp=UTF-8&amp;&amp;&amp;dlmethod=http#</a><br />用户名：<a href="mailto:xiong_we_i@163.com">xiong_we_i@163.com</a>    密码：123456<br /><br /><strong>2.</strong><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA"><strong>建议取消</strong>“启动第一步控制台”选项（最后一步）。到此，已经完成了</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">WebSphere</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">主程序的安装，程序会自动创建一个名字</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">AppSrv01</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">的“概要表”，（注：这里的“概要表”相当于</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">weblogic</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">中的一个“</span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-size: 12.0pt; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-fareast-font-family: 宋体">domain-server</span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体; mso-bidi-font-size: 12.0pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA">”）。点击【完成】完成安装<br /><br /><strong>3.启动报错<br /></strong>[7/22/11 16:39:22:552 CST] 0000000a WsServerImpl  E   WSVR0009E: Error occurred during startup<br />META-INF/ws-server-components.xml<br />[7/22/11 16:39:22:580 CST] 0000000a WsServerImpl  E   WSVR0009E: Error occurred during startup<br />com.ibm.ws.exception.ConfigurationError: com.ibm.ws.exception.ConfigurationError: javax.naming.ConfigurationException: Cannot get canonical host name for server<br /><br />解决办法<br /><span class="Apple-style-span" style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0px"><span class="Apple-style-span" style="FONT-SIZE: 14px; COLOR: rgb(70,70,70); LINE-HEIGHT: 21px; FONT-FAMILY: simsun; TEXT-ALIGN: left"><p style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; WORD-BREAK: normal; LINE-HEIGHT: 21px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; WORD-WRAP: normal">1.修改/etc/sysconfig/networ文件</p><p style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; WORD-BREAK: normal; LINE-HEIGHT: 21px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; WORD-WRAP: normal"># vi /etc/sysconfig/network<br />NETWORKING=yes<br />HOSTNAME=yourname （在这修改hostname，把yourname换成你想用的名字）</p><p style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; WORD-BREAK: normal; LINE-HEIGHT: 21px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; WORD-WRAP: normal"><br />2.修改/etc/hosts里面的名字<br />＃ vi /etc/hosts<br />127.0.0.1 localhost.localdomain localhost （在这修改hostname，把末尾的localhost换成你想用的名字）</p><p style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px 0px 5px; WORD-BREAK: normal; LINE-HEIGHT: 21px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none; BORDER-RIGHT-WIDTH: 0px; WORD-WRAP: normal"><br />3.最后在终端下执行：<br />＃hostname ***** （*****为修改后的hostname，即你想用的名字）<br /><br /><font style="WORD-BREAK: normal; LINE-HEIGHT: 21px; WORD-WRAP: normal" color="#ff0000">特别提示</font>：三处修改的名字要保持一致，否则会出现问题。切记。<br /><br /><strong>4.启动<br /></strong>cd /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin<br />[root@xiongwei2 bin]# ./startServer.sh server1<br />ADMU0116I: Tool information is being logged in file<br />           /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log<br />ADMU0128I: Starting tool with the AppSrv01 profile<br />ADMU3100I: Reading configuration for server: server1<br />ADMU3200I: Server launched. Waiting for initialization status.<br />ADMU3000I: Server server1 open for e-business; process id is 3508<br /><br /><br /><strong>5.如果要卸载<br /></strong>[root@xiongwei2 uninstall]# pwd<br />/opt/IBM/WebSphere/AppServer/uninstall  在这目录下命令卸载即可<br />切不可通过系统工具卸载和删文件方式<br /><br />6.访问控制台<br /><a href="https://192.168.0.189:9043/ibm/console/logon.jsp">https://192.168.0.189:9043/ibm/console/logon.jsp</a><br /></p></span></span></span><img src ="http://www.blogjava.net/toby/aggbug/354867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-07-22 17:13 <a href="http://www.blogjava.net/toby/archive/2011/07/22/354867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tomcat 5.5解压版到linix不能运行</title><link>http://www.blogjava.net/toby/archive/2011/07/15/354366.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 15 Jul 2011 01:11:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/07/15/354366.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/354366.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/07/15/354366.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/354366.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/354366.html</trackback:ping><description><![CDATA[
		<p>一.现象<br />Neither the JAVA_HOME nor the JRE_HOME environment variable is defined"<br />    echo "At least one of these environment variable is needed to run this program<br /><br />二.问题<br />linix系统中没有设置JAVA_HOME 和 JRE_HOME 的环境变量<br /><br />三.解决办法<br />1.设置系统的JAVA_HOME 和 JRE_HOME 的环境变量<br /><br /><br />2.catalina.sh和setclasspath.sh这二个文件顶部添加<br />export JAVA_HOME=/usr/local/java<br />export JRE_HOME=/usr/local/java/jre<br /><br />以上二种办法任选其一即可</p>
<img src ="http://www.blogjava.net/toby/aggbug/354366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-07-15 09:11 <a href="http://www.blogjava.net/toby/archive/2011/07/15/354366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>枚举示例程序</title><link>http://www.blogjava.net/toby/archive/2011/05/23/350841.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 23 May 2011 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/05/23/350841.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/350841.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/05/23/350841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/350841.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/350841.html</trackback:ping><description><![CDATA[
		<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">
				<font size="4">
						<span style="COLOR: #008080"> 1</span>
						<img id="Codehighlighter1_22_651_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_651_Open_Text.style.display='none'; Codehighlighter1_22_651_Closed_Image.style.display='inline'; Codehighlighter1_22_651_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_22_651_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_651_Closed_Text.style.display='none'; Codehighlighter1_22_651_Open_Image.style.display='inline'; Codehighlighter1_22_651_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
						<span style="COLOR: #0000ff">public</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">class</span>
						<span style="COLOR: #000000"> EnumTest </span>
						<span id="Codehighlighter1_22_651_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>
				</font>
				<span id="Codehighlighter1_22_651_Open_Text">
						<font size="4">
								<span style="COLOR: #000000">{<br /></span>
								<span style="COLOR: #008080"> 2</span>
						</font>
						<font size="4">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										<br />
								</span>
								<span style="COLOR: #008080"> 3</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_46_524_Open_Image" onclick="this.style.display='none'; Codehighlighter1_46_524_Open_Text.style.display='none'; Codehighlighter1_46_524_Closed_Image.style.display='inline'; Codehighlighter1_46_524_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_46_524_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_46_524_Closed_Text.style.display='none'; Codehighlighter1_46_524_Open_Image.style.display='inline'; Codehighlighter1_46_524_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #0000ff">enum</span>
								<span style="COLOR: #000000"> MsgType </span>
								<span id="Codehighlighter1_46_524_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>
						</font>
						<span id="Codehighlighter1_46_524_Open_Text">
								<font size="4">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080"> 4</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        SMS(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">this sms</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">), LONGSMS(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">this is longsms</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">), MMS(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">this is mms</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">), WAP_PUSH(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">this is wap push</span>
										<span style="COLOR: #000000">"</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000">);<br /></span>
										<span style="COLOR: #008080"> 5</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
										<span style="COLOR: #0000ff">private</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">final</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000"> String index;<br /></span>
										<span style="COLOR: #008080"> 6</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												<br />
										</span>
										<span style="COLOR: #008080"> 7</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_208_235_Open_Image" onclick="this.style.display='none'; Codehighlighter1_208_235_Open_Text.style.display='none'; Codehighlighter1_208_235_Closed_Image.style.display='inline'; Codehighlighter1_208_235_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_208_235_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_208_235_Closed_Text.style.display='none'; Codehighlighter1_208_235_Open_Image.style.display='inline'; Codehighlighter1_208_235_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
										<span style="COLOR: #0000ff">private</span>
										<span style="COLOR: #000000"> MsgType(String index) </span>
										<span id="Codehighlighter1_208_235_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>
								</font>
								<span id="Codehighlighter1_208_235_Open_Text">
										<font size="4">
												<span style="COLOR: #000000">{<br /></span>
												<span style="COLOR: #008080"> 8</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
												<span style="COLOR: #0000ff">this</span>
												<span style="COLOR: #000000">.index </span>
												<span style="COLOR: #000000">=</span>
										</font>
										<font size="4">
												<span style="COLOR: #000000"> index;<br /></span>
												<span style="COLOR: #008080"> 9</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
										</font>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">
										<font size="4">10</font>
								</span>
								<font size="4">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												<br />
										</span>
										<span style="COLOR: #008080">11</span>
										<span style="COLOR: #000000">
												<img id="Codehighlighter1_240_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_240_287_Open_Text.style.display='none'; Codehighlighter1_240_287_Closed_Image.style.display='inline'; Codehighlighter1_240_287_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_240_287_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_240_287_Closed_Text.style.display='none'; Codehighlighter1_240_287_Open_Image.style.display='inline'; Codehighlighter1_240_287_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span>
										<span id="Codehighlighter1_240_287_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">/**/</span>
								</font>
								<span id="Codehighlighter1_240_287_Open_Text">
										<span style="COLOR: #008000">
												<font size="4">/*</font>
										</span>
										<font size="4">
												<span style="COLOR: #008000">public int getIndex() {<br /></span>
												<span style="COLOR: #008080">12</span>
										</font>
										<font size="4">
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            return index;<br /></span>
												<span style="COLOR: #008080">13</span>
												<span style="COLOR: #008000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
												<span style="COLOR: #008000">*/</span>
										</font>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<span style="COLOR: #008080">
										<font size="4">14</font>
								</span>
								<font size="4">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
												<br />
										</span>
										<span style="COLOR: #008080">15</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000">下面这段基本上不用</span>
								</font>
								<span style="COLOR: #008000">
										<br />
								</span>
								<font size="4">
										<span style="COLOR: #008080">16</span>
										<span style="COLOR: #008000">
												<img id="Codehighlighter1_347_521_Open_Image" onclick="this.style.display='none'; Codehighlighter1_347_521_Open_Text.style.display='none'; Codehighlighter1_347_521_Closed_Image.style.display='inline'; Codehighlighter1_347_521_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
												<img id="Codehighlighter1_347_521_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_347_521_Closed_Text.style.display='none'; Codehighlighter1_347_521_Open_Image.style.display='inline'; Codehighlighter1_347_521_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />
										</span>
										<span style="COLOR: #000000">        </span>
										<span style="COLOR: #0000ff">public</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #0000ff">static</span>
										<span style="COLOR: #000000"> MsgType getType(</span>
										<span style="COLOR: #0000ff">int</span>
										<span style="COLOR: #000000"> index) </span>
										<span id="Codehighlighter1_347_521_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>
								</font>
								<span id="Codehighlighter1_347_521_Open_Text">
										<font size="4">
												<span style="COLOR: #000000">{<br /></span>
												<span style="COLOR: #008080">17</span>
												<span style="COLOR: #000000">
														<img id="Codehighlighter1_367_517_Open_Image" onclick="this.style.display='none'; Codehighlighter1_367_517_Open_Text.style.display='none'; Codehighlighter1_367_517_Closed_Image.style.display='inline'; Codehighlighter1_367_517_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
														<img id="Codehighlighter1_367_517_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_367_517_Closed_Text.style.display='none'; Codehighlighter1_367_517_Open_Image.style.display='inline'; Codehighlighter1_367_517_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
												<span style="COLOR: #0000ff">switch</span>
												<span style="COLOR: #000000"> (index) </span>
												<span id="Codehighlighter1_367_517_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>
										</font>
										<span id="Codehighlighter1_367_517_Open_Text">
												<font size="4">
														<span style="COLOR: #000000">{<br /></span>
														<span style="COLOR: #008080">18</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
														<span style="COLOR: #0000ff">case</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">0</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000">:<br /></span>
														<span style="COLOR: #008080">19</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">return</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000"> SMS;<br /></span>
														<span style="COLOR: #008080">20</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
														<span style="COLOR: #0000ff">case</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">1</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000">:<br /></span>
														<span style="COLOR: #008080">21</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">return</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000"> LONGSMS;<br /></span>
														<span style="COLOR: #008080">22</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
														<span style="COLOR: #0000ff">case</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">2</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000">:<br /></span>
														<span style="COLOR: #008080">23</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">return</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000"> MMS;<br /></span>
														<span style="COLOR: #008080">24</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
														<span style="COLOR: #0000ff">case</span>
														<span style="COLOR: #000000"> </span>
														<span style="COLOR: #000000">3</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000">:<br /></span>
														<span style="COLOR: #008080">25</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">return</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000"> WAP_PUSH;<br /></span>
														<span style="COLOR: #008080">26</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />            </span>
														<span style="COLOR: #0000ff">default</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000">:<br /></span>
														<span style="COLOR: #008080">27</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                </span>
														<span style="COLOR: #0000ff">return</span>
												</font>
												<font size="4">
														<span style="COLOR: #000000"> SMS;<br /></span>
														<span style="COLOR: #008080">28</span>
														<span style="COLOR: #000000">
																<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
												</font>
										</span>
										<span style="COLOR: #000000">
												<br />
										</span>
										<font size="4">
												<span style="COLOR: #008080">29</span>
												<span style="COLOR: #000000">
														<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span>
										</font>
								</span>
								<span style="COLOR: #000000">
										<br />
								</span>
								<font size="4">
										<span style="COLOR: #008080">30</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
								</font>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<span style="COLOR: #008080">
								<font size="4">31</font>
						</span>
						<font size="4">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span>
								<span style="COLOR: #008080">32</span>
						</font>
						<font size="4">
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /></span>
								<span style="COLOR: #008080">33</span>
								<span style="COLOR: #000000">
										<img id="Codehighlighter1_569_649_Open_Image" onclick="this.style.display='none'; Codehighlighter1_569_649_Open_Text.style.display='none'; Codehighlighter1_569_649_Closed_Image.style.display='inline'; Codehighlighter1_569_649_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
										<img id="Codehighlighter1_569_649_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_569_649_Closed_Text.style.display='none'; Codehighlighter1_569_649_Open_Image.style.display='inline'; Codehighlighter1_569_649_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.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">void</span>
								<span style="COLOR: #000000"> main(String []args)</span>
								<span id="Codehighlighter1_569_649_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>
						</font>
						<span id="Codehighlighter1_569_649_Open_Text">
								<font size="4">
										<span style="COLOR: #000000">{<br /></span>
										<span style="COLOR: #008080">34</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(MsgType.SMS);<br /></span>
										<span style="COLOR: #008080">35</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        System.out.println(MsgType.getType(</span>
										<span style="COLOR: #000000">0</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000">));<br /></span>
										<span style="COLOR: #008080">36</span>
										<span style="COLOR: #000000">
												<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
								</font>
						</span>
						<span style="COLOR: #000000">
								<br />
						</span>
						<font size="4">
								<span style="COLOR: #008080">37</span>
								<span style="COLOR: #000000">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
						</font>
				</span>
				<span style="COLOR: #000000">
						<br />
				</span>
				<font size="4">
						<span style="COLOR: #008080">38</span>
						<span style="COLOR: #000000">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</span>
				</font>
		</div>
<img src ="http://www.blogjava.net/toby/aggbug/350841.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-05-23 15:43 <a href="http://www.blogjava.net/toby/archive/2011/05/23/350841.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>责任链模式</title><link>http://www.blogjava.net/toby/archive/2011/05/18/350478.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 18 May 2011 06:57:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/05/18/350478.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/350478.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/05/18/350478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/350478.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/350478.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. 责任链模式(Chain of Responsibility Pattern) 如果您看过Tomcat的源代码，一定对里边的管道模式(Pipeline)记忆犹新；如果您了解Servlet规范的话，一定会知道Filter；如果您使用过Struts2的话，一定清楚无处不在的interceptor。上边的这些概念可以说都是责任链模式的抽象，或者说变种，下面我们就来看一下"原生态"的责任链模式。 责任...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2011/05/18/350478.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/350478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-05-18 14:57 <a href="http://www.blogjava.net/toby/archive/2011/05/18/350478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JAVAMAIL发送邮件程序</title><link>http://www.blogjava.net/toby/archive/2011/04/25/348979.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 25 Apr 2011 08:12:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/04/25/348979.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/348979.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/04/25/348979.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/348979.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/348979.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: package														 mail;						import						 java.util.						*														;						import						 javax.mail.						*														;						import						 javax.mail.intern...&nbsp;&nbsp;<a href='http://www.blogjava.net/toby/archive/2011/04/25/348979.html'>阅读全文</a><img src ="http://www.blogjava.net/toby/aggbug/348979.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-04-25 16:12 <a href="http://www.blogjava.net/toby/archive/2011/04/25/348979.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse 3.6.1 安装maven插件失败的解决办法</title><link>http://www.blogjava.net/toby/archive/2011/04/06/347713.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 06 Apr 2011 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2011/04/06/347713.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/347713.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2011/04/06/347713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/347713.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/347713.html</trackback:ping><description><![CDATA[
		<div class="blog_content">一、eclipse 3.6.1下载地址[eclipse-jee-helios-SR1-win32.zip] <br /><a href="http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1" target="_blank"><font color="#108ac6">http://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/heliossr1</font></a><br /><br />二、插件地址 <br />1、<strong>gef</strong>插件地址： <br /><a href="http://download.eclipse.org/tools/gef/updates/interim/" target="_blank"><font color="#108ac6">http://download.eclipse.org/tools/gef/updates/interim/</font></a><br /><br />2、<strong>subclipse</strong>插件地址： <br /><a href="http://subclipse.tigris.org/update_1.6.x" target="_blank"><font color="#108ac6">http://subclipse.tigris.org/update_1.6.x</font></a><br /><br />3、<strong>maven2</strong>插件地址： <br />m2eclipse-core Update Site: <a href="http://m2eclipse.sonatype.org/sites/m2e" target="_blank"><font color="#108ac6">http://m2eclipse.sonatype.org/sites/m2e</font></a><br />m2eclipse-extras Update Site: <a href="http://m2eclipse.sonatype.org/sites/m2e-extras" target="_blank"><font color="#108ac6">http://m2eclipse.sonatype.org/sites/m2e-extras</font></a><br /><strong>注意</strong>：必须两个插件都安装，不安装<strong>extras</strong>插件时，点击“run as server”来运行项目时会报错：“the selected did not contain any resources that can run on server maven project” <br /><br />三、安装时出现问题： <br />直接在线安装<strong>maven2</strong>会出现依赖插件找不到的问题，无法安装。必须先安装<strong>gef</strong>插件后才能安装<strong>m2eclipse-core</strong>插件，然而安装<strong>m2eclipse-extras</strong>插件又依赖<strong>subclipse</strong>插件。所以，三个插件的正确的安装顺序是：gef插件 》subclipse插件 》m2eclipse插件。 <br />m2eclipse-core插件 ——依赖——＞gef插件 <br />m2eclipse-extras插件 ——依赖——＞subclipse插件 </div>
<img src ="http://www.blogjava.net/toby/aggbug/347713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2011-04-06 16:44 <a href="http://www.blogjava.net/toby/archive/2011/04/06/347713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>servlet中实现下载乱码解决办法</title><link>http://www.blogjava.net/toby/archive/2010/12/06/339902.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Mon, 06 Dec 2010 07:42:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/12/06/339902.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/339902.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/12/06/339902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/339902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/339902.html</trackback:ping><description><![CDATA[1. res.setHeader("Content-disposition", "attachment;filename=" + downLoadFileName + "\"");<br />下载文件名，最后改为 ISO8859_1这种编码，就ok了<img src ="http://www.blogjava.net/toby/aggbug/339902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-12-06 15:42 <a href="http://www.blogjava.net/toby/archive/2010/12/06/339902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>定时器和取得类路径</title><link>http://www.blogjava.net/toby/archive/2010/10/13/334988.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Wed, 13 Oct 2010 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/10/13/334988.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/334988.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/10/13/334988.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/334988.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/334988.html</trackback:ping><description><![CDATA[一、System.getProperty("user.dir");//获得当前项目的类路径<br />二、定时器<br />Timer timer = new Timer();<br />TimerTask task = new ReportThread();<br />timer.schedule(task, 1000L, 60*60*1000*12L);//默认为12小时运行一次，可根据实际情况调整<br />在ReportThread中可以通过this.scheduledExecutionTime()获得最近一次运行的时间<br />三、时间<br />SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");<br />sdf.parse(date)<br />sdf.format(date);<br /><br />当天的前一天<br />Calendar yestoday = Calendar.getInstance();       <br /> yestoday.add(Calendar.DAY_OF_MONTH, -1); <img src ="http://www.blogjava.net/toby/aggbug/334988.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-10-13 10:15 <a href="http://www.blogjava.net/toby/archive/2010/10/13/334988.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>axis1 和 axis2 的简单使用</title><link>http://www.blogjava.net/toby/archive/2010/10/08/333983.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Fri, 08 Oct 2010 08:17:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/10/08/333983.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/333983.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/10/08/333983.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/333983.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/333983.html</trackback:ping><description><![CDATA[
		<div class="blog_content">晚上顺便学习了下axis1 和 axis2，发现两者的API相差很大，不知道现在更流行的是哪个，就晚上简单的入门后觉得，axis2还是比axis1开发起来容易上手的多，axis1就单单对服务器发布.wsdd文件就相当麻烦。下面分别就axis1和axis2说下如何集成到自己的项目里： <br />    一、集成axis1 <br />      1、从官网下载项目<a href="http://ws.apache.org/axis/" target="_blank"><font color="#108ac6">http://ws.apache.org/axis/</font></a>，最新的是1.4 <br />      2、解压下载的axis压缩包，假设AXIS_HOME为解压后的根目录，demo为自己项目的名称 <br />      3、将AXIS_HOME/lib目录下的所有jar包都复制到自己项目的WEB-INF/lib下 <br />      4、将AXIS_HOME/webapps/axis/WEB-INF/web.xml中与axis相关的配置都复制粘贴到自己项目的web.xml中去。 <br />      5、编写需要发布SOAP服务的java类，注意要发布的方法需是public的。以下以Foo.java为例： <br /><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font size="4"><img id="Codehighlighter1_17_92_Open_Image" onclick="this.style.display='none'; Codehighlighter1_17_92_Open_Text.style.display='none'; Codehighlighter1_17_92_Closed_Image.style.display='inline'; Codehighlighter1_17_92_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_17_92_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_92_Closed_Text.style.display='none'; Codehighlighter1_17_92_Open_Image.style.display='inline'; Codehighlighter1_17_92_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> Foo </span><span id="Codehighlighter1_17_92_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></font><span id="Codehighlighter1_17_92_Open_Text"><font size="4"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_57_90_Open_Image" onclick="this.style.display='none'; Codehighlighter1_57_90_Open_Text.style.display='none'; Codehighlighter1_57_90_Closed_Image.style.display='inline'; Codehighlighter1_57_90_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_57_90_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_90_Closed_Text.style.display='none'; Codehighlighter1_57_90_Open_Image.style.display='inline'; Codehighlighter1_57_90_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />     </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> String sayHello(String name) </span><span id="Codehighlighter1_57_90_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></font><span id="Codehighlighter1_57_90_Open_Text"><font size="4"><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">  </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span></font><span style="COLOR: #000000"><font size="4"> name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />     }</font></span></span><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font></span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div></div></div></div><br />      6、接下来就是发布soap服务了，在axis1中有两种发布方式，即时发布和定制发布，下面分别介绍两种发布方式： <br />      6.1 即时发布：这样方式非常简单，将Foo.java的后缀名改成jws,即java.jws，然后把该文件放在项目里可以在客户端直接访问到的目录下（如WEB-INF就不可以），比如直接放在项目demo的根目录下，通过http://主机名/demo/Foo.jws访问，如果看到Click to see the WSDL就说明发布成功了，点击进去就能看WSDL的描述文件了。接下来就可以写客户端测试代码了： <br /><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    String path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/demo/Foo.jws</span><span style="COLOR: #000000">"</span></font><font size="4"><span style="COLOR: #000000">;;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    Service service </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font><font size="4"><span style="COLOR: #000000"> Service();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    Call call </span><span style="COLOR: #000000">=</span></font><font size="4"><span style="COLOR: #000000"> (Call) service.createCall();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    call.setTargetEndpointAddress(</span><span style="COLOR: #0000ff">new</span></font><font size="4"><span style="COLOR: #000000"> URL(path));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    call.setOperationName(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> QName(path ,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sayHello</span><span style="COLOR: #000000">"</span></font><font size="4"><span style="COLOR: #000000">));<br /><img id="Codehighlighter1_268_280_Open_Image" onclick="this.style.display='none'; Codehighlighter1_268_280_Open_Text.style.display='none'; Codehighlighter1_268_280_Closed_Image.style.display='inline'; Codehighlighter1_268_280_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_268_280_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_268_280_Closed_Text.style.display='none'; Codehighlighter1_268_280_Open_Image.style.display='inline'; Codehighlighter1_268_280_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    Object obj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> call.invoke(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Object[]</span><span id="Codehighlighter1_268_280_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_268_280_Open_Text"><span style="COLOR: #000000">{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lady gaga</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">}</span></span></font><span style="COLOR: #000000"><font size="4">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    System.out.println(obj.toString());<br /></font><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div></div></div></div><br />测试代码就不说明了，相信大家能看明白。即时发布方式非常简单、快速，但前提是必须有需要发布soap服务的JAVA类的源文件，如果只有.class或者jar包，那显然就不适用了。 <br />      6.2 定制发布：定制发布相对于即时发布要发杂一些，需要手写wsdd文件来描述web service，但是在牺牲了简单、快速之后，带来的却是灵活性和适用性的大大提高。 <br />       首先在WEB-INF/目录下创建deploy.wsdd文件，文件内容如下： <br /><div class="dp-highlighter"><div class="bar"><div class="tools">Xml代码 <br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">deployment name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">test</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> xmlns</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://xml.apache.org/axis/wsdd/</span><span style="COLOR: #000000">"</span></font><font size="4"><span style="COLOR: #000000"> <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    xmlns:java</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://xml.apache.org/axis/wsdd/providers/java</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font size="4"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">service name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">foo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> provider</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java:RPC</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </font></span><font size="4"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">parameter  name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">className</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Foo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/&gt;</span></font><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </font></span><font size="4"><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">parameter  name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">allowedMethods</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sayHello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/&gt;</span></font><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font></span><font size="4"><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">service</span><span style="COLOR: #000000">&gt;</span></font><span style="COLOR: #000000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font></span><font size="4"><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">deployment</span><span style="COLOR: #000000">&gt;</span></font></div><br />    &lt;deployment&gt;是wsdd文件的根元素。&lt;service&gt;代表一个soap服务，name属性唯一标识这个soap服务，provider表示提供服务的语言和方式，这里是用java语言和RPC方式。 <br />    &lt;paramter&gt;提供&lt;service&gt;更多参数信息，当name值为className时，value值为提供soap服务的JAVA类，当name值为allowedMethods时，value值为允许调用的方法。allowedMethods value等于*，表示MyService的所有方法都可以被调用 <br />      创建完了deploy.wsdd文件后，我们需要想服务器发布这个soap服务，这需要用到axis提供的一个工具类，打开cmd，进入到WEB-INF/下，执行如下命令： <br /></div></div></div><ul><li>set AXIS_HOME=D:\axis 
</li><li>set AXIS_LIB=%AXIS_HOME%\lib 
</li><li>set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;   %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar; <br />  %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar 
</li><li>java -cp %AXISCLASSPATH% org.apache.axis.client.AdminClient      -lhttp://localhost:8080/demo/services/AdminService deploy.wsdd <br /></li></ul><br />    以上的三个set命令，设置变量值AXISCLASSPATH为axis相关jar包路径集，java命令就是通过axis提供的工具类AdminClient来发布deploy.wsdd所描述的工具类，执行上面的命令之后（保持服务器是启动状态），会在同一目录下生成server-config.wsdd文件，说明发布成功。可以用6.1即时发布中的客户端测试代码来测试刚发布的soap服务，修改下path的值即可。 <br /><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">String path</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/demo/Foo</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span></font></div></div></div></div><br />    二、集成axis2 <br />    之前的准备工作和集成axis1相同，就是axis2所带的jar包非常之多，挑选必须的jar就可以了。 <br />    仍然以Foo类为例，在项目的WEB-INF/目录下建立名为pojo的目录，然后将Foo.<span style="COLOR: red">class</span>文件放入pojo目录中，这样就发布完成了，可以通过在浏览器输入http://主机名/demo/services/listServices来查看刚才发布的服务。简单吧，这就是axis2带来的无需任何配置，同样适合.class文件的发布方式。下面就是在客户端进行测试： <br /><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码 <br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #008000">//</span><span style="COLOR: #008000">调用web service 的 url</span></font><span style="COLOR: #008000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font></span><font size="4"><span style="COLOR: #000000">        String path </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">http://localhost:8080/demo/services/Foo</span><span style="COLOR: #000000">"</span></font><font size="4"><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">使用RPC的方式调用web service</span></font><span style="COLOR: #008000"><br /><font size="4"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></font></span><font size="4"><span style="COLOR: #000000">        RPCServiceClient serviceClient </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font><font size="4"><span style="COLOR: #000000"> RPCServiceClient();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Options options </span><span style="COLOR: #000000">=</span></font><font size="4"><span style="COLOR: #000000"> serviceClient.getOption();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        EndpointReference target </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span></font><font size="4"><span style="COLOR: #000000"> EndpointReference(path);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        options.setTo(target);<br /><img id="Codehighlighter1_370_382_Open_Image" onclick="this.style.display='none'; Codehighlighter1_370_382_Open_Text.style.display='none'; Codehighlighter1_370_382_Closed_Image.style.display='inline'; Codehighlighter1_370_382_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_370_382_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_370_382_Closed_Text.style.display='none'; Codehighlighter1_370_382_Open_Image.style.display='inline'; Codehighlighter1_370_382_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        Object[] params </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Object[]</span><span id="Codehighlighter1_370_382_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_370_382_Open_Text"><span style="COLOR: #000000">{</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">lady gaga</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">}</span></span></font><font size="4"><span style="COLOR: #000000">;<br /><img id="Codehighlighter1_422_435_Open_Image" onclick="this.style.display='none'; Codehighlighter1_422_435_Open_Text.style.display='none'; Codehighlighter1_422_435_Closed_Image.style.display='inline'; Codehighlighter1_422_435_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_422_435_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_422_435_Closed_Text.style.display='none'; Codehighlighter1_422_435_Open_Image.style.display='inline'; Codehighlighter1_422_435_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />        Class[] classes </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Class[]</span><span id="Codehighlighter1_422_435_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_422_435_Open_Text"><span style="COLOR: #000000">{String.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">}</span></span></font><font size="4"><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        QName q </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> QName(path,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sayHello</span><span style="COLOR: #000000">"</span></font><font size="4"><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        Object obj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> serverClient.invokeBlocking(q,params,classes)[</span><span style="COLOR: #000000">0</span></font><span style="COLOR: #000000"><font size="4">];<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        System.out.println(obj.toString());<br /></font><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />  从上面可以看出来，axis2和axis1API相差还是很大的。 </div></div></div></div>
		<script type="text/javascript">
				<!--
google_ad_client = "pub-1076724771190722";
/* JE个人博客468x60 */
google_ad_slot = "5506163105";
google_ad_width = 468;
google_ad_height = 60;
//-->
		</script>
		<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
		</script>
		<script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js">
		</script>
		<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js">
		</script>
		<script src="http://pagead2.googlesyndication.com/pagead/render_ads.js">
		</script>
		<script><![CDATA[oogle_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);]]&gt;</script>
<img src ="http://www.blogjava.net/toby/aggbug/333983.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-10-08 16:17 <a href="http://www.blogjava.net/toby/archive/2010/10/08/333983.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>再一次webservice发布服务步骤记录</title><link>http://www.blogjava.net/toby/archive/2010/09/30/333563.html</link><dc:creator>tobyxiong</dc:creator><author>tobyxiong</author><pubDate>Thu, 30 Sep 2010 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/toby/archive/2010/09/30/333563.html</guid><wfw:comment>http://www.blogjava.net/toby/comments/333563.html</wfw:comment><comments>http://www.blogjava.net/toby/archive/2010/09/30/333563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/toby/comments/commentRss/333563.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/toby/services/trackbacks/333563.html</trackback:ping><description><![CDATA[
		<font size="4">1.下载axis.war包。下载地址</font>
		<a href="http://download.csdn.net/source/177442">
				<font size="4">http://download.csdn.net/source/177442</font>
		</a>
		<br />
		<font size="4">2.将war包放到tomcat的\webapps目录下<br />3.启动tomcat后。在浏览器键入</font>
		<a href="http://localhost:8080/axis2/">
				<font size="4">http://localhost:8080/axis2/</font>
		</a>
		<font size="4">进行访问，会出现axis2的成功页面<br />4.点击</font>
		<a href="http://localhost:8080/axis2/axis2-admin/">
				<font size="4">Administration</font>
		</a>
		<font size="4"> 这个链接，进入登录页面。用户名：admin  。密码：axis2<br />5.新建java文件</font>
		<br />
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="4">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">package</span>
				</font>
				<font size="4">
						<span style="COLOR: #000000"> test.joeyta;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_53_204_Open_Image" onclick="this.style.display='none'; Codehighlighter1_53_204_Open_Text.style.display='none'; Codehighlighter1_53_204_Closed_Image.style.display='inline'; Codehighlighter1_53_204_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_53_204_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_53_204_Closed_Text.style.display='none'; Codehighlighter1_53_204_Open_Image.style.display='inline'; Codehighlighter1_53_204_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.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"> HelloWorldService </span>
						<span id="Codehighlighter1_53_204_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>
				</font>
				<span id="Codehighlighter1_53_204_Open_Text">
						<font size="4">
								<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_89_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_89_202_Open_Text.style.display='none'; Codehighlighter1_89_202_Closed_Image.style.display='inline'; Codehighlighter1_89_202_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_89_202_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_89_202_Closed_Text.style.display='none'; Codehighlighter1_89_202_Open_Image.style.display='inline'; Codehighlighter1_89_202_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
								<span style="COLOR: #0000ff">public</span>
								<span style="COLOR: #000000"> String echo(String value) </span>
								<span id="Codehighlighter1_89_202_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>
						</font>
						<span id="Codehighlighter1_89_202_Open_Text">
								<font size="4">
										<span style="COLOR: #000000">{ </span>
										<span style="COLOR: #008000">//</span>
										<span style="COLOR: #008000"> 這個 service 只是將輸入的文字 return 出去</span>
								</font>
								<span style="COLOR: #008000">
										<br />
										<font size="4">
												<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
										</font>
								</span>
								<font size="4">
										<span style="COLOR: #000000">        System.out.println(</span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000">Service HelloWorldService: </span>
										<span style="COLOR: #000000">"</span>
										<span style="COLOR: #000000"> </span>
										<span style="COLOR: #000000">+</span>
								</font>
								<font size="4">
										<span style="COLOR: #000000"> value);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
										<span style="COLOR: #0000ff">return</span>
								</font>
								<span style="COLOR: #000000">
										<font size="4"> value;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</font>
								</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<font size="4">
										<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</font>
						</span>
				</span>
		</div>
		<br />
		<font size="4">6.新建service.xml文件</font>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<font size="4">
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">service</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font>
				</span>
				<font size="4">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">parameter </span>
						<span style="COLOR: #ff0000">name</span>
						<span style="COLOR: #0000ff">="ServiceClass"</span>
						<span style="COLOR: #ff0000"> locked</span>
						<span style="COLOR: #0000ff">="false"</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        test.joeyta.HelloWorldService<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font>
				</span>
				<font size="4">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">parameter</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font>
				</span>
				<font size="4">
						<span style="COLOR: #0000ff">&lt;</span>
						<span style="COLOR: #800000">operation </span>
						<span style="COLOR: #ff0000">name</span>
						<span style="COLOR: #0000ff">="echo"</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </font>
				</span>
				<span style="COLOR: #0000ff">
						<font size="4">&lt;</font>
				</span>
				<font size="4">
						<span style="COLOR: #800000">messageReceiver<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span>
						<span style="COLOR: #ff0000">class</span>
						<span style="COLOR: #0000ff">="org.apache.axis2.rpc.receivers.RPCMessageReceiver"</span>
						<span style="COLOR: #ff0000"> </span>
						<span style="COLOR: #0000ff">/&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </font>
				</span>
				<font size="4">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">operation</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
				<span style="COLOR: #000000">
						<br />
						<font size="4">
								<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
						</font>
				</span>
				<font size="4">
						<span style="COLOR: #0000ff">&lt;/</span>
						<span style="COLOR: #800000">service</span>
						<span style="COLOR: #0000ff">&gt;</span>
				</font>
		</div>
		<br />
		<font size="4">7.打包，打包前目录结构<br />--build</font>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">        --ws_server</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">             --META-INF</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">                  --services.xml</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">             --test</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">                --joeyta</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<span style="FONT-SIZE: 9pt">
						<font size="4">                     --HelloWorldService.class<br /></font>
				</span>
				<span style="FONT-SIZE: 9pt">
						<font size="4">
								<span style="FONT-SIZE: 9pt">
										<br />
								</span>
						</font>
				</span>
		</div>
		<div style="MARGIN: 0in 0in 0pt">
				<div style="MARGIN: 0in 0in 0pt">
						<span style="FONT-SIZE: 9pt">
								<font size="4">在windows环境下，在console下，更换目录到build\ws_server</font>
						</span>
				</div>
				<div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 9pt">
						<span style="FONT-SIZE: 9pt">
								<font size="4">输入一下命令：</font>
						</span>
				</div>
				<div style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 9pt">
						<font size="4">jar –cf ws_server.aar . ，<span style="FONT-SIZE: 9pt">注意最后一个点代表当前目录。</span></font>                   <br /><br /><font size="4">8.发布<br />发布：<br />   AXIS2的webservice的发布是这样的，首先你要先把AXIS2的war distribution发到到一个servlet容器中，我这里用的是Tomcat. 发布的方法前面提到了：把axis2.war拷贝到%TOMCAT-HOME%/webapps下。<br /> <br />启动tomcat,然后输入：<a href="http://localhost:8080/axis2/axis2-admin/">http://localhost:8080/axis2/axis2-admin/</a> 输入用户名admin 密码axis2就进入了axis2    Web Admin Module,然后在页面左边的菜单的Tools下选择Upload Service,然后选择前面打好的interop.aar<br />upload.<br /> <br />还有种手动发布的方式,你发布axis2.war 到tomcat的时候，tomcat会自动展开生成一个axis2的目录在<br />%TOMCAT-HOME%/webapps下面，进入到目录%TOMCAT-HOME%\webapps\axis2\WEB-INF\services，把前面打好包的interop.aar拷贝到这里.<br /><br />9.测试的话可以看axis2客户端生成代码这篇</font></div>
		</div>
<img src ="http://www.blogjava.net/toby/aggbug/333563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/toby/" target="_blank">tobyxiong</a> 2010-09-30 16:36 <a href="http://www.blogjava.net/toby/archive/2010/09/30/333563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>