错误Java Corba错误参数
我正在尝试建立与华为U2000 NBI corba的连接,以便使用.ior文件连接警报。我已经将IDL文件编译成Java。下面是我初始化ORB的主要代码错误Java Corba错误参数,java,corba,huawei-mobile-services,Java,Corba,Huawei Mobile Services,我正在尝试建立与华为U2000 NBI corba的连接,以便使用.ior文件连接警报。我已经将IDL文件编译成Java。下面是我初始化ORB的主要代码 package com.be.u2k; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import org.omg.CORBA.ORB; import AlarmIRPSystem.AlarmIRP; import AlarmI
package com.be.u2k;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import org.omg.CORBA.ORB;
import AlarmIRPSystem.AlarmIRP;
import AlarmIRPSystem.AlarmIRPHelper;
public class Main {
public static void main(String[] args) {
try {
String filename = System.getProperty ("user.home") + System.getProperty ("file.separator")+"u2k.ior";
File f = new File(filename);
if (!f.exists()) {
System.out.println("File " + filename + " does not exist.");
System.exit(-1);
} else if (f.isDirectory()) {
System.out.println("File " + filename + " is a directory.");
System.exit(-1);
}
BufferedReader br = new BufferedReader(new FileReader(f));
String iorContents = br.readLine();
br.close();
ORB orbWithIor = ORB.init(args, null);
org.omg.CORBA.Object obj = orbWithIor.string_to_object(iorContents);
AlarmIRP alarmIrp = AlarmIRPHelper.narrow(obj);
System.out.println("AlarmIRPHelper.narrow success!") ;
} catch (Exception e) {
System.out.println("ERROR : " + e) ;
e.printStackTrace(System.out);
}
}
}
为什么在运行时总是出现坏参数错误
java-jar服务器u2kalarm.jar
我的天体有没有漏掉什么?谢谢。我现在正在处理同样的问题。首先,您必须获得HW U2000的EPIRP。下面是示例代码AlarmIRP。代码尚未完成。要获取要使用的服务的IOR,必须在get_IRP_引用方法中给出相关的irpId和irpClassName 对于managerIdentifier,请阅读以下说明:
您好,我用您提供的答案初始化了到U2000的CORBA连接。我再次预览了文档,发现了这个。这是否意味着我需要在到达AlarmIRP之前先到达NotificationIRP?如果要将另一个ior字符串值传递给AlarmIRPHelper.窄带方法,那么如何从NotificationIRP对象获取ior字符串值?我检查了NotificationIRP类,没有方法get_IRP_outline。首先,您必须刷新此服务EPIRP。然后您会收到来自EPRIP obj的其他服务警报、通知IOR。谢谢。你的回答成功地缩小了EPIRP的范围。但我现在得到下面的错误,然后使用从EPIRP对象获得的ior。NotificationIRP notifIrp=NotificationIRPHelper.窄带ORB.string_to_objectNotifierpIOR.value;就是在那一部分发生了错误。NotificationIRP和AlarmIRP的错误相同。错误:org.omg.CORBA.BAD_参数:窄失败vmcid:0x0次要代码:0已完成:无org.omg.CORBA.BAD_参数:窄失败vmcid:0x0次要代码:0我认为您从EPIRP获得的报警IOR或通知IOR错误。您是否在supportedIrpList中看到AlarmIRP id和className或NotificationIRP?由于我的HWU2000系统上没有alarmIRP、notificationIRP服务,因此我没有编写更多的代码。我没有看到任何代码。这是我仅从supportedIrpList dnType:DC=www.huawei.com、SubNetwork=1、ManagementNode=1、irpId:8 irpClassName:EPIRP IRP版本:EP IRP V1.2.0 irpManagementScope:如果没有AlarmIRP或NotificationIRP类名,这意味着什么?
admin@ip-10-44-0-10:~$ java -jar ServerU2kAlarm.jar
ERROR : org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
org.omg.CORBA.BAD_PARAM: vmcid: 0x0 minor code: 0 completed: No
at AlarmIRPSystem.AlarmIRPHelper.narrow(AlarmIRPHelper.java:60)
at com.be.u2k.Main.main(Main.java:36)
***
Properties properties = new Properties();
properties.put("org.omg.CORBA.ORBClass", "org.jacorb.orb.ORB");
properties.put("org.omg.CORBA.ORBSingletonClass", "org.jacorb.orb.ORBSingleton");
properties.put("ORBInitRef.NameService", settings.getIorString());
// Connect to name service
ORB orb = ORB.init((String[]) null, properties);
POA poa = POAHelper.narrow(orb.resolve_initial_references(settings.getRootPoaName()));
poa.the_POAManager().activate();
logger.info("ORB init success");
org.omg.CORBA.Object obj = orb.string_to_object(settings.getIorString());
String epirpVersion = null;
String systemDn = null;
String irpId = null;
String irpClassName = null;
EPIRP epirp = EPIRPHelper.narrow(obj);
String[] epirpVersions = epirp.get_EP_IRP_versions();
for (String str : epirpVersions) {
if (null != str && !"".equals(str.trim())) {
epirpVersion = str;
}
}
SupportedIRPListTypeHolder supportedIrpList = new SupportedIRPListTypeHolder();
if (ResultType._OK == epirp.get_IRP_outline("", supportedIrpList).value()) {
SupportedIRPListTypeElement[] typeHolder = supportedIrpList.value;
for (SupportedIRPListTypeElement irpListEle : typeHolder) {
systemDn = irpListEle.systemDN;
logger.info("dnType: " + systemDn);
for (IRPElement irpElement : irpListEle.irpList) {
irpId = irpElement.irpId;
logger.info("irpId: " + irpId);
irpClassName = irpElement.irpClassName;
logger.info("irpClassName: " + irpClassName);
logger.info("irpVersion: " + irpElement.irpVersion);
logger.info("irpManagementScope: ");
for (String s : irpElement.irpManagementScope.value()) {
logger.info(s);
}
}
}
} else {
logger.error("Failed");
}
StringHolder alarmIrpIOR = new StringHolder();
epirp.get_IRP_reference(managerIdentifier, systemDn, irpId, irpClassName, alarmIrpIOR);
logger.info("AlarmIRP:" + alarmIrpIOR.value);
//Connect to AlarmIRP
AlarmIRP alarmIRP = AlarmIRPHelper.narrow(orb.string_to_object(alarmIrpIOR.value));