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

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

2011年9月21日

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)编辑 收藏

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)编辑 收藏

        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)编辑 收藏