Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从JDBC+;使用Vert.x从Java到Javascript?_Java_Javascript_Jdbc_Vert.x - Fatal编程技术网

如何从JDBC+;使用Vert.x从Java到Javascript?

如何从JDBC+;使用Vert.x从Java到Javascript?,java,javascript,jdbc,vert.x,Java,Javascript,Jdbc,Vert.x,我是vertx的noob,但我已经使用java类创建了JDBC连接管理器,在该类中我可以打印结果集中的数据: ConnectionManager cm=ConnectionManager.getInstance(); Connection conn = cm.getConnection(); try { Statement stmt=conn.createStatement(); try { ResultSet rs = stmt.executeQ

我是vertx的noob,但我已经使用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();
}
现在我想将我的VertxJavaScript应用程序连接到这个java类。我似乎不知道从哪里开始。我从谷歌集团找到了一些消息来源,但似乎没有一个能说明问题:

从JavaScript加载JDBC驱动程序

从Javascript执行Java

我还发现了Vert.x的jdbc持久器:

JDBC持久器


我仍在努力理解如何在我的应用程序中使用它。我会发布我可以分享的任何信息,但现在,有人能帮我吗(persistor或DirectJava通信)?谢谢。

AFAIK唯一的方法就是使用事件总线。 您可以将Java代码放在一个垂直类中(或者也可以为目标创建一个模块)。像这样的

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
    }

}
这是一个简单的场景。如果您想做更复杂的事情,比如向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";
    }

}
你好


卡洛

用json将数据发送到javascript服务器怎么样?
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";
    }

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