/** * Bind an object both in standard JNDI (to expose via HA-JNDI) and in our injected NamingServer * * @throws Exception */ public void start() throws Exception { // Standard JNDI Context ctx = new InitialContext(); ctx.bind(NAME, VALUE); log.info("Bound " + VALUE + " to " + ctx + " under " + NAME); ctx.bind(BAD_BINDING, new NonDeserializable()); log.info("Bound a NonDeserializable to " + ctx + " under " + BAD_BINDING); // For some reason creating a context for our own JNDI doesn't work // inside the server, so as a hack we directly deal with the NamingServer // to bind the object // Properties env = new Properties(); // env.setProperty("java.naming.provider.url", providerURL); // log.info("Env = " + env); // Context ctx = new InitialContext(env); // ctx.bind(NAME, VALUE); Naming namingServer = naming.getNamingInstance(); namingServer.bind( parser.parse(NAME), new MarshalledValuePair(VALUE), VALUE.getClass().getName()); log.info("Bound " + VALUE + " to " + namingServer + " under " + NAME); Context sub = namingServer.createSubcontext(parser.parse(SUBCONTEXT_NAME)); sub.bind(parser.parse(NAME), VALUE); log.info("Bound " + VALUE + " to " + sub + " under " + NAME); // NOTE: we must bind the NonDeserializable directly, or else the // NamingContext will wrap it in a MarshalledValuePair, which will // defeat the test by triggering deserialization too late namingServer.bind( parser.parse(BAD_BINDING), new NonDeserializable(), NonDeserializable.class.getName()); log.info("Bound a NonDeserializable to " + namingServer + " under " + BAD_BINDING); }
/** * Undoes the bindings done in start(). * * @throws Exception */ public void stop() throws Exception { // Standard JNDI Context ctx = new InitialContext(); ctx.unbind(NAME); log.info("Unbound " + NAME + " from " + ctx); ctx.unbind(BAD_BINDING); log.info("Unbound " + BAD_BINDING + " from " + ctx); // For some reason creating a context for our own JNDI doesn't work // inside the server, so as a hack we directly deal with the NamingServer // to bind the object // Properties env = new Properties(); // env.setProperty("java.naming.provider.url", providerURL); // // Context ctx = new InitialContext(env); // ctx.unbind(NAME); Naming namingServer = naming.getNamingInstance(); try { namingServer.unbind(parser.parse(SUBCONTEXT_NAME + "/" + NAME)); log.info("Unbound " + SUBCONTEXT_NAME + "/" + NAME + " from " + namingServer); } catch (NameNotFoundException ignored) { // already unbound by test } try { namingServer.unbind(parser.parse(SUBCONTEXT_NAME)); log.info("Unbound " + SUBCONTEXT_NAME + " from " + namingServer); } catch (NameNotFoundException ignored) { // already unbound by test } try { namingServer.unbind(parser.parse(NAME)); log.info("Unbound " + NAME + " from " + namingServer); } catch (NameNotFoundException ignored) { // already unbound by test } try { namingServer.unbind(parser.parse(BAD_BINDING)); log.info("Unbound " + BAD_BINDING + " from " + namingServer); } catch (NameNotFoundException ignored) { // already unbound by test } }