从主方法调用args

时间:2014-08-11 14:11:21

标签: java corba

我正在开发一个客户端服务器应用程序,我可以从远程客户端调用服务器,并从客户端返回一些字符串。我正在使用CORBA。我在Java Swing上使用Netbeans开发了用户界面。我需要在客户端界面上单击按钮时调用服务器。为此,我必须将以下代码段放在jButton动作侦听器中。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         


        try{
        // create and initialize the ORB
        ORB orb = ORB.init(args, null);

        // get the root naming context
        org.omg.CORBA.Object objRef = 
            orb.resolve_initial_references("NameService");
        // Use NamingContextExt instead of NamingContext. This is 
        // part of the Interoperable naming Service.  
        NamingContextExt ncRef = NamingContextExtHelper.narrow(objRef);

        // resolve the Object Reference in Naming
        String name = "Hello";
        bsImpl = BubbleSortHelper.narrow(ncRef.resolve_str(name));

        //System.out.println("Obtained a handle on server object: " + helloImpl);
        String z = bsImpl.sort(inputFlArray);
        System.out.println(z);
        bsImpl.shutdown();

        } catch (Exception e) {
          System.out.println("ERROR : " + e) ;
          e.printStackTrace(System.out);
          }

    }   

一旦我编译它,我得到错误说无法识别args。我刚刚从main方法中的地方复制了ORB orb = ORB.init(args, null);代码段。我知道错误出现是因为我在main方法之外使用了args。 我需要知道如何在main方法之外初始化ORB对象?

2 个答案:

答案 0 :(得分:1)

String[] args会传递给您的main()方法。我建议你在那里初始化你的ORB,并将实例传递给JButton的构造函数,例如 -

public static void main(String[] args) {
  try{
    // create and initialize the ORB
    ORB orb = ORB.init(args, null);
    // ....
    JButton myButton = new MyButton(orb);
    // ....
  } catch (Exception e) {
    System.out.println("ERROR : " + e) ;
    e.printStackTrace(System.out);
  }
}

答案 1 :(得分:0)

实际上,如果您想在每个客户端的操作中使用新的ORB实例。你可以这样做:

ORB orb = org.omg.CORBA.ORB.init(new String[0], null);

public static ORB init(String [] args,Properties props)
为独立应用程序创建新的ORB实例。此方法可以仅从应用程序调用,并在每次调用时返回一个新的全功能ORB对象 的参数:
args - 应用程序主方法的命令行参数;可能是空的 道具 - 特定于应用程序的属性;可能为空

这里,args可以为null,但是,如果你使用null dirctly,它将与另一种方法org.omg.CORBA.ORB.init(Applet app, Properties props)不明确 因此,您可以使用emyty String数组。

通常,不使用args,如果你想使用它,你可以将它传递给你的“jButtonaction listener”类。