小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

java實(shí)現(xiàn)CORBA

 宇宙之窗 2014-11-04

1.      利用CORBA實(shí)現(xiàn)數(shù)據(jù)的訪問,也就是通過客戶端的代碼,訪問服務(wù)器端的代碼。首先是定義一個(gè)idl文件,里面的主要類型就是定義一個(gè)接口,類容如下:


2.      然后利用idlj –fall DataService.idl 命令來編譯idl文件,編譯后得到了許多的java文件,文件如下所示:


再然后,在該文件中建立一個(gè)Server文件夾,然后將生成的文件放入,并且建立一個(gè)java功能,作為服務(wù)器端,這里要求從數(shù)據(jù)庫讀取數(shù)據(jù),所以我們寫了一個(gè)DBManager類來實(shí)現(xiàn)與數(shù)據(jù)庫的連接,以及插入、查詢功能:里面的代碼如下:

 

  1.    
  2. importjava.sql.Connection;  
  3. importjava.sql.DriverManager;  
  4. importjava.sql.ResultSet;  
  5. importjava.sql.SQLException;  
  6.    
  7. publicclass DBManager {  
  8.    private static String user ="root";  
  9.    private static String pass ="962464";  
  10.    private static String className="com.mysql.jdbc.Driver";  
  11.    private static String url ="jdbc:mysql://localhost:3306/students";  
  12.    private static Connection conn;  
  13.    private static java.sql.Statement state;  
  14.    public static void init()  
  15.    {  
  16.           try {  
  17.                  Class.forName(className);  
  18.                   conn =DriverManager.getConnection(url,user,pass);  
  19.                   state =conn.createStatement();  
  20.                     
  21.                     
  22.           } catch (ClassNotFoundException e) {  
  23.                  // TODO Auto-generated catchblock   
  24.                  e.printStackTrace();  
  25.           } catch (SQLException e) {  
  26.                  // TODO Auto-generated catchblock   
  27.                  e.printStackTrace();  
  28.           }  
  29.    }  
  30.    public static void CreateTable(){  
  31.           String sql = "create tablestuScore ( num char(20) Primary key,score double);";  
  32.           try {  
  33.                  state.execute(sql);  
  34.     
  35.           } catch (SQLException e) {  
  36.                  e.printStackTrace();  
  37.           }  
  38.    }  
  39.    public static void insert(String num,doublescore)  
  40.    {  
  41.           String sql = "insert intostuScore values("+"'"+num+"',"+score+");";  
  42.           try {  
  43.                  state.execute(sql);  
  44.                   
  45.           } catch (SQLException e) {  
  46.                  // TODO Auto-generated catchblock   
  47.                  e.printStackTrace();  
  48.           }  
  49.    }  
  50.     
  51.     
  52.    public static double select(String num)  
  53.    {  
  54.           String sql  = "select score from stuScore where num= '"+num+"';";  
  55.           double result= 0;  
  56.           try {  
  57.                  ResultSet rs =state.executeQuery(sql);  
  58.                  while(rs.next())  
  59.                  {  
  60.                          result = rs.getDouble("score");  
  61.                  }  
  62.            
  63.           } catch (SQLException e) {  
  64.                  // TODO Auto-generated catchblock   
  65.                  e.printStackTrace();  
  66.           }  
  67.           return result;  
  68.    }  
  69. }  

 

3.      然后就是編寫服務(wù)器端的代碼,在服務(wù)器端里面有一個(gè)類實(shí)現(xiàn)定一個(gè)的接口里面的代碼如下:

  1. class DataServiceImpl extends DataServicePOA {  
  2.    private ORB orb ;  
  3.    private studentScore s =new studentScore();  
  4.    publicvoid setorb(ORB orb)  
  5.    {  
  6.       this.orb = orb;  
  7.        
  8.    }  
  9.     
  10.    @Override  
  11.    publicvoid insert(String num, double score) {  
  12.       DBManager.insert(num, score);  
  13.    }  
  14.    @Override  
  15.    publicdouble select(String num) {  
  16.     
  17.       return   DBManager.select(num);  
  18.        
  19.    }  
  20.    @Override  
  21.    publicvoid selectAll() {  
  22.       // TODO Auto-generatedmethod stub   
  23.        
  24.    }  
  25. }  


這樣服務(wù)器端提供的功能都實(shí)現(xiàn)了,然后在服務(wù)端創(chuàng)建服務(wù)對(duì)象并將其向 ORB 注冊(cè)這樣服務(wù)端的代碼就寫好了。

 

4.      下面就是寫客戶端的代碼,和前面一個(gè)將生成的文件加入到客戶端文件中,然后編寫一個(gè)客戶端文件,主要是實(shí)現(xiàn)數(shù)據(jù)初始化,并且連接服務(wù)程序,這里面需要輸入IOR碼,并且必須和服務(wù)器端產(chǎn)生的一樣,這樣才能得到服務(wù)端的服務(wù),得到服務(wù)對(duì)象之后就是對(duì)服務(wù)端的方法的調(diào)用實(shí)現(xiàn)數(shù)據(jù)的插入和查詢操作。

5.      下面就將運(yùn)行的過程演示一遍:

首先是啟動(dòng)服務(wù)端:


然后就是運(yùn)行客戶端:


等待用戶輸入IOR碼.(是由服務(wù)器端產(chǎn)生的),然后輸入IOR碼:


然后就是根據(jù)數(shù)字選擇操作開始調(diào)用方法了,我們隨便來演示幾個(gè):


插入成功,然后我們查詢一下看看是不是正確的:


然后為了保證是正確的我們?cè)偃?shù)據(jù)庫中看看:


數(shù)據(jù)庫中也有我們插入的數(shù)據(jù),說明是正確的。

這樣我們就完成了java開發(fā)CORBA的過程。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多