Here are the examples of the java api class org.apache.activemq.artemis.core.server.ServerSession taken from open source projects.
1. ServerSessionImpl#addUniqueMetaData()
Project: activemq-artemis
File: ServerSessionImpl.java
File: ServerSessionImpl.java
@Override public boolean addUniqueMetaData(String key, String data) { ServerSession sessionWithMetaData = server.lookupSession(key, data); if (sessionWithMetaData != null && sessionWithMetaData != this) { // There is a duplication of this property return false; } else { addMetaData(key, data); return true; } }
2. ActiveMQServerImpl#lookupSession()
Project: activemq-artemis
File: ActiveMQServerImpl.java
File: ActiveMQServerImpl.java
@Override public ServerSession lookupSession(String key, String value) { // getSessions is called here in a try to minimize locking the Server while this check is being done Set<ServerSession> allSessions = getSessions(); for (ServerSession session : allSessions) { String metaValue = session.getMetaData(key); if (metaValue != null && metaValue.equals(value)) { return session; } } return null; }
3. ActiveMQServerImpl#freezeConnections()
Project: activemq-artemis
File: ActiveMQServerImpl.java
File: ActiveMQServerImpl.java
/** * Freeze all connections. * <p> * If replicating, avoid freezing the replication connection. Helper method for * {@link #stop(boolean, boolean, boolean)}. */ private void freezeConnections() { activation.freezeConnections(remotingService); // after disconnecting all the clients close all the server sessions so any messages in delivery will be cancelled back to the queue for (ServerSession serverSession : sessions.values()) { try { serverSession.close(true); } catch (Exception e) { ActiveMQServerLogger.LOGGER.errorClosingSession(e); } } }
4. MQTTConnectionManager#createServerSession()
Project: activemq-artemis
File: MQTTConnectionManager.java
File: MQTTConnectionManager.java
/** * Creates an internal Server Session. * * @param username * @param password * @return * @throws Exception */ ServerSessionImpl createServerSession(String username, String password) throws Exception { String id = UUIDGenerator.getInstance().generateStringUUID(); ActiveMQServer server = session.getServer(); ServerSession serverSession = server.createSession(id, username, password, ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE, session.getConnection(), MQTTUtil.SESSION_AUTO_COMMIT_SENDS, MQTTUtil.SESSION_AUTO_COMMIT_ACKS, MQTTUtil.SESSION_PREACKNOWLEDGE, MQTTUtil.SESSION_XA, null, session.getSessionCallback(), MQTTUtil.SESSION_AUTO_CREATE_QUEUE); return (ServerSessionImpl) serverSession; }
5. TemporaryQueueTest#testBlockingWithTemporaryQueue()
Project: activemq-artemis
File: TemporaryQueueTest.java
File: TemporaryQueueTest.java
@Test public void testBlockingWithTemporaryQueue() throws Exception { AddressSettings setting = new AddressSettings().setAddressFullMessagePolicy(AddressFullMessagePolicy.BLOCK).setMaxSizeBytes(1024 * 1024); server.getAddressSettingsRepository().addMatch("TestAD", setting); ClientSessionFactory consumerCF = createSessionFactory(locator); ClientSession consumerSession = consumerCF.createSession(true, true); consumerSession.addMetaData("consumer", "consumer"); consumerSession.createTemporaryQueue("TestAD", "Q1"); consumerSession.createConsumer("Q1"); consumerSession.start(); final ClientProducerImpl prod = (ClientProducerImpl) session.createProducer("TestAD"); final AtomicInteger errors = new AtomicInteger(0); final AtomicInteger msgs = new AtomicInteger(0); final int TOTAL_MSG = 1000; Thread t = new Thread() { @Override public void run() { try { for (int i = 0; i < TOTAL_MSG; i++) { ClientMessage msg = session.createMessage(false); msg.getBodyBuffer().writeBytes(new byte[1024]); prod.send(msg); msgs.incrementAndGet(); } } catch (Throwable e) { e.printStackTrace(); errors.incrementAndGet(); } System.out.println("done"); } }; t.start(); while (msgs.get() == 0) { Thread.sleep(100); } int blockedTime = 0; // https://issues.apache.org/jira/browse/ARTEMIS-368 while (t.isAlive() && errors.get() == 0 && (!prod.getProducerCredits().isBlocked() || blockedTime < 60)) { if (prod.getProducerCredits().isBlocked()) { blockedTime++; } else { blockedTime = 0; } Thread.sleep(100); } assertEquals(0, errors.get()); ClientSessionFactory newConsumerCF = createSessionFactory(locator); ClientSession newConsumerSession = newConsumerCF.createSession(true, true); newConsumerSession.createTemporaryQueue("TestAD", "Q2"); ClientConsumer newConsumer = newConsumerSession.createConsumer("Q2"); newConsumerSession.start(); int toReceive = TOTAL_MSG - msgs.get(); for (ServerSession sessionIterator : server.getSessions()) { if (sessionIterator.getMetaData("consumer") != null) { System.out.println("Failing session"); ServerSessionImpl impl = (ServerSessionImpl) sessionIterator; impl.getRemotingConnection().fail(new ActiveMQDisconnectedException("failure e")); } } int secondReceive = 0; ClientMessage msg = null; while (secondReceive < toReceive && (msg = newConsumer.receive(5000)) != null) { msg.acknowledge(); secondReceive++; } assertNull(newConsumer.receiveImmediate()); assertEquals(toReceive, secondReceive); t.join(); }
6. InterruptedLargeMessageTest#testInterruptLargeMessageSend()
Project: activemq-artemis
File: InterruptedLargeMessageTest.java
File: InterruptedLargeMessageTest.java
@Test public void testInterruptLargeMessageSend() throws Exception { ClientSession session = null; LargeMessageTestInterceptorIgnoreLastPacket.clearInterrupt(); ActiveMQServer server = createServer(true, isNetty()); server.getConfiguration().getIncomingInterceptorClassNames().add(LargeMessageTestInterceptorIgnoreLastPacket.class.getName()); server.start(); locator.setBlockOnNonDurableSend(false).setBlockOnDurableSend(false); ClientSessionFactory sf = createSessionFactory(locator); session = sf.createSession(false, true, true); session.createQueue(ADDRESS, ADDRESS, true); ClientProducer producer = session.createProducer(ADDRESS); Message clientFile = createLargeClientMessageStreaming(session, LARGE_MESSAGE_SIZE, true); clientFile.setExpiration(System.currentTimeMillis()); producer.send(clientFile); Thread.sleep(500); for (ServerSession srvSession : server.getSessions()) { ((ServerSessionImpl) srvSession).clearLargeMessage(); } server.stop(false); ActiveMQTestBase.forceGC(); server.start(); server.stop(); validateNoFilesOnLargeDir(); }
7. ConcurrentDeliveryCancelTest#testConcurrentCancels()
Project: activemq-artemis
File: ConcurrentDeliveryCancelTest.java
File: ConcurrentDeliveryCancelTest.java
@Test @BMRules(rules = { @BMRule(name = "enterCancel-holdThere", targetClass = "org.apache.activemq.artemis.core.server.impl.ServerConsumerImpl", targetMethod = "close", targetLocation = "ENTRY", action = "org.apache.activemq.artemis.tests.extras.byteman.ConcurrentDeliveryCancelTest.enterCancel();") }) public void testConcurrentCancels() throws Exception { System.out.println(server.getConfiguration().getJournalLocation().toString()); server.getAddressSettingsRepository().clear(); AddressSettings settings = new AddressSettings(); settings.setMaxDeliveryAttempts(-1); server.getAddressSettingsRepository().addMatch("#", settings); ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactory("tcp://localhost:61616", "test"); cf.setReconnectAttempts(0); cf.setRetryInterval(10); System.out.println("....."); for (ServerSession srvSess : server.getSessions()) { System.out.println(srvSess); } String queueName = RandomUtil.randomString(); Queue queue = createQueue(queueName); int numberOfMessages = 10000; { Connection connection = cf.createConnection(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); MessageProducer producer = session.createProducer(queue); for (int i = 0; i < numberOfMessages; i++) { TextMessage msg = session.createTextMessage("message " + i); msg.setIntProperty("i", i); producer.send(msg); } session.commit(); connection.close(); } for (int i = 0; i < 100; i++) { XAConnectionFactory xacf = ActiveMQJMSClient.createConnectionFactory("tcp://localhost:61616", "test"); final XAConnection connection = xacf.createXAConnection(); final XASession theSession = connection.createXASession(); ((ActiveMQSession) theSession).getCoreSession().addMetaData("theSession", "true"); connection.start(); final MessageConsumer consumer = theSession.createConsumer(queue); XidImpl xid = newXID(); theSession.getXAResource().start(xid, XAResource.TMNOFLAGS); // I'm setting a small timeout just because I'm lazy to call end myself theSession.getXAResource().setTransactionTimeout(1); for (int msg = 0; msg < 11; msg++) { Assert.assertNotNull(consumer.receiveNoWait()); } System.out.println("....."); final List<ServerSession> serverSessions = new LinkedList<>(); // We will force now the failure simultaneously from several places for (ServerSession srvSess : server.getSessions()) { if (srvSess.getMetaData("theSession") != null) { System.out.println(srvSess); serverSessions.add(srvSess); } } // from Transactional reaper resetLatches(2); List<Thread> threads = new LinkedList<>(); threads.add(new Thread("ConsumerCloser") { @Override public void run() { try { System.out.println(Thread.currentThread().getName() + " closing consumer"); consumer.close(); System.out.println(Thread.currentThread().getName() + " closed consumer"); } catch (Exception e) { e.printStackTrace(); } } }); threads.add(new Thread("SessionCloser") { @Override public void run() { for (ServerSession sess : serverSessions) { System.out.println("Thread " + Thread.currentThread().getName() + " starting"); try { // A session.close could sneak in through failover or some other scenarios. // a call to RemotingConnection.fail wasn't replicating the issue. // I needed to call Session.close() directly to replicate what was happening in production sess.close(true); } catch (Exception e) { e.printStackTrace(); } System.out.println("Thread " + Thread.currentThread().getName() + " done"); } } }); for (Thread t : threads) { t.start(); } Assert.assertTrue(latchEnter.await(10, TimeUnit.MINUTES)); latchFlag.countDown(); for (Thread t : threads) { t.join(5000); Assert.assertFalse(t.isAlive()); } connection.close(); } Connection connection = cf.createConnection(); try { connection.setClientID("myID"); // I am too lazy to call end on all the transactions Thread.sleep(5000); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(queue); HashMap<Integer, AtomicInteger> mapCount = new HashMap<>(); while (true) { TextMessage message = (TextMessage) consumer.receiveNoWait(); if (message == null) { break; } Integer value = message.getIntProperty("i"); AtomicInteger count = mapCount.get(value); if (count == null) { count = new AtomicInteger(0); mapCount.put(message.getIntProperty("i"), count); } count.incrementAndGet(); } boolean failed = false; for (int i = 0; i < numberOfMessages; i++) { AtomicInteger count = mapCount.get(i); if (count == null) { System.out.println("Message " + i + " not received"); failed = true; } else if (count.get() > 1) { System.out.println("Message " + i + " received " + count.get() + " times"); failed = true; } } Assert.assertFalse("test failed, look at the system.out of the test for more information", failed); } finally { connection.close(); } }
8. ActiveMQServerImpl#closeAllServerSessions()
Project: activemq-artemis
File: ActiveMQServerImpl.java
File: ActiveMQServerImpl.java
/** * We close all the exception in an attempt to let any pending IO to finish to avoid scenarios * where the send or ACK got to disk but the response didn't get to the client It may still be * possible to have this scenario on a real failure (without the use of XA) But at least we will * do our best to avoid it on regular shutdowns */ private void closeAllServerSessions(final boolean criticalIOError) { if (state != SERVER_STATE.STOPPING) { return; } for (ServerSession session : sessions.values()) { try { session.close(true); } catch (Exception e) { ActiveMQServerLogger.LOGGER.errorClosingSessionsWhileStoppingServer(e); } } if (!criticalIOError) { for (ServerSession session : sessions.values()) { try { session.waitContextCompletion(); } catch (Exception e) { ActiveMQServerLogger.LOGGER.errorClosingSessionsWhileStoppingServer(e); } } } }
9. ActiveMQServerControlImpl#listTargetAddresses()
Project: activemq-artemis
File: ActiveMQServerControlImpl.java
File: ActiveMQServerControlImpl.java
public String[] listTargetAddresses(final String sessionID) { ServerSession session = server.getSessionByID(sessionID); if (session != null) { return session.getTargetAddresses(); } return new String[0]; }
10. ActiveMQServerControlImpl#listProducersInfoAsJSON()
Project: activemq-artemis
File: ActiveMQServerControlImpl.java
File: ActiveMQServerControlImpl.java
/* (non-Javadoc) * @see org.apache.activemq.artemis.api.core.management.ActiveMQServerControl#listProducersInfoAsJSON() */ @Override public String listProducersInfoAsJSON() throws Exception { JSONArray producers = new JSONArray(); for (ServerSession session : server.getSessions()) { session.describeProducersInfo(producers); } return producers.toString(); }
11. JMSServerControlImpl#getSessionCreationTime()
Project: activemq-artemis
File: JMSServerControlImpl.java
File: JMSServerControlImpl.java
@Override public String getSessionCreationTime(String sessionID) throws Exception { ServerSession session = server.getActiveMQServer().getSessionByID(sessionID); if (session != null) { return String.valueOf(session.getCreationTime()); } return null; }
12. JMSServerControlImpl#getLastSentMessageID()
Project: activemq-artemis
File: JMSServerControlImpl.java
File: JMSServerControlImpl.java
@Override public String getLastSentMessageID(String sessionID, String address) throws Exception { ServerSession session = server.getActiveMQServer().getSessionByID(sessionID); if (session != null) { return session.getLastSentMessageID(address); } return null; }