雪湖小札@blogjava

          心情與技術(shù)文檔同行 http://hi.baidu.com/jingleq

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            24 Posts :: 2 Stories :: 4 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(4)

          我參與的團(tuán)隊(duì)

          隨筆檔案(24)

          文章檔案(2)

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

            小試了一把用groovy來寫java的rmi,體驗(yàn)到了groovy對(duì)java的兼容性,無論從代碼上還是功能上!真的可以理groovy就是腳本化的java,groovy就是java擴(kuò)衡ruby on rails的武器!
            參考了網(wǎng)上的經(jīng)典《Java RMI 入門》,我寫了兩個(gè)groovy文件。因?yàn)橄敕略靔ava的文件管理方式,所以我把接口寫成一個(gè)groovy文件,實(shí)現(xiàn)類寫成一個(gè)groovy文件。雖然單個(gè)groovy文件名可以和里面的類名不一樣,但是如果出現(xiàn)不一樣的,在import關(guān)聯(lián)的時(shí)候就會(huì)出現(xiàn)問題。
          F:\grails_apps\groovy\com\c2\HelloIn.groovy
          package com.c2;

          import java.rmi.*;
          interface HelloIn extends java.rmi.Remote {
           String sayHello() 
          throws RemoteException;
          }
          F:\grails_apps\groovy\com\c2\Hello.groovy
          package com.c2;

          import java.rmi.*;
          import java.net.*;
          import java.rmi.registry.*;
          import java.rmi.server.*;

          class Hello extends java.rmi.server.UnicastRemoteObject implements HelloIn {
              Hello() 
          throws RemoteException{
                  
          super();
              }

               String sayHello() 
          throws RemoteException{
                
          return "Hello,World!";
               }
           
               
               
          static void main(args){
            
          try{
                Hello h
          =new Hello();
                Naming.rebind(
          "hello",h);
                println 
          "ready ";
             }
           catch(Exception e){
                     e.printStackTrace();
             }

            }

          }
            因?yàn)樵趯憆mi的時(shí)候需要通過命令從.class文件中生成*_Stub.class文件,所以必須把groovy文件通過groovyc編譯成.class文件,再通過命令rmic **來生成*_Stub.class。另外一個(gè)要運(yùn)行g(shù)roovy生成的.class文件需要加入groovy的相關(guān)包。為了使執(zhí)行過程自動(dòng)化,使用了ant來處理。
            在開啟rmi的注冊(cè)服務(wù)之后就可以通過ant來執(zhí)行rmi了。開戶rmi服務(wù)命令:rmiregistry
            在執(zhí)行rmi的時(shí)候關(guān)鍵是給jvm加個(gè)參數(shù)-Djava.rmi.server.codebase=file:/F:\grails_apps\groovy\/,注意,網(wǎng)上挺多-Djava.server.codebase的寫法,這種寫法在我的試驗(yàn)中不能通過。
          F:\grails_apps\groovy\build.xml
          <project name="mygroovy-build" default="run">
              
          <property environment="env"/>
              
          <path id="groovy.classpath">
                  
          <fileset dir="C:/groovy-1.0/lib/"/>
              
          </path>
              
          <taskdef name ="groovyc" classname ="org.codehaus.groovy.ant.Groovyc" classpathref="groovy.classpath"/>
              
          <target name="compile" description="compile groovy to bytecode">
                  
          <mkdir dir="classes"/>
                  
          <groovyc destdir="classes" srcdir="." includes="com/c2/HelloIn.groovy,com/c2/Hello.groovy" classpathref="groovy.classpath">
                  
          </groovyc>
              
          </target>
              
          <target name="mksub" depends="compile" description="make the sub">
                  
          <rmic classname="com.c2.Hello" base="F:/grails_apps/groovy/classes/"/>
              
          </target>
              
          <target name="run" depends="mksub" description="run the compiled class">
                  
          <java classname="com.c2.Hello" fork="true">
                      
          <classpath refid="groovy.classpath"/>
                      
          <classpath location="classes"/> 
                      
          <jvmarg value="-Djava.rmi.server.codebase=file:/F:\grails_apps\groovy\/" />
                  
          </java>
              
          </target>
          </project>
            可能會(huì)遇到編譯時(shí)的lib問題,如果缺少什么lib就用set classpath吧~`這個(gè)問題我也有點(diǎn)疑惑,在另一臺(tái)機(jī)器上使用<path id="groovy.classpath"><fileset dir="C:/groovy-1.0/lib/"/></path>不起作用,只能在控制臺(tái)上事先用set classpath來加下包。
          posted on 2007-07-19 10:43 csnowfox 閱讀(1327) 評(píng)論(1)  編輯  收藏

          Feedback

          # re: 跑在groovy上的rmi 2007-07-21 11:47 山風(fēng)小子
          Groovy可以充分利用Java世界中的一切資源,這也是Groovy的一大優(yōu)勢(shì) :)  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 若尔盖县| 芜湖县| 荔波县| 榕江县| 陆河县| 玉门市| 五大连池市| 晋州市| 静宁县| 乌鲁木齐县| 锦州市| 拜城县| 邵东县| 海林市| 特克斯县| 台东市| 昌平区| 久治县| 青阳县| 龙陵县| 滨海县| 百色市| 冀州市| 新蔡县| 青龙| 侯马市| 南城县| 德阳市| 贡觉县| 湘西| 盐池县| 黄骅市| 霸州市| 通辽市| 隆化县| 邛崃市| 宁津县| 南京市| 普陀区| 靖边县| 溆浦县|