If the JacORB server has a POA name that matches the JacORB client's POA name, and the client calls _is_existent on the server object, the client thinks the server's POA is it's local POA, with NullPointerException resulting. Workaround: make sure server and client use different names for their POA. Below is the code I used to create the POA, in case this is specific to the policy I am using. /** * Create and return a POA configured with the desired policies. * @return null if failure to create the poa. */ static public POA createPoa( ORB orb ) { POA serverPoa = null; try { // Resolve Root POA POA rootPoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA")); // Create policies for our serverPOA org.omg.CORBA.Policy [] policies = { // PERSISTENT POA creates CORBA objects where the object ids of // created objects outlive the process in which they are // created. rootPoa.create_lifespan_policy(LifespanPolicyValue.PERSISTENT), }; // Create our serverPOA with the right policies. // The lifespan policy of Root POA is TRANSIENT and we want // PERSISTENT. serverPoa = rootPoa.create_POA( "Poa", rootPoa.the_POAManager(), policies); // Activate all POAs managed by the POA manager, i.e., allow them // to listen for requests. rootPoa.the_POAManager().activate(); } catch ( org.omg.CORBA.ORBPackage.InvalidName e ) { System.out.println("Exception resolving RootPOA" ); e.printStackTrace(); } catch ( org.omg.PortableServer.POAPackage.AdapterAlreadyExists e ) { System.out.println("Exception creating serverPoa" ); e.printStackTrace(); } catch ( org.omg.PortableServer.POAPackage.InvalidPolicy e ) { System.out.println("Exception creating serverPoa" ); e.printStackTrace(); } catch ( org.omg.PortableServer.POAManagerPackage.AdapterInactive e ) { System.out.println("Exception activating POA manager" ); e.printStackTrace(); } return serverPoa; }
*** This bug has been marked as a duplicate of 313 ***