java - 如何使用 Vert.x 从 JDBC + Java 获取数据到 Javascript?

标签 java javascript jdbc vert.x

我是 vertx 的新手,但我已经使用 java 类创建了 JDBC 连接管理器,我可以在其中打印结果集中的数据:

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 类。我似乎不知道从哪里开始。我从 Google 网上论坛找到了一些来源,但似乎没有一个能说明一些问题:

从 JavaScript 加载 JDBC 驱动程序 https://groups.google.com/forum/?fromgroups#!topic/vertx/_oJQaeH07Sg

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

我还找到了一个用于 Vert.x 的 jdbc-persistor:

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

我仍在尝试了解如何将它与我的应用程序一起使用。之后我会发布我可以分享的任何信息,但是现在,任何人都可以帮助我(持久性或直接 Java 通信)吗?谢谢。

最佳答案

据我所知,唯一的方法是使用事件总线。 您将您的 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 发送从数据库接收到的字符串,你可以扩展 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,此致

卡罗

关于java - 如何使用 Vert.x 从 JDBC + Java 获取数据到 Javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767667/

相关文章:

java.sql.SQLException : No suitable driver on tomcat 8. 5

java - 如何知道已经建立的连接的状态?

java - 为什么单竖线字符会混淆java split方法?

javascript - Fabric.js 基于svg的多重裁剪

javascript - AngularJS 将数组添加到 json 表单对象

java - 如何使用 Java 和 JDBC 向数据库发送 HashMap 或从数据库接收 HashMap?

java - JDBC - 转换 SQL 字符串以满足 Java

java - Android - Activity 中 ListView 项目的自定义样式

javascript - ng-if 从范围中删除指令后执行的指令回调

sql-server - 在 pyspark 查询中使用临时表