1 Reply Latest reply on Dec 15, 2010 9:21 AM by 823910

    Inter-Xlet Communication

      Thank you in advance for some clue or indication,

      I'm trying for an Inter-Xlet communication. I have three Xlets: one the +'MainMenu.java'+; a second one the +'SecundariMenu.java'+ and finally the +'Monitor.java'+.

      What I'm trying to do is that the +'Monitor.java'+ xlet acts like the Exporter method; so I bind this xlet to an object with the method IxcRegistry.bind(xletContext, "Monitor", listener);.

      The three xlets are 'present' (Application control flag: 1=autostart 2=present 3=destroy 4=kill) so they run in the order I want with the 'App' button on remote control. My idea is: first I make the +'Monitor'+ xlet running; then run the +'MainMenu'+ xlet and from this with a button event I trigger the +'Secundarimenu'+ xlet. However, just running the +'Monitor'+ xlet I found this error on my set-top-box_LOG.log (the model of my STB is the Strong 5510MHP) i can't understand:


      [1] MPNotify: 2#1 manager started.

           [1#1:1] MpPrivilege: property 2 changed for 1#1 (1 -> 0)

           [2#1:2] java.lang.NoSuchMethodException: <init>

           [2#1:2]      at java.lang.Class.getConstructor0(Native Method)

           [2#1:2]      at java.lang.Class.getConstructor(Unknown Source)

           [2#1:2]      at tv.osmosys.application.AppManager$XletApp.xletLoad(Unknown Source)

           [2#1:2]      at tv.osmosys.application.AppManager$XletApp.loop0(Unknown Source)

           [2#1:2]      at tv.osmosys.application.AppManager$XletApp.run(Unknown Source)

           [2#1:2]      at java.lang.Thread.run(Unknown Source)

           [2#1:2]      at java.lang.Thread.startup(Unknown Source)

      The code from +'Monitor.java'+ is:

      import javax.tv.xlet.*;
      import java.rmi.AlreadyBoundException;
      import java.rmi.NotBoundException;
      import org.dvb.io.ixc.IxcRegistry;

      public class MonitorXlet implements Xlet {
      public XletContext xletContext;
           private boolean running = false;
           private MonitorIXCListener listener;

           private MonitorXlet(){

           public void initXlet(XletContext ctx) throws XletStateChangeException {
                this.xletContext = ctx;
           public void startXlet() throws XletStateChangeException {
                if (running) {
                running = true;
      listener = new MonitorIXCListener(this);
                try {
                     IxcRegistry.bind(this.xletContext, "Monitor", listener);
                catch (AlreadyBoundException ignored) {
                     System.out.println("······ AlreadyBoundException ········");
                catch (NullPointerException npe){  //If xc, name or objecte is null
                     System.out.println("······ NullPointerException ········");
           public void pauseXlet() {
                //do what we need to in order to pause the Xlet.
           public void destroyXlet(boolean unconditional) throws XletStateChangeException{
                if (listener != null) {
                try {
                IxcRegistry.unbind(xletContext, "Monitor");
                catch (NotBoundException ignored) {

      If you need some other information tell me.

      Edited by: user13479515 on 14-dic-2010 12:51