2013-05-27 27 views
1

我與vertx一個小白,但使用的Java類,我可以從結果集打印數據我已經創建了JDBC連接管理器:如何使用Vert.x從JDBC + Java將數據轉換爲Javascript?

ConnectionManager cm=ConnectionManager.getInstance(); 
Connection conn = cm.getConnection(); 
try { 
    Statement stmt=conn.createStatement(); 
    try { 
     ResultSet rs = 
     stmt.executeQuery("select username, password from users");    
     try { 
      if (rs.next()){ 
       System.out.println(rs.getString(1)); 
      } 
     } finally { 
      rs.close(); 
     } 

    } finally { 
     stmt.close(); 
    } 

} finally { 
    conn.close(); 
} 

現在我要連接我的vertx的JavaScript應用這個java類。我似乎無法想出從哪裏開始。我發現從谷歌網上論壇的幾個來源,但他們都不給一些啓發:

加載JDBC從JavaScript https://groups.google.com/forum/?fromgroups#!topic/vertx/_oJQaeH07Sg

執行Java從Javascript https://groups.google.com/forum/#!msg/vertx/VyZj2yqqGTM/tvnTg4T55kMJ

我驅動程序我們還發現了Vert.x的jdbc-persistor:

JDBC-persistor https://github.com/timyates/mod-jdbc-persistor/

我仍然試圖瞭解如何將它與我的應用程序一起使用。我會發布任何我可以分享的信息,但現在,任何人都可以幫助我(persistor或直接java通信)?謝謝。

+0

如何發送數據到與json垂直的javascript? – ollins

回答

2

AFAIK唯一的方法就是使用事件總線。 將Java代碼放在Verticle類中(或者爲了目標創建一個模塊)。這樣

public class JavaFromEverywhere extends Verticle { 

    @Override 
    public void start() throws Exception { 
     vertx.eventBus().registerHandler("invokeFromAnyLanguage", new Handler<Message<String>>(){ 
      public void handle(Message<String> e) { 
       doSomething(); 
      } 

     }); 
    } 

    private void doSomething() { 
     // your database code here 
    } 

} 

東西然後,在JavaScript,你應該只寫

vertx.eventBus.send("invokeFromAnyLanguage", ""); 

這是一個簡單的場景。如果你想做更復雜的事情,比如向你的JS發送從DB接收到的字符串,你可以擴展BusModBase併發回數據。與此同時,在你的JS,你應該註冊一個處理程序來處理的答覆

public class JavaReply extends BusModBase { 

    @Override 
    public void start() { 
     eb.registerHandler("invokeFromAnyLanguage", new Handler<Message<String>>(){ 
      public void handle(Message<String> e) { 
       String something = doSomething(); 
       e.reply(something); 
      }     
     });   
    } 

    private String doSomething() { 
     // your database code here 
     return "databaseResult"; 
    } 

} 

和你的JS代碼將類似於

eb.send("invokeFromAnyLanguage", "", function(javareply) { 
    // your answer in javareply 
}); 

HTH,問候

卡羅

相關問題