protected JMSSpecificContext context(final Object context) throws Exception { Context newContext; JMSSpecificContext threadContext = JMSContext.currentContext.get(); if (context != null) { newContext = ((JMSSpecificContext) context).asNonCloseable(); } else if (TransactionUtil.isTransactionActive()) { newContext = this.broker.createContext(new HashMap() {{ put(Messaging.CreateContextOption.XA, true); }}); } else if (threadContext != null) { newContext = threadContext; } else { newContext = this.broker.createContext(null); } newContext.enlist(); return (JMSSpecificContext)newContext; }
protected JMSSpecificContext context(final String id, final Object context) throws Exception { if (context != null) { return ((JMSSpecificContext)context).asNonCloseable(); } else { return (JMSSpecificContext)broker() .createContext(new HashMap<Messaging.CreateContextOption, Object>() {{ put(Messaging.CreateContextOption.CLIENT_ID, id); }}); } }
@Override public Context createContext(Map<CreateContextOption, Object> options) throws Exception { final Options<CreateContextOption> opts = new Options<>(options); JMSSpecificContext context; boolean xa = opts.getBoolean(CreateContextOption.XA); ConnectionFactory cf; if (opts.has(CreateContextOption.HOST)) { cf = createRemoteConnectionFactory(opts); } else { start(); cf = (ConnectionFactory)lookupJNDI(xa ? JNDI_XA_CF_NAME : JNDI_CF_NAME); } if (xa) { context = createXAContext((XAConnectionFactory)cf, opts); } else { context = createContext(cf, opts); } if (opts.has(CreateContextOption.CLIENT_ID)) { context.jmsConnection().setClientID(opts.getString(CreateContextOption.CLIENT_ID)); } return context; }