OrbManagement.java
上传用户:xfwatch
上传日期:2020-12-14
资源大小:872k
文件大小:4k
源码类别:

中间件编程

开发平台:

Java

  1. package org.jboss.blacktie.jatmibroker.core.transport;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import java.util.Properties;
  5. import org.apache.log4j.LogManager;
  6. import org.apache.log4j.Logger;
  7. import org.omg.CORBA.ORB;
  8. import org.omg.CORBA.ORBPackage.InvalidName;
  9. import org.omg.CosNaming.NameComponent;
  10. import org.omg.CosNaming.NamingContext;
  11. import org.omg.CosNaming.NamingContextExt;
  12. import org.omg.CosNaming.NamingContextExtHelper;
  13. import org.omg.CosNaming.NamingContextExtOperations;
  14. import org.omg.CosNaming.NamingContextHelper;
  15. import org.omg.CosNaming.NamingContextOperations;
  16. import org.omg.CosNaming.NamingContextPackage.AlreadyBound;
  17. import org.omg.CosNaming.NamingContextPackage.CannotProceed;
  18. import org.omg.CosNaming.NamingContextPackage.NotFound;
  19. import org.omg.PortableServer.POA;
  20. import org.omg.PortableServer.POAHelper;
  21. import org.omg.PortableServer.POAManagerPackage.AdapterInactive;
  22. public class OrbManagement {
  23. private static final Logger log = LogManager.getLogger(OrbManagement.class);
  24. private static final String CorbaOrbClassProp = "org.omg.CORBA.ORBClass";
  25. private static final String CorbaOrbClassValue = "org.jacorb.orb.ORB";
  26. private static final String CorbaSingletonClassProp = "org.omg.CORBA.ORBSingletonClass";
  27. private static final String CorbaSingletonClassValue = "org.jboss.system.ORBSingleton";
  28. private ORB orb;
  29. private NamingContextExt nce;
  30. private NamingContext nc;
  31. private POA root_poa;
  32. public OrbManagement(Properties properties, boolean createNC)
  33. throws InvalidName, AdapterInactive, NotFound, CannotProceed,
  34. org.omg.CosNaming.NamingContextPackage.InvalidName {
  35. String namingContextExt = properties
  36. .getProperty("blacktie.domain.name");
  37. int numberOfOrbArgs = Integer.parseInt(properties.getProperty(
  38. "blacktie.orb.args", "0"));
  39. List<String> orbArgs = new ArrayList<String>(numberOfOrbArgs);
  40. for (int i = 1; i <= numberOfOrbArgs; i++) {
  41. orbArgs.add(properties.getProperty("blacktie.orb.arg." + i));
  42. }
  43. String[] args = orbArgs.toArray(new String[orbArgs.size()]);
  44. if (log.isDebugEnabled()) {
  45. StringBuilder sb = new StringBuilder();
  46. for (String s : args)
  47. sb.append(s).append(", ");
  48. log.debug("ServerProxy's connectToORB args: " + sb.toString()
  49. + " namingContext: " + namingContextExt);
  50. }
  51. java.util.Properties p = new java.util.Properties();
  52. log.debug("setting properities");
  53. p.setProperty(CorbaOrbClassProp, CorbaOrbClassValue);
  54. p.setProperty(CorbaSingletonClassProp, CorbaSingletonClassValue);
  55. p.setProperty("OAPort", "0");
  56. log.debug("set properities");
  57. log.debug(" initing orb");
  58. orb = org.omg.CORBA.ORB.init(args, p);
  59. log.debug(" inited orb");
  60. log.debug(" resolving NameService");
  61. nce = NamingContextExtHelper.narrow(orb
  62. .resolve_initial_references("NameService"));
  63. log.debug("NamingContextExt is " + nce);
  64. // inititialize POA
  65. log.debug("resolving roo_poa");
  66. root_poa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
  67. log.debug("roo_poa is " + root_poa);
  68. root_poa.the_POAManager().activate();
  69. log.debug("roo_poa is activated");
  70. log.debug(" finished & returning from ConnectToORBWithNameServiceProp");
  71. try {
  72. log.debug(" creating NamingContext");
  73. NameComponent[] aNameComponentArray = new NameComponent[1];
  74. aNameComponentArray[0] = new NameComponent(namingContextExt, "");
  75. nc = nce.bind_new_context(aNameComponentArray);
  76. log.debug(" created NamingContext");
  77. } catch (AlreadyBound e) {
  78. log.debug("Could not create the context");
  79. }
  80. log.debug(" resolving NamingContext");
  81. org.omg.CORBA.Object aObject = nce.resolve_str(namingContextExt);
  82. log.debug("NamingContext Object is " + aObject);
  83. nc = NamingContextHelper.narrow(aObject);
  84. log.debug("NamingContext is " + nc);
  85. }
  86. public void close() {
  87. log.debug("Closing");
  88. orb.shutdown(true);
  89. orb.destroy();
  90. log.debug("Closed");
  91. }
  92. public POA getRootPoa() {
  93. return root_poa;
  94. }
  95. public NamingContextExtOperations getNamingContextExt() {
  96. return nce;
  97. }
  98. public NamingContextOperations getNamingContext() {
  99. return nc;
  100. }
  101. public ORB getOrb() {
  102. return orb;
  103. }
  104. }