2

dbusを使用してJavaメソッドまたはオブジェクトをエクスポートするにはどうすればよいですか?

私がこれを書いているのは、公式ドキュメントが非常に貧弱で、その方法を理解するのに何時間もかかったからです。

理想的には、DBus インターフェイスは Java パッケージに入れる必要があります

4

1 に答える 1

4

DBus.java

import org.freedesktop.dbus.DBusInterface;
import org.freedesktop.dbus.DBusInterfaceName;    

@DBusInterfaceName("org.printer")
public interface DBus extends DBusInterface {
    //Methods to export
    public void Print(String message);
}

Main.java

import org.freedesktop.dbus.DBusConnection;
import org.freedesktop.dbus.exceptions.DBusException;

public class Main {    
    public static void main(String[] args) {
        Printer p = new Printer();

        try {
            DBusConnection conn = DBusConnection.getConnection(DBusConnection.SESSION);
            //Creates a bus name, it must contain some dots.
            conn.requestBusName("org.printer");
            //Exports the printer object
            conn.exportObject("/org/printer/MessagePrinter", p);
       } catch (DBusException DBe) {
           DBe.printStackTrace();
           conn.disconnect();
           return;
       }
    }
}

//Printer object, implements the dbus interface and gets
//called when the methods are invoked.
class Printer implements DBus {
    public boolean isRemote() {
        return false;
    }

    public void Print(String message) {
        System.out.println(message);
    }
}

以下を実行して、シェルから qdbus でこれを試すことができます。

qdbus org.printer /org/printer/MessagePrinter org.printer.Print test
于 2013-02-09T20:04:56.593 に答える