@Test public void jcaExclusiveProperties() { DefaultJcaListenerContainerFactory factory = new DefaultJcaListenerContainerFactory(); factory.setDestinationResolver(this.destinationResolver); factory.setActivationSpecFactory(new StubJmsActivationSpecFactory()); SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint(); endpoint.setMessageListener(new MessageListenerAdapter()); this.thrown.expect(IllegalStateException.class); factory.createListenerContainer(endpoint); }
private void setDefaultJcaConfig(DefaultJcaListenerContainerFactory factory) { factory.setDestinationResolver(this.destinationResolver); factory.setTransactionManager(this.transactionManager); factory.setMessageConverter(this.messageConverter); factory.setAcknowledgeMode(Session.DUPS_OK_ACKNOWLEDGE); factory.setPubSubDomain(true); factory.setReplyQosSettings(new QosSettings(1, 7, 5000)); factory.setSubscriptionDurable(true); factory.setClientId("client-1234"); }
@Override public JmsMessageEndpointManager createListenerContainer(JmsListenerEndpoint endpoint) { if (this.destinationResolver != null && this.activationSpecFactory != null) { throw new IllegalStateException("Specify either 'activationSpecFactory' or " + "'destinationResolver', not both. If you define a dedicated JmsActivationSpecFactory bean, " + "specify the custom DestinationResolver there (if possible)"); } JmsMessageEndpointManager instance = createContainerInstance(); if (this.resourceAdapter != null) { instance.setResourceAdapter(this.resourceAdapter); } if (this.activationSpecFactory != null) { instance.setActivationSpecFactory(this.activationSpecFactory); } if (this.destinationResolver != null) { instance.setDestinationResolver(this.destinationResolver); } if (this.transactionManager != null) { instance.setTransactionManager(this.transactionManager); } if (this.phase != null) { instance.setPhase(this.phase); } instance.setActivationSpecConfig(this); endpoint.setupListenerContainer(instance); return instance; }
@Test public void createJcaContainerFullConfig() { DefaultJcaListenerContainerFactory factory = new DefaultJcaListenerContainerFactory(); setDefaultJcaConfig(factory); factory.setConcurrency("10"); SimpleJmsListenerEndpoint endpoint = new SimpleJmsListenerEndpoint(); MessageListener messageListener = new MessageListenerAdapter(); endpoint.setMessageListener(messageListener); endpoint.setDestination("myQueue"); JmsMessageEndpointManager container = factory.createListenerContainer(endpoint); assertDefaultJcaConfig(container); assertEquals(10, container.getActivationSpecConfig().getMaxConcurrency()); assertEquals(messageListener, container.getMessageListener()); assertEquals("myQueue", container.getActivationSpecConfig().getDestinationName()); }
@Test public void testJcaContainerFactoryConfiguration() { Map<String, DefaultJcaListenerContainerFactory> containers = context.getBeansOfType(DefaultJcaListenerContainerFactory.class); DefaultJcaListenerContainerFactory factory = containers.get("testJcaFactory"); assertNotNull("No factory registered with testJcaFactory id", factory); JmsMessageEndpointManager container = factory.createListenerContainer(createDummyEndpoint()); assertEquals("explicit resource adapter not set", context.getBean("testResourceAdapter"),container.getResourceAdapter()); assertEquals("explicit message converter not set", context.getBean("testMessageConverter"), container.getActivationSpecConfig().getMessageConverter()); assertEquals("Wrong pub/sub", true, container.isPubSubDomain()); assertEquals("wrong concurrency", 5, container.getActivationSpecConfig().getMaxConcurrency()); assertEquals("Wrong prefetch", 50, container.getActivationSpecConfig().getPrefetchSize()); assertEquals("Wrong phase", 77, container.getPhase()); }
@Override public JmsMessageEndpointManager createListenerContainer(JmsListenerEndpoint endpoint) { if (this.destinationResolver != null && this.activationSpecFactory != null) { throw new IllegalStateException("Specify either 'activationSpecFactory' or " + "'destinationResolver', not both. If you define a dedicated JmsActivationSpecFactory bean, " + "specify the custom DestinationResolver there (if possible)"); } JmsMessageEndpointManager instance = createContainerInstance(); if (this.resourceAdapter != null) { instance.setResourceAdapter(this.resourceAdapter); } if (this.activationSpecFactory != null) { instance.setActivationSpecFactory(this.activationSpecFactory); } if (this.destinationResolver != null) { instance.setDestinationResolver(this.destinationResolver); } if (this.transactionManager != null) { instance.setTransactionManager(this.transactionManager); } if (this.phase != null) { instance.setPhase(this.phase); } instance.setActivationSpecConfig(this); endpoint.setupListenerContainer(instance); return instance; }
@Override public JmsMessageEndpointManager createListenerContainer(JmsListenerEndpoint endpoint) { if (this.destinationResolver != null && this.activationSpecFactory != null) { throw new IllegalStateException("Specify either 'activationSpecFactory' or " + "'destinationResolver', not both. If you define a dedicated JmsActivationSpecFactory bean, " + "specify the custom DestinationResolver there (if possible)"); } JmsMessageEndpointManager instance = createContainerInstance(); if (this.resourceAdapter != null) { instance.setResourceAdapter(this.resourceAdapter); } if (this.activationSpecFactory != null) { instance.setActivationSpecFactory(this.activationSpecFactory); } if (this.destinationResolver != null) { instance.setDestinationResolver(this.destinationResolver); } if (this.transactionManager != null) { instance.setTransactionManager(this.transactionManager); } if (this.phase != null) { instance.setPhase(this.phase); } instance.setActivationSpecConfig(this); endpoint.setupListenerContainer(instance); return instance; }