dbus-java-2.6 No signal notification

pgodin pgodin at rheinmetall.ca
Tue Nov 3 11:27:58 PST 2009


Hi Kees,

Thanks for your answer. I think you were mislead by the remote object
invocations. In my proof of concept, getting a hold of these remote
objects only allows me to call bluez/dbus methods and change some
properties. This works fine. I am able to change the adapter visibility
without any glitch.

Removing these statements only leaves the dbus connection and signal
handler. This does not work. I am never notified when a property is
changed in the adapter interface (at least in java since dbus-monitor
does output the signal that a property have been changed). So here's my
issue, it's only in java in these ~10 lines of code.

Any other hints or ideas would be greatly appreciated.
Phil

On Mon, 2009-11-02 at 18:03 -0500, Kees Jongenburger wrote:
> Hi,
> 
> On Mon, Nov 2, 2009 at 7:34 PM, pgodin <pgodin at rheinmetall.ca> wrote:
> > Using dbus-1.2.14, dbus-java-2.6, jdk-1.6.0_16 and bluez-4.56,:
> >
> > Java application isn't notified when a signal is sent on dbus. Using
> > dbus-monitor I can see signals being passed on the system bus. My proof
> > of concept application uses dbus to setup a bluetooth adapter
> > visibility. I would also like it to be notified of signals such as
> > device removal and addition although this example listens for
> > PopertyChanged signals. My gut feeling is that I am not using dbus as it
> > should be although I went through the documentation and several online
> > discussions. I you believe my problem better be posted on the bluez
> > list, please tell me so.
> 
> I am pretty new to all this but I think you are indeed doing it the wrong way.
> 
> > public class DBusConn
> > {
> >    public DBusConn()
> >    {
> >        DBusConnection connection = null;
> >        try
> >        {
> >            connection =
> > DBusConnection.getConnection(DBusConnection.SYSTEM);
> >
> >            final Manager manager =
> > connection.getRemoteObject("org.bluez", "/", Manager.class);
> 
> Getting a reference to a remote object
> 
> >
> >            final Path defaultAdapterPath = manager.DefaultAdapter();
> >
> >            final Adapter adapter =
> > connection.getRemoteObject("org.bluez", defaultAdapterPath.getPath(),
> > Adapter.class);
> 
> Idem
> 
> 
> > connection.addSigHandler(org.bluez.Adapter.PropertyChanged.class,
> 
> Registering to receive Signal but this is totally unrelated to the
> previous code (getting hold of
> remote objects). I aksed the same kind of question yesterday signals
> are sent "to" object and not from so I threory
> you need to implement the Object before you can listen to changed.
> 
> However apparently the Java implementation makes it possible to listen
> to those signals but in that case you don't need to
> get hold of the remote objects a all.
> 
> Here is an example that works for me
> 
> /**
> http://github.com/keesj/dbus_glib_pthread/blob/master/java/src/com/test/RunNotification.java
> **/
> package com.test;
> 
> import org.freedesktop.dbus.DBusConnection;
> import org.freedesktop.dbus.DBusSigHandler;
> import org.freedesktop.dbus.exceptions.DBusException;
> 
> /**
>  * dbus-send \
>         --system \
>         /com/test/Notification \
>         com.test.Notification.Notify
> 
>  *
>  */
> public class RunNotification implements DBusSigHandler<Notification.Notify> {
> 
>         public static void main(String[] args) throws DBusException {
>                 RunNotification instance = new RunNotification();
>                 DBusConnection conn  =
> DBusConnection.getConnection(DBusConnection.SYSTEM);
>                 conn.addSigHandler(Notification.Notify.class, instance);
>         }
> 
>         public void handle(Notification.Notify arg0) {
>                 System.err.println("Notified");
>         }
> }



More information about the dbus mailing list