我正在开发一个客户端服务器应用程序,我可以从远程客户端调用服务器,并从客户端返回一些字符串。我正在使用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
对象?
答案 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”类。