Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java通过Swing接收CORBA回调_Java_Callback_Corba - Fatal编程技术网

Java通过Swing接收CORBA回调

Java通过Swing接收CORBA回调,java,callback,corba,Java,Callback,Corba,我有一个扩展Swing JFrame的类。为了使该类接收回调并调用该类中的方法,该类应该扩展POA类。我不知道怎么做。多重继承呢?我应该创建另一个扩展POA类的类吗 代码 如果您控制IDL,则不必扩展POA类:您可以通过RMI/IIOP定义回调,在生成存根(rmic-IIOP)时从远程接口生成IDL,并使用PortableRemoteObject.exportObject()将其导出。不需要扩展任何特定的类 说了这么多,答案是错误的。JFrame扩展类不需要也是CORBA回调。将CORBA回调定

我有一个扩展Swing JFrame的类。为了使该类接收回调并调用该类中的方法,该类应该扩展POA类。我不知道怎么做。多重继承呢?我应该创建另一个扩展POA类的类吗

代码


如果您控制IDL,则不必扩展POA类:您可以通过RMI/IIOP定义回调,在生成存根(rmic-IIOP)时从远程接口生成IDL,并使用PortableRemoteObject.exportObject()将其导出。不需要扩展任何特定的类

说了这么多,答案是错误的。JFrame扩展类不需要也是CORBA回调。将CORBA回调定义为一个完全独立的类,并在JFrame扩展类中提供钩子,以便在回调发生时执行所需的任何操作

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:1.2@localhost: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);
                }
            }
        });

    }