0
A
回答
0
IOR是您可以访问主机的方式。在CORBA中,我们使用IOR而不是可读主机:端口。我认为CORBA JDK有一个IORInterpreter或IORReader,但是Jacorb没有它。
为什么JacORB不在其IOR中使用主机名?
我们使用IP数字代替人类可读主机名的原因是,jdk没有提供一种方法(除非自己实现DNS协议/使用外部库)来获取完全限定的主机名(即例如z1.inf.fu-berlin.de而不是z1)。但仅使用非限定主机名会使IOR在域外无用。
来自:JacORB的常见问题
如果你还需要一台主机:端口连接,可以使用:
//Server
java.util.Properties props = new java.util.Properties();
props.setProperty("OAIAddr","myMachine");
props.setProperty("OAPort","3555");
org.omg.CORBA.ORB orb = org.omg.CORBA.ORB.init(args, props)
//Client
org.omg.CORBA.Object obj = orb.string_to_object("corbaloc:iiop:myMachine:3555/MyServant");
MyServant goodDay = MyServantHelper.narrow(obj);
0
如果获得IOR字符串,你可以将其转换为corbaloc格式。下面一个例子:
输入:IOR字符串:
IOR:000000000000001949444C3A4D6F6E65792F4163636F756E74616E743A312E300000000000000001000000000000007C000102000000000D3139322E3136382E35362E31000022B8000000285374616E64617264496D706C4E616D652F4D6E7124242F5F4D6F6E65795F4163636F756E74616E74000000020000000000000008000000004A414300000000010000001C00000000000100010000000105010001000101090000000105010001
那么你可以使用一个工具(如UCS Tools,或者你可以使用由jacorb提供的dior.bat工具)来解析这个字符串,该结果如下图所示:
Parse IOR Output:
------IOR components-----
TypeId : IDL:Money/Accountant:1.0
TAG_INTERNET_IOP Profiles:
Profile Id: 0
IIOP Version: 1.2
Host: 192.168.56.1
Port: 8888
Object key (URL): StandardImplName/Mnq$$/_Money_Accountant
Object key (hex): 0x53 74 61 6E 64 61 72 64 49 6D 70 6C 4E 61 6D 65 2F 4D 6E 71 24 24 2F 5F 4D 6F 6E 65 79 5F 41 63 63 6F 75 6E 74 61 6E 74
-- Found 2 Tagged Components--
#0: TAG_ORB_TYPE
Type: 1245790976 (JacORB)
#1: TAG_CODE_SETS
ForChar native code set Id: ISO8859_1
Char Conversion Code Sets: UTF8
ForWChar native code set Id: UTF16
WChar Conversion Code Sets: UTF8
然后,你可以得到corbaloc必要的信息(例如,IIOP版本,主机,端口对象键)。
然后,您可以产生最终corbaloc格式:
corbaloc:iiop:[email protected]:8888/StandardImplName/Mnq$$/_Money_Accountant
0
您可以使用JacORB内部API org.jacorb.orb.util.Corbaloc :: generateCorbaloc(org.omg.CORBA.ORB中,org.omg .CORBA.Object)
eg
corbaLoc = "corbaloc:" + CorbaLoc.generateCorbaloc(orb,xxx._this_object());
相关问题
- 1. 如何在Lua中使用I ++和++ I从C中获取
- 2. 如何通过JMX获取网络I/O和磁盘I/O
- 3. PHP不获取JSON值I从卷曲
- 4. 从列表视图获取项目[i]
- 5. 如何从Linux中的netstat -i获取队列字段?
- 6. 如何从showDialog(i)调用showDialog(i)? (Android)
- 7. 如何从ResultSet.getMetaData()。getColumnType(i)
- 8. I/O读取从文件
- 9. 如何从Ruby 1.8.7中的utf-8字符串获取第i个字符?
- 10. “i ++”如何比“i = i + 1”更高效?
- 11. 如何获取视频文件的I/P/B帧数量?
- 12. Spring MVC -JSP-如何获取会话属性I JSP?
- 13. 通用按钮(i)_click获取按钮(i).text
- 14. 如何获取从蔚蓝
- 15. 如何从UIImage获取URL?
- 16. 如何从UIImagePickerControllerReferenceURL获取UIImage
- 17. 如何从ActionExecutingContext获取MethodInfo?
- 18. 如何从MessageHeaderInfo获取值
- 19. 如何从Enum获取ImageIcon?
- 20. 如何从IJavaCompletionProposal获取CompilationUnit
- 21. 如何从classloader获取classpath?
- 22. 如何从URL获取ID?
- 23. 如何从XML获取值
- 24. 如何从NetworkImageView获取BitMap
- 25. 如何从addrinfo获取sin6_addr?
- 26. 如何从AddressComponent获取formmated_address
- 27. 如何从Iterator获取int []?
- 28. 如何从System.Windows.Browser.ScriptObject获取JSON
- 29. 如何从web.config获取maxInvalidPasswordAttempts?
- 30. 如何从#selector获取accessibilityIdentifier
据我所知这是不可能的,IOR包含更多的信息corbaloc不能包含。根据您如何启动服务器,您可以手动创建代码中的corbaloc。 – 2014-11-27 09:54:36