不要为了位置,而放弃追求未来。

位置可以放弃,未来必须努力!
posts - 6, comments - 3, trackbacks - 0, articles - 0
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

2011年10月20日

Git是一个开源的分布式版本控制系统,提供了非常快捷和强大的项目版本管理功能。
EGit项目是一个基于Eclipse插件开发的,很大程度上方便了我们Eclipse一族。
Help-->Install New Software-->Add
Egit
http://download.eclipse.org/egit/updates/ 
注意egit对应eclipse的版本~
然后按默认操作,待确认重启即完成安装!

posted @ 2011-10-20 17:10 贺瑞龙 阅读(1795) | 评论 (2)编辑 收藏

2011年9月28日

Axis支持三种web  service的部署和开发,分别为:  
 
1、Dynamic  Invocation  Interface  (  DII)  
 
2、Stubs方式  
 
3、Dynamic  Proxy方式  
 
二、编写DII(Dynamic  Invocation  Interface  )方式web服务  
 
1.编写服务端程序HelloClient  
 
 
public  class  HelloClient  
{  
       public  String  getName(String  name)  
       {  
               return  "hello  "+name;  
       }  
}  
   
 
 
 
2、将源码拷贝到Axis_HOME下,重命名为  HelloClient.jws    
 
3、访问连接http://localhost:8080/Axis/HelloClient.jws?wsdl,页面显示Axis自动生成的wsdl    
 
4、编写访问服务的客户端  TestHelloClient.java    
 
 
import  org.apache.Axis.client.Call;  
import  org.apache.Axis.client.Service;  
import  javax.xml.namespace.QName;  
import  javax.xml.rpc.ServiceException;  
import  java.net.MalformedURLException;  
import  java.rmi.RemoteException;  
 
public  class  SayHelloClient2  
{  
       public  static  void  main(String[]  args)  
           {  
               try  
                       {  
   String  endpoint  =  
   "http://localhost:8080/Axis/HelloClient.jws";  
 
       Service  service  =  new  Service();  
                       Call  call  =  null;  
 
                       call  =  (Call)  service.createCall();  
 
                       call.setOperationName(new  QName(  
                             "http://localhost:8080/Axis/HelloClient.jws",    
                                         "getName"));  
                       call.setTargetEndpointAddress  
                                   (new  java.net.URL(endpoint));  
 
                       String  ret  =  (String)  call.invoke(new  Object[]    
                                   {"zhangsan"});  
                       System.out.println("return  value  is  "  +  ret);  
               }    
                       catch  (Exception  ex)  
                       {  
             ex.printStackTrace();  
               }  
       }  
}  
   
 
 
 
三、编写Dynamic  Proxy方式访问服务    
 
1、编写部署服务端程序,同上边DII方式,本次仍使用上边部署的HelloClient    
 
2、编写代理接口    
 
 
public  interface  HelloClientInterface  
extends  java.rmi.Remote  
{  
       public  String  getName(String  name)  
           throws  java.rmi.RemoteException;  
}  
   
 
 
 
3、编写并执行客户端程序TestHelloClient.java    
 
 
import  javax.xml.rpc.Service;  
import  javax.xml.rpc.ServiceFactory;  
import  java.net.URL;  
import  javax.xml.namespace.QName;  
 
public  class  TestHelloClient    
{  
       public  static  void  main(String[]  args)  
           {  
               try  
               {  
                       String  wsdlUrl  =    
                                   "http://localhost:8080/Axis/HelloClient.jws?wsdl";  
                       String  nameSpaceUri  =    
                                   "http://localhost:8080/Axis/HelloClient.jws";  
                       String  serviceName  =  "HelloClientService";  
                       String  portName  =  "HelloClient";  
 
                       ServiceFactory  serviceFactory  =    
                                   ServiceFactory.newInstance();  
                       Service  afService  =  
                                   serviceFactory.createService(new  URL(wsdlUrl),  
                 new  QName(nameSpaceUri,  serviceName));  
                       HelloClientInterface  proxy  =  (HelloClientInterface)  
               afService.getPort(new  QName(  
                                       nameSpaceUri,  portName),    
                                                           HelloClientInterface.class);  
                       System.out.println  
                                   ("return  value  is  "+proxy.getName("john")  )  ;  
               }catch(Exception  ex)  
               {  
                       ex.printStackTrace()  ;  
               }  
       }  
}  
   
 
 
 
四、编写wsdd发布web服务,编写stub  client访问web服务    
 
1、编写服务端程序server,SayHello.java,编译server.SayHello.java    
 
 
package  server;  
public  class  SayHello  
{  
       public  String  getName(String  name)  
       {  
               return  "hello  "+name;  
       }  
}  
2.编写LogHandler.java  
import  org.apache.Axis.AxisFault;  
import  org.apache.Axis.Handler;  
import  org.apache.Axis.MessageContext;  
import  org.apache.Axis.handlers.BasicHandler;  
 
import  java.util.Date;  
 
public  class  LogHandler    
extends  BasicHandler    
{  
 public  void  invoke  
(MessageContext  msgContext)    
throws  AxisFault  
       {  
               /**  Log  an  access  each  time    
                       we  get  invoked.  
                 */  
               try  {  
                       Handler  serviceHandler  
                                   =  msgContext.getService();  
 
                       Integer  numAccesses  =  
   (Integer)serviceHandler.getOption("accesses");  
                       if  (numAccesses  ==  null)  
                               numAccesses  =  new  Integer(0);  
numAccesses  =  new  Integer  
(numAccesses.intValue()  +  1);  
Date  date  =  new  Date();  
 String  result  =    
 date  +  ":  service  "  +  
msgContext.getTargetService()  +  
"  accessed  "  +  numAccesses  +  "  time(s).";  
serviceHandler.setOption  
("accesses",  numAccesses);  
System.out.println(result);  
               }  catch  (Exception  e)  
                       {  
                       throw  AxisFault.makeFault(e);  
               }  
       }  
}  
   
 
 
 
3、编写wsdd文件    
 
 
deploy.wsdd  
<deployment  xmlns=  
"http://xml.apache.org/Axis/wsdd/"  
   xmlns:java=  
                                   "http://xml.apache.org/Axis/wsdd/providers/java">                        
     <handler  name="print"  type="java:LogHandler"/>    
 <service  name="sayhello"  
 provider="java:RPC">  
     <requestFlow>  
         <handler  type="print"/>  
     </requestFlow>  
   <parameter  name="className"    
   value="server.SayHello"/>  
   <parameter  name="allowedMethods"  
   value="*"/>      
 </service>  
</deployment>  
   
 
 
 
3、将编译后的文件拷贝到Axis_HOME/WEB-INF/classes下,如:D:\tomcat\webapps\Axis\WEB-INF\classes    
 
4、发布服务:    
 
java  org.apache.Axis.client.AdminClient  deploy.wsdd    
 
5、生成client  stub文件    
 
a:方式1    
 
将SayHello.java拷贝到Axis_HOME/下,重命名为SayHello.jws,    
 
执行下面的命令生存client  stub    
 
 
java  org.apache.Axis.wsdl.WSDL2Java    
-p  client    http://localhost:8080  
/Axis/services/SayHello.jws?wsdl  
   
 
 
 
b:方式2    
 
执行如下命令生成SayHello.wsdl    
 
 
java  org.apache.Axis.wsdl.Java2WSDL  
-oSayHello.wsdl  -lhttp://localhost:8080  
/Axis/services/SayHello  -nsayhello  server.SayHello  
   
 
 
 
执行如下命令生成client  stub    
 
 
java  org.apache.Axis.wsdl.WSDL2Java    
SayHello.wsdl    -p  client  
   
 
 
 
生成的stub  client文件列表为:    
 
1.SayHello.java    
 
2.SayHelloService.java。    
 
3.SayHelloServiceLocator.java    
 
4.SayHelloSoapBindingStub.java    
 
6、编写客户端程序,编译并执行    
 
 
public  class  SayHelloClient  
{  
       public  static  void  main(String[]  args)  
           {  
               try  
                       {  
       SayHelloService  service  =  new  client.  
             SayHelloServiceLocator();  
                   client.SayHello_PortType    
                           client  =  service.getSayHello();  
                       String  retValue=client.getName("zhangsan");  
                       System.out.println(retValue);  
}    
catch  (Exception  e)  
{  
 System.err.println  
 ("Execution  failed.  Exception:  "  +  e);  
               }  
       }  
}  

posted @ 2011-09-28 15:47 贺瑞龙 阅读(393) | 评论 (0)编辑 收藏

2011年9月21日

        Xml的语法和HTML类似,都以一对相互匹配的起始和结束标记符号来标识信息。但是二者之间功能不同,HTML是用于显示数据信息,而XML的标记则是用于描述数据的性质和结构,两者之间的区别如下:
        1.HTML将数据和其显示效果混在一起,它是一种表现技术,定义如何显示信息的标签;而XML文档只是存储了数据和描述了数据之间的关系,并没有规定如何显示数据,即将数据和其显示进行了分离。
        2.HTML的格式要求比较松散,而HTML解析器通常采用尽量解释的机制,这样容易造成同一个页面在不同的浏览器中可能显示出大不相同的结果。而XMlL是非常严格的标记语言,如:严格区分大小写等问题。
        3.HTMl的标记集合是固定的,你不能在自己的应用中扩展HTML标记;而XML没有提供一组事先已经定义好的标签,只是提供了一个标准,可以按照这个标准来定义自己专用的标记,所以XML的标记是可以无限的扩展的,它可以用于描述各种应用领域的数据信息。
        4.XML允许粒度更新,不必在XML文档每次有局部改变时都发送整个文档的内容,只有改变的元素才必须从服务器发送到客户机,而HTML却不支持这样的功能。
        总结:XML不是HTML的升级,也不是HTML的代替产品,虽然两者之间相似,但他们的应用领域和范围完全不同。HTML的最终版本是HTML 4.01,HTMl目前已经不是Web标记的标准,它已经被XHTML所取代,XHTMLHTML和XML的混合物,它全采取的是XML的语法和规则来编写Web页面。XHTML有效的结合了HTML的简单性和XML的可扩展行,它所运用的标记和属性基本上还是HTML中定义的标记。XML可以应用在金融、科研等各个领域,XHTML只是XML在Web领域的一种应用。

posted @ 2011-09-21 12:02 贺瑞龙 阅读(249) | 评论 (0)编辑 收藏

2011年9月20日

        在使用java和Flex这两个技术开发项目的时候,为了方便,快速的开发,可以给Java的开发工具中,添加Flex开发的插件。具体操作如下:

        1、在eclipse官网上下载eclipse3.3并安装。

        2、在adobe的网站上下载Flex Builder 3 进行安装。

        3、在任意目录建一个以下结构的目录:flex_plugin->eclipse->plugins , features

        4、进入Flex Builder 3 的安装目录 将plugins目录下所有以 com.adobe 开头的文件或文件夹copy到上面建好的 plugins 目录下。

        5、进入Flex Builder 3 的安装目录 将features目录下所有以 com.adobe 开头的文件或文件夹copy到上面建好的 features目录下。

        6、在eclipse3.3下新建一个myplugins目录,并将flex_plugin目录剪切到myplugins目录下。

        7、在eclipse3.3下新建一个links目录,并在links目录下新建一个flex_plugin.link文件,在文件中写入: path=ECLIPSE_HOME\\myplugins\\flex_plugin

        8 、进入Flex Builder 3 的安装目录,将sdks目录copy到其它的目录下。

        9、打开eclipse进入 window->preferences->flex->installed flex sdks ,设置一下你的flex sdk 路径。至此我们以经成功的安装了 eclipse flex plugin 了。这个时候你可以卸载你的Flex Builder 3 了。

        有人会说:我直接用Flex Builder 3 开发就好了,何必如此麻烦。我的答案是:当然,你完全可以直接用Flex Builder 3 进行开发。我这样做的目的只是不想在开发的时候开着两个完全可以合并到一起的ide。

 

posted @ 2011-09-20 21:03 贺瑞龙 阅读(2411) | 评论 (0)编辑 收藏

Jode是一种反编译的工具,如果将其添加到eclipse中,可以方便程序员的开发。
        eclipse工具配置Jode反编译工具步骤如下:
        eclipse:help => Software Updates => Find and Install... => Search for new features to install,单击"New Remote Site..." 在URL栏输入 http://www.technoetic.com/eclipse/update 然后下一步,就可以看到“jode decompiler plugin *.*”了,选上安装就可以了,由于Jode Decompiler是纯Java编写的所以也不需要其他的什么组件来支持了,安装好了可以看到Window => Preferences... => Java => Jode Decompiler选项卡。安装好了再设置一下文件关联就可以了,Window => Preferences... => General => Editors => File Associations找到"*.class"在"Associated editors"里面可以看到"Jode class file viewer"选中它再单击Default按钮就OK了.
        随后,就可以使用Jode查看包括Jar包内.class文件的源代码了。


posted @ 2011-09-20 13:26 贺瑞龙 阅读(399) | 评论 (0)编辑 收藏

2011年9月19日

  有这样一句话:“老板只能给你一个位置,却给不了你一个未来!”......

posted @ 2011-09-19 23:21 贺瑞龙 阅读(258) | 评论 (1)编辑 收藏