2012-04-29 19 views
0

我有一個延伸擺動的JFrame類。爲了讓這個類接收一個回調並在這個類中調用一個方法,這個類應該擴展POA類。我不知道該怎麼做。那麼多重繼承呢?我應該創建另一個課程來擴展POA課程嗎?的Java接收CORBA回調與Swing

代碼

public final class JFSECorbaClient extends javax.swing.JFrame { 

// 
// init and other method 
// 

public static void main(final String args[]) throws ClassNotFoundException, IllegalAccessException, InstantiationException{ 

     java.awt.EventQueue.invokeLater(new Runnable() { 

      @Override 
      public void run() { 
       frame = new JFSECorbaClient().setVisible(true); 
       try { 

        //initialize orb 
        Properties props = System.getProperties(); 
        props.put("org.omg.CORBA.ORBInitialPort", "1050"); 
        props.put("org.omg.CORBA.ORBInitialHost", "localhost"); 
        ORB orb = ORB.init(args, props); 
        System.out.println("Initialized ORB"); 

        //Instantiate Servant and create reference 
        POA rootPOA = POAHelper.narrow(
          orb.resolve_initial_references("RootPOA")); 
        rootPOA.activate_object(this.frame); //this.frame should extends jfseCallbackPOA 
        ref = jfseCallbackHelper.narrow(
          rootPOA.servant_to_reference(callbackListener)); 

        //Resolve MessageServer 
        jfseServer = jfseORBHelper.narrow(
          orb.string_to_object("corbaname:iiop:[email protected]:1050#MessageServer")); 

        //Activate rootpoa 
        rootPOA.the_POAManager().activate(); 
        //thread for receive callback in other class thread 
        JFSECorrbaListener th = new JFSECorrbaListener(); 
        th.setOrb(orb); 
        th.start(); 

       } catch (Exception e) { 
        System.out.println(e); 
       } 
      } 
     }); 

    } 
+0

代碼嗎?它會幫助... – andersoj 2012-04-29 02:23:05

回答

1

它沒有,如果你是在IDL的控制,延長POA類:您可以從遠程接口生成時通過RMI/IIOP定義的回調,生成IDL存根(rmic -iiop),並使用PortableRemoteObject.exportObject()將其導出。無需擴展任何特定的類。

說了這麼多,這是錯誤的答案。您的JFrame擴展類不需要也是一個CORBA回調。將CORBA回調定義爲一個完全獨立的類,併爲其提供掛鉤到JFrame擴展類中,以便在發生回調時執行所需的任何操作。