1 Reply Latest reply on Nov 10, 2005 9:43 PM by Adrian Brock

    Pb connecting a Stateless EJB to an external JacOrb Service

    Michel Frankhauser Newbie

      Hi folks,

      I developed a stateless Local EJB that acts as a client to a legacy
      remote JacOrb v2.2 Corba service.
      I am able to correctly deploy my EAR file (WAR + EJB JAR) in JBoss 4.0.3 SP1
      using the server/default configuration.
      However, I have the following problem at runtime: The ORB init seems to work well but
      the following orb.string_to_object call fails, raising a VerifyError exception.
      Note that I use a corbaloc URL for locating the remote NamingService.

      FYI, the same client code works perfectly well in a standalone Java application that runs
      outside JBoss.

      I need to have the integration running very urgently.
      Would somebody be kind enough to provide some sample code or advise on how to setup
      JBoss for this EJB-to-JacOrb interop scenario?

      Many thanks for any help.

      Deployment environment:
      - Windows XP SP2
      - JDK 1.4.2_09
      - JBoss 4.0.3 SP1 (default server)

      14:39:41,065 INFO [STDOUT] [33][11/08 01:39:41 PM][0][common.debug][Debug.java#289][traceException] FNE:
      java.lang.VerifyError: (class: org/jacorb/orb/Delegate, method: getReference signature: (Lorg/jacorb/poa/POA;)Lorg/omg/CORBA/portable/ObjectImpl;) Incompatible object argument for function call
      at org.jacorb.orb.ORB._getObject(Unknown Source)
      at org.jacorb.orb.ORB.string_to_object(Unknown Source)

      Sample code from the helper class used by the EJB:

      // Create and initialize the ORB
      PropertiesMgrInterface pptyMgr = PropertiesMgrProxy.getPropertiesMgr();
      String sOrbClass = pptyMgr.getStringProperty("org.omg.CORBA.ORBClass");
      String sOrbSingletonClass = pptyMgr.getStringProperty("org.omg.CORBA.ORBSingletonClass");

      Properties props = new Properties();
      props.put("org.omg.CORBA.ORBClass", sOrbClass);
      props.put("org.omg.CORBA.ORBSingletonClass", sOrbSingletonClass);

      String domainName[] = new String[2];
      domainName[0] = "-ORBdomain_name";
      domainName[1] = UIS_DOMAIN_CFG_NAME;
      m_orb = ORB.init(domainName , props); // <-- OK

      org.omg.CORBA.Object obj =
      m_orb.string_to_object("corbaloc:iiop:myhost:myport/NameService"); // <-- KO !

      etc ...