2012-04-29 11 views
0

私はSwing JFrameを拡張するクラスを持っています。このクラスがコールバックを受け取り、このクラスのメソッドを呼び出すには、そのクラスがPOAクラスを拡張する必要があります。私はそれをする方法を知らない。多重継承はどうですか? POAクラスを拡張する別のクラスを作成する必要がありますか?Java Swingを使用したCORBAコールバックの受信

コード

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

答えて

1

それはあなたがIDLのコントロールにある場合POAクラスを拡張する必要はありません:あなたは生成時に、リモート・インタフェースからIDLを生成し、RMI/IIOP経由でコールバックを定義することができますスタブ(rmic -iiop)を使用し、PortableRemoteObject.exportObject()を使用してエクスポートします。特定のクラスを拡張する必要はありません。

すべてのことを言って、間違った答えです。 JFrameを拡張するクラスは、CORBAのコールバックである必要はありません。 CORBAコールバックを完全に別のクラスとして定義し、JFrame拡張クラスにフックを付けて、コールバックが発生したときに必要な処理を行います。

関連する問題