@Override public MessageProducerResources doCreateProducerModel() throws Exception { MessageProducerResources answer; Connection conn = getConnectionResource().borrowConnection(); try { TransactionCommitStrategy commitStrategy = null; if (isEndpointTransacted()) { commitStrategy = getCommitStrategy() == null ? new DefaultTransactionCommitStrategy() : getCommitStrategy(); } Session session = conn.createSession(isEndpointTransacted(), getAcknowledgeMode()); Destination destination = getEndpoint() .getDestinationCreationStrategy() .createDestination(session, getDestinationName(), isTopic()); MessageProducer messageProducer = JmsObjectFactory.createMessageProducer(session, destination, isPersistent(), getTtl()); answer = new MessageProducerResources(session, messageProducer, commitStrategy); } catch (Exception e) { log.error("Unable to create the MessageProducer", e); throw e; } finally { getConnectionResource().returnConnection(conn); } return answer; }