Getting Kafka error- java.util.concurrent.ExecutionException: org.springframework.kafka.core.KafkaProducerException: Failed to send - spring-boot

I am getting the error in Kafka. While sending the message on the topic
Here is the code for sending message on topic.
#Override
public void sendMessage(User user) {
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send(user);
future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
#Override
public void onSuccess(SendResult<String, Object> result) {
}
#Override
public void onFailure(Throwable e) {
}
});
try {
future.get();
} catch (InterruptedException | ExecutionException e) {
throw new SystemException("Error sending message to topic " + channelConfiguration.getTopic(), e);
**Getting following error here**
}
}
Here is the error I am getting while sending message on topic
Caused by: java.util.concurrent.ExecutionException: org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic user_event not present in metadata after 60000 ms.
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122) ~[na:na]
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191) ~[na:na]
at org.springframework.util.concurrent.SettableListenableFuture.get(SettableListenableFuture.java:119) ~[spring-core-5.2.4.RELEASE.jar:5.2.4.RELEASE]
at com.test.common.messenger.kafka.sender.KafkaMessageSender.sendMessage(KafkaMessageSender.java:60) ~[classes/:na]
... 55 common frames omitted
Caused by: org.springframework.kafka.core.KafkaProducerException: Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Topic loyalty_event not present in metadata after 60000 ms.
at org.springframework.kafka.core.KafkaTemplate.lambda$buildCallback$4(KafkaTemplate.java:424) ~[spring-kafka-2.3.6.RELEASE.jar:2.3.6.RELEASE]
at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:930) ~[kafka-clients-2.3.1.jar:na]
at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:856) ~[kafka-clients-2.3.1.jar:na]
at org.springframework.kafka.core.DefaultKafkaProducerFactory$CloseSafeProducer.send(DefaultKafkaProducerFactory.java:592) ~[spring-kafka-2.3.6.RELEASE.jar:2.3.6.RELEASE]
at org.springframework.kafka.core.KafkaTemplate.doSend(KafkaTemplate.java:404) ~[spring-kafka-2.3.6.RELEASE.jar:2.3.6.RELEASE]
at org.springframework.kafka.core.KafkaTemplate.send(KafkaTemplate.java:254) ~[spring-kafka-2.3.6.RELEASE.jar:2.3.6.RELEASE]
at com.test.common.messenger.kafka.sender.KafkaMessageSender.sendMessage(KafkaMessageSender.java:45) ~[classes/:na]
... 55 common frames omitted
Caused by: org.apache.kafka.common.errors.TimeoutException: Topic user_event not present in metadata after 60000 ms.
Does anyone knows about this?

Topic user_event not present in metadata after 60000 ms.
Do you have the topic user_event?
If not you need to create it or else configure Kafka admin to create topic automatically.

Related

Sftp Outbound gateway. Fail to list file using regex

I want to lists files recursively as describe through a regex. This is the code that works
#Bean(value = "listFiles")
public IntegrationFlow listFiles() {
IntegrationFlow flow = IntegrationFlows
.fromSupplier(() -> "/", e -> e.poller(Pollers.fixedDelay(Duration.ofSeconds(5))))
.handle(Ftp.outboundGateway(ftp(), Command.LS, null)
.regexFileNameFilter("(test|.*txt)")
.options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE,AbstractRemoteFileOutboundGateway.Option.NAME_ONLY))
.handle(p -> display(p))
.get();
return flow;
}
This ftp server is simulated using a local ftp server on my computer and it works okay.
However, when I switched the ftp() to an actual remote one and its a sftp, it does not work.
#Bean(value = "listFiles")
public IntegrationFlow listFiles() {
IntegrationFlow flow = IntegrationFlows
.fromSupplier(() -> "/", e -> e.poller(Pollers.fixedDelay(Duration.ofSeconds(5))))
.handle(Sftp.outboundGateway(sftp(), Command.LS, null)
.regexFileNameFilter("(test|.*txt)")
.options(AbstractRemoteFileOutboundGateway.Option.RECURSIVE,AbstractRemoteFileOutboundGateway.Option.NAME_ONLY))
.handle(p -> display(p))
.get();
return flow;
}
private SessionFactory<LsEntry> sftp() {
DefaultSftpSessionFactory factory = new DefaultSftpSessionFactory();
factory.setHost(REMOTE_ADR);
factory.setPort(REMOTE_PORT);
factory.setAllowUnknownKeys(true);
factory.setUser(REMOTE_USER);
factory.setPassword(REMOTE_PASS);
return factory;
}
I get this error
2022-04-07 13:45:20.260 ERROR 11136 --- [ scheduling-1] o.s.integration.handler.LoggingHandler : org.springframework.messaging.MessageHandlingException: error occurred in message handler [bean 'listFiles.sftp:outbound-gateway#0' for component 'listFiles.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; defined in: 'class path resource [my/com/company/integration/background/IntegrationConfiguration.class]'; from source: 'bean method listFiles']; nested exception is org.springframework.messaging.MessagingException: Failed to execute on session; nested exception is org.springframework.core.NestedIOException: Failed to list files; nested exception is 4: , failedMessage=GenericMessage [payload=/, headers={id=132641aa-0f7e-9dcb-5738-146f4b0baf64, timestamp=1649310313647}]
at org.springframework.integration.support.utils.IntegrationUtils.wrapInHandlingExceptionIfNecessary(IntegrationUtils.java:191)
at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:65)
at org.springframework.integration.dispatcher.AbstractDispatcher.tryOptimizedDispatch(AbstractDispatcher.java:115)
at org.springframework.integration.dispatcher.UnicastingDispatcher.doDispatch(UnicastingDispatcher.java:133)
at org.springframework.integration.dispatcher.UnicastingDispatcher.dispatch(UnicastingDispatcher.java:106)
at org.springframework.integration.channel.AbstractSubscribableChannel.doSend(AbstractSubscribableChannel.java:72)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:317)
at org.springframework.integration.channel.AbstractMessageChannel.send(AbstractMessageChannel.java:272)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:187)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:166)
at org.springframework.messaging.core.GenericMessagingTemplate.doSend(GenericMessagingTemplate.java:47)
at org.springframework.messaging.core.AbstractMessageSendingTemplate.send(AbstractMessageSendingTemplate.java:109)
at org.springframework.integration.endpoint.SourcePollingChannelAdapter.handleMessage(SourcePollingChannelAdapter.java:196)
at org.springframework.integration.endpoint.AbstractPollingEndpoint.messageReceived(AbstractPollingEndpoint.java:475)
at org.springframework.integration.endpoint.AbstractPollingEndpoint.doPoll(AbstractPollingEndpoint.java:461)
at org.springframework.integration.endpoint.AbstractPollingEndpoint.pollForMessage(AbstractPollingEndpoint.java:413)
at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$createPoller$4(AbstractPollingEndpoint.java:348)
at org.springframework.integration.util.ErrorHandlingTaskExecutor.lambda$execute$0(ErrorHandlingTaskExecutor.java:57)
at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50)
at org.springframework.integration.util.ErrorHandlingTaskExecutor.execute(ErrorHandlingTaskExecutor.java:55)
at org.springframework.integration.endpoint.AbstractPollingEndpoint.lambda$createPoller$5(AbstractPollingEndpoint.java:341)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:95)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.springframework.messaging.MessagingException: Failed to execute on session; nested exception is org.springframework.core.NestedIOException: Failed to list files; nested exception is 4: at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:461) at org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.doLs(AbstractRemoteFileOutboundGateway.java:607) at org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.handleRequestMessage(AbstractRemoteFileOutboundGateway.java:584) at org.springframework.integration.handler.AbstractReplyProducingMessageHandler.handleMessageInternal(AbstractReplyProducingMessageHandler.java:136) at org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:56) ... 27 more Caused by: org.springframework.core.NestedIOException: Failed to list files; nested exception is 4: at org.springframework.integration.sftp.session.SftpSession.list(SftpSession.java:123) at org.springframework.integration.sftp.session.SftpSession.list(SftpSession.java:54) at org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.listFilesInRemoteDir(AbstractRemoteFileOutboundGateway.java:992) at org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.ls(AbstractRemoteFileOutboundGateway.java:957) at org.springframework.integration.file.remote.gateway.AbstractRemoteFileOutboundGateway.lambda$doLs$6(AbstractRemoteFileOutboundGateway.java:608) at org.springframework.integration.file.remote.RemoteFileTemplate.execute(RemoteFileTemplate.java:452) ... 31 more Caused by: 4: at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1747) at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1553) at org.springframework.integration.sftp.session.SftpSession.list(SftpSession.java:111) ... 36 more Caused by: java.lang.NullPointerException at com.jcraft.jsch.ChannelSftp.remoteAbsolutePath(ChannelSftp.java:2943) at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1572) ... 38 more
At this point, I'm not even sure if it's a programming problem or an ftp or sftp problem.
You are getting an NPE because you are not providing an expression for the directory; you were just lucky it works with FTP, the SFTP client is not so forgiving.
.handle(Sftp.outboundGateway(sftp(), Command.LS, null)
Use
.handle(Sftp.outboundGateway(sftp(), Command.LS, "payload")

Execution of Rabbit message listener failed, and the error handler threw an exception

I have RabbitMQ running server A and a consumer of the rabbitMQ in server B .I'am using spring-boot rabbitMQ and this is my configuration.
#Bean
public Queue queue() {
return new Queue(queueName, true);
}
#Bean
public TopicExchange exchange() {
return new TopicExchange(topicExchangeName);
}
#Bean
Binding binding(Queue queue, TopicExchange exchange) {
return BindingBuilder.bind(queue).to(exchange).with(prefix);
}
#Bean
ConnectionFactory connectionFactory(){
CachingConnectionFactory connectionFactory =new CachingConnectionFactory() ;
connectionFactory.setCacheMode(CachingConnectionFactory.CacheMode.CHANNEL);
connectionFactory.setHost(host);
connectionFactory.setPort(port);
connectionFactory.setUsername(userName);
connectionFactory.setPassword(password);
return connectionFactory;
}
#Bean
#DependsOn("connectionFactory")
SimpleMessageListenerContainer container(ConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter) {
SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.setQueueNames(queueName);
container.setMessageListener(listenerAdapter);
return container;
}
#Bean
MessageListenerAdapter listenerAdapter(RabbitConsumer receiver) {
return new MessageListenerAdapter(receiver, "consumeMessage");
}
but when i deploy and run it , i keep getting this error
2020-03-04 | 07:54:17.344 | container-1 | ERROR | o.s.a.r.l.SimpleMessageListenerContainer | Execution of Rabbit message listener failed, and the error handler threw an exception
org.springframework.amqp.AmqpRejectAndDontRequeueException: Error Handler converted exception to fatal
at org.springframework.amqp.rabbit.listener.ConditionalRejectingErrorHandler.handleError(ConditionalRejectingErrorHandler.java:105) ~[spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeErrorHandler(AbstractMessageListenerContainer.java:1378) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.handleListenerException(AbstractMessageListenerContainer.java:1631) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1424) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.doReceiveAndExecute(SimpleMessageListenerContainer.java:870) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.receiveAndExecute(SimpleMessageListenerContainer.java:854) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer.access$1600(SimpleMessageListenerContainer.java:78) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.mainLoop(SimpleMessageListenerContainer.java:1137) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer$AsyncMessageProcessingConsumer.run(SimpleMessageListenerContainer.java:1043) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_242]
Caused by: org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.wrapToListenerExecutionFailedExceptionIfNeeded(AbstractMessageListenerContainer.java:1651) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1555) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.actualInvokeListener(AbstractMessageListenerContainer.java:1478) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:1466) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:1461) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.executeListener(AbstractMessageListenerContainer.java:1410) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
... 6 common frames omitted
Caused by: org.springframework.amqp.support.converter.MessageConversionException: failed to convert serialized Message content
at org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:114) ~[spring-amqp-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.AbstractAdaptableMessageListener.extractMessage(AbstractAdaptableMessageListener.java:285) ~[spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter.onMessage(MessageListenerAdapter.java:282) ~[spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:1552) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
... 10 common frames omitted
Caused by: java.lang.IllegalArgumentException: Could not deserialize object
at org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:95) ~[spring-amqp-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.support.converter.SimpleMessageConverter.fromMessage(SimpleMessageConverter.java:110) ~[spring-amqp-2.1.5.RELEASE.jar:2.1.5.RELEASE]
... 13 common frames omitted
Caused by: java.io.InvalidClassException: org.hibernate.collection.internal.AbstractPersistentCollection; local class incompatible: stream classdesc serialVersionUID = -7009541904449236102, local class serialVersionUID = 6275967693128102740
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:699) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1940) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1806) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1940) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1806) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2097) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1625) ~[na:1.8.0_242]
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2342) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2222) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2124) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1625) ~[na:1.8.0_242]
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2342) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2222) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2124) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1625) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:465) ~[na:1.8.0_242]
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:423) ~[na:1.8.0_242]
at org.springframework.amqp.utils.SerializationUtils.deserialize(SerializationUtils.java:92) ~[spring-amqp-2.1.5.RELEASE.jar:2.1.5.RELEASE]
... 14 common frames omitted
i have tried making the consumer accept both byte array and string but to no vain.
i'am
it's been 2 days and i'am stuck on this issue.
Caused by: java.io.InvalidClassException: org.hibernate.collection.internal.AbstractPersistentCollection; local class incompatible: stream classdesc serialVersionUID = -7009541904449236102, local class serialVersionUID = 6275967693128102740
This simply means that the class serialized on the producer is different to the class on the consumer.
The default SimpleMessageConverter uses Java serialization by default (unless the payload is a byte[] or String.
When using java serialization, the classes must be identical.
Either make sure the classes are in sync, or consider using something like JSON for serialization instead.

OSGI EventAdmin can not send event - getting null point exception on Producer

I am trying to send an event to a consumer. I am getting NullPointerException
Here is my event code
public class Activator implements BundleActivator {
EventAdmin eventAdmin;
#Override
public void start(BundleContext bundleContext) throws Exception {
System.out.println("started");
Dictionary<String, String> properties = new Hashtable<>();
properties.put("test", "blah");
Event event = new Event("test/sent", properties);
System.out.println("sending");
eventAdmin.sendEvent(event);
}
#Override
public void stop(BundleContext bundleContext) throws Exception {
System.out.println("stopped ");
}
}
Here is the LOG
org.osgi.framework.BundleException: Exception in
com.aml.project.Activator.start() of bundle h. at
org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:863)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.start(BundleContextImpl.java:791)
at
org.eclipse.osgi.internal.framework.EquinoxBundle.startWorker0(EquinoxBundle.java:1013)
at
org.eclipse.osgi.internal.framework.EquinoxBundle$EquinoxModule.startWorker(EquinoxBundle.java:365)
at org.eclipse.osgi.container.Module.doStart(Module.java:598) at
org.eclipse.osgi.container.Module.start(Module.java:462) at
org.eclipse.osgi.internal.framework.EquinoxBundle.start(EquinoxBundle.java:439)
at org.apache.felix.gogo.command.Basic.start(Basic.java:739) at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native
Method) at
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567) at
org.apache.felix.gogo.runtime.Reflective.invoke(Reflective.java:139)
at
org.apache.felix.gogo.runtime.CommandProxy.execute(CommandProxy.java:91)
at org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:599)
at
org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:526)
at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:415)
at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:416) at
org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229) at
org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59) at
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:835) Caused by:
java.lang.NullPointerException at
com.aml.project.Activator.start(Activator.java:21) at
org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:842)
at
org.eclipse.osgi.internal.framework.BundleContextImpl$3.run(BundleContextImpl.java:1)
at
java.base/java.security.AccessController.doPrivileged(AccessController.java:552)
at
org.eclipse.osgi.internal.framework.BundleContextImpl.startActivator(BundleContextImpl.java:834)
... 23 more java.lang.NullPointerException
You use the field eventAdmin that is never set. So you get a NullPointerException. I suggest to use declarative services instead and inject EventAdmin using #Reference.
See OSGi Event Admin – Publish & Subscribe from Vogella for all details.

JMS Connection is closed with Spring Boot

I use Spring Boot 1.2.3-RELEASE with ActiveMQ 5.11.1.
I have configured JMS with the following:
spring:
activemq:
inMemory: false
broker-url: tcp://localhost:61616?wireFormat.maxInactivityDurationInitalDelay=30000
And I send messages like this:
jmsTemplate.send(Queues.BULK_LOAD_BYINSERT_FILE, new MessageCreator() {
#Override
public Message createMessage(javax.jms.Session session) throws JMSException {
log.info("******** SEND BULK_LOAD_BYINSERT: {}", file.getName());
return session.createObjectMessage(file);
}
});
When I send messages once in a while I will get the following ERROR. I have no idea how I could avoid this problem, and how I could detect where is the connection closed. Would anyone have an suggestion how I could proceed to avoid this?
Thanks for your help.
2015-05-18 17:48:19.305 ERROR 27713 --- [enerContainer-1] c.b.services.BulkLoaderServices : Problem while bulkLoading XXX.201211.df5e480c604896098447873e1436a75e
org.springframework.jms.IllegalStateException: The Session is closed; nested exception is javax.jms.IllegalStateException: The Session is closed
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:279)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:496)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:579)
at com.bulkLoader.services.BulkLoaderServices.dataLoaded(BulkLoaderServices.java:155)
at com.bulkLoader.services.BulkLoaderServices.bulkLoad(BulkLoaderServices.java:116)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:185)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:104)
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:90)
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:66)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:674)
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:634)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:605)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:308)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:226)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1144)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1136)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1033)
at java.lang.Thread.run(Thread.java:745)
Caused by: javax.jms.IllegalStateException: The Session is closed
at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767)
at org.apache.activemq.ActiveMQSession.createQueue(ActiveMQSession.java:1265)
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveQueue(DynamicDestinationResolver.java:84)
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:58)
at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:98)
at org.springframework.jms.core.JmsTemplate.access$200(JmsTemplate.java:90)
at org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:582)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:493)
... 19 common frames omitted
2015-05-18 17:48:19.326 ERROR 27713 --- [enerContainer-1] o.s.j.l.DefaultMessageListenerContainer : Application exception overridden by rollback exception
org.springframework.jms.listener.adapter.ListenerExecutionFailedException: Listener method 'public void com.bulkLoader.services.BulkLoaderServices.bulkLoad(java.io.File)' threw exception; nested exception is org.springframework.jms.IllegalStateException: The Session is closed; nested exception is javax.jms.IllegalStateException: The Session is closed
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:98)
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.onMessage(MessagingMessageListenerAdapter.java:66)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:674)
at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:634)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:605)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:308)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:226)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1144)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1136)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1033)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.jms.IllegalStateException: The Session is closed; nested exception is javax.jms.IllegalStateException: The Session is closed
at org.springframework.jms.support.JmsUtils.convertJmsAccessException(JmsUtils.java:279)
at org.springframework.jms.support.JmsAccessor.convertJmsAccessException(JmsAccessor.java:169)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:496)
at org.springframework.jms.core.JmsTemplate.send(JmsTemplate.java:579)
at com.bulkLoader.services.BulkLoaderServices.submitErrorProblem(BulkLoaderServices.java:164)
at com.bulkLoader.services.BulkLoaderServices.bulkLoad(BulkLoaderServices.java:125)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:185)
at org.springframework.messaging.handler.invocation.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:104)
at org.springframework.jms.listener.adapter.MessagingMessageListenerAdapter.invokeHandler(MessagingMessageListenerAdapter.java:90)
... 10 common frames omitted
Caused by: javax.jms.IllegalStateException: The Session is closed
at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767)
at org.apache.activemq.ActiveMQSession.createQueue(ActiveMQSession.java:1265)
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveQueue(DynamicDestinationResolver.java:84)
at org.springframework.jms.support.destination.DynamicDestinationResolver.resolveDestinationName(DynamicDestinationResolver.java:58)
at org.springframework.jms.support.destination.JmsDestinationAccessor.resolveDestinationName(JmsDestinationAccessor.java:98)
at org.springframework.jms.core.JmsTemplate.access$200(JmsTemplate.java:90)
at org.springframework.jms.core.JmsTemplate$4.doInJms(JmsTemplate.java:582)
at org.springframework.jms.core.JmsTemplate.execute(JmsTemplate.java:493)
... 19 common frames omitted
2015-05-18 17:48:19.327 WARN 27713 --- [enerContainer-1] o.s.j.l.DefaultMessageListenerContainer : Execution of JMS message listener failed, and no ErrorHandler has been set.
javax.jms.IllegalStateException: The Session is closed
at org.apache.activemq.ActiveMQSession.checkClosed(ActiveMQSession.java:767)
at org.apache.activemq.ActiveMQSession.getTransacted(ActiveMQSession.java:532)
at org.springframework.jms.listener.AbstractMessageListenerContainer.rollbackOnExceptionIfNecessary(AbstractMessageListenerContainer.java:747)
at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:612)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:308)
at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:226)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1144)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1136)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1033)
at java.lang.Thread.run(Thread.java:745)

Rollback error org.h2.jdbc.JdbcSQLException: General error: "java.lang.ArrayIndexOutOfBoundsException: 0";

I use H2 database with Spring, Hibernate and DBUnit for testing. I also use c3p0 connection pool. One of my tests, however strangely fails immediately after it is passes successfully, some exception occurs after the test execution on rollback. My connection URL is jdbc:h2:file:h2/db;MODE=MySQL;LOCK_MODE=0 The following is the test itself.
#Test
public testFindLatestNotSynced() {
BuyWine buyWine = buyWineDao.findLatestNotSynced(1).get(0);
assertNotNull(buyWine);
assertEquals("3", buyWine.getId());
buyWine.setSyncDate(new Date());
buyWine = buyWineDao.findLatestNotSynced(1).get(0);
assertNotNull(buyWine);
assertEquals("1", buyWine.getId());
buyWine.setSyncDate(new Date());
/* Checking empty. */
List<BuyWine> wines = buyWineDao.findLatestNotSynced(1);
assertEquals(0, wines.size());
}
The setup() and teardown methods are.
#Autowired
private IDatabaseConnection dbUnitConnection;
#Autowired
private FlatXmlDataSetBuilder datasetBuilder;
private ReplacementDataSet dataSet;
...
#Before
public void setUp() throws Exception {
if (initialDatasetName != null) {
/* Using replacement data set, so we can use null values in the first row. */
dataSet = new ReplacementDataSet(
datasetBuilder.build(getClass().getResourceAsStream(initialDatasetName)));
dataSet.addReplacementObject("[NULL]", null);
dataSet.setStrictReplacement(true);
DatabaseOperation.CLEAN_INSERT.execute(dbUnitConnection, dataSet);
}
}
#After
public void tearDown() throws Exception {
if (dataSet != null) {
DatabaseOperation.DELETE_ALL.execute(dbUnitConnection, dataSet);
}
dbUnitConnection.close();
DataSourceUtils.releaseConnection(connection, dataSource);
}
It looks very much like a bug in H2, but I want to figure out some workaround for that.
The stack trace of the exception is:
org.springframework.transaction.TransactionSystemException: Could not roll back Hibernate transaction; nested exception is org.hibernate.TransactionException: rollback failed
at org.springframework.orm.hibernate4.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:577)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:846)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:823)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener$TransactionContext.endTransaction(TransactionalTestExecutionListener.java:588)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.endTransaction(TransactionalTestExecutionListener.java:297)
at org.springframework.test.context.transaction.TransactionalTestExecutionListener.afterTestMethod(TransactionalTestExecutionListener.java:192)
at org.springframework.test.context.TestContextManager.afterTestMethod(TestContextManager.java:395)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:91)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:72)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:231)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:88)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:231)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:60)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:229)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:50)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:222)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71)
at org.junit.runners.ParentRunner.run(ParentRunner.java:300)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:174)
at org.junit.runner.JUnitCore.run(JUnitCore.java:157)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:74)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:202)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:65)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: org.hibernate.TransactionException: rollback failed
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:215)
at org.springframework.orm.hibernate4.HibernateTransactionManager.doRollback(HibernateTransactionManager.java:574)
... 28 more
Caused by: org.hibernate.TransactionException: unable to rollback against JDBC connection
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:167)
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.rollback(AbstractTransactionImpl.java:209)
... 29 more
Caused by: org.h2.jdbc.JdbcSQLException: General error: "java.lang.ArrayIndexOutOfBoundsException: 0"; SQL statement:
ROLLBACK [50000-174]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:332)
at org.h2.message.DbException.get(DbException.java:161)
at org.h2.message.DbException.convert(DbException.java:284)
at org.h2.table.RegularTable.removeRow(RegularTable.java:394)
at org.h2.engine.UndoLogRecord.undo(UndoLogRecord.java:98)
at org.h2.engine.Session.rollbackTo(Session.java:586)
at org.h2.engine.Session.rollback(Session.java:554)
at org.h2.command.dml.TransactionCommand.update(TransactionCommand.java:50)
at org.h2.command.CommandContainer.update(CommandContainer.java:79)
at org.h2.command.Command.executeUpdate(Command.java:253)
at org.h2.jdbc.JdbcConnection.rollbackInternal(JdbcConnection.java:1445)
at org.h2.jdbc.JdbcConnection.rollback(JdbcConnection.java:470)
at com.mchange.v2.c3p0.impl.NewProxyConnection.rollback(NewProxyConnection.java:860)
at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doRollback(JdbcTransaction.java:163)
... 30 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
at org.h2.index.PageBtree.getRow(PageBtree.java:172)
at org.h2.index.PageBtreeLeaf.remove(PageBtreeLeaf.java:228)
at org.h2.index.PageBtreeIndex.remove(PageBtreeIndex.java:239)
at org.h2.table.RegularTable.removeRow(RegularTable.java:376)
... 40 more

Resources