🎄 Happy Holidays! 🥳
Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.
Happy Holidays!
Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.
Does solace has issue while loading truststore.jks file after having a idle connection period?
I have built an api that connects successfully via keystore/truststore first time. Of Late I observed a weird issue as stated below:
org.springframework.jms.UncategorizedJmsException: Uncategorized exception occurred during JMS processing; nested exception is com.solacesystems.jms.ConfigurationException: Unable to load trust store: /bpms/sail/stride/sail-stride/live/config/sit/SailEbbsTrustStore.jks
The path mentioned /bpms/sail/stride/sail-stride/live/config/sit/ is outside my package and not unders classpath of my spring boot application.
The issue makes the connection failure and message transfer is stuck. I am using spring boot application and Jms libraries to create connection factory.
Kindly help here as I am helpless across google for this issue.
Thanks,
ABhishek
Answers
-
Hi @abhis_khiladi,
Interesting issue. I haven't seen this before. Is it reproducible? Is it upon restart of the application or just when the app is trying to reconnect?
0 -
Thanks Marc for responding.
The issue is reproducible after idle time of more than 12 hours is my observation and after I restart the app all the messages stuck are released and sent through, resolving the issue. My connection factory code is below:
protected Hashtable<String, Object> environMentProperties(JmsPropertiesFileItConfiguration jmsProperties) { Hashtable<String, Object> env = new Hashtable(); env.put(InitialContext.INITIAL_CONTEXT_FACTORY, "com.solacesystems.jndi.SolJNDIInitialContextFactory"); env.put("java.naming.provider.url", jmsProperties.getProviderUrl()); env.put("Solace_JMS_SSL_TrustStoreFormat", jmsProperties.getTruststoreType()); env.put("Solace_JMS_VPN", jmsProperties.getVpnProfile()); env.put("Solace_JMS_SSL_ValidateCertificate", Boolean.valueOf(jmsProperties.isSslEnabled())); env.put("Solace_JMS_SSL_TrustStore", jmsProperties.getTruststore()); env.put("SOLACE_JMS_SSL_TRUST_STORE_PASSWORD", jmsProperties.getTruststorePassword()); env.put(SupportedProperty.SOLACE_JMS_SSL_KEY_STORE, jmsProperties.getKeystore()); env.put(SupportedProperty.SOLACE_JMS_SSL_KEY_STORE_FORMAT, jmsProperties.getKeystoreType()); env.put(SupportedProperty.SOLACE_JMS_SSL_KEY_STORE_PASSWORD, jmsProperties.getKeystorePassword()); env.put(SupportedProperty.SOLACE_JMS_AUTHENTICATION_SCHEME, SupportedProperty.AUTHENTICATION_SCHEME_CLIENT_CERTIFICATE); env.put(SupportedProperty.SOLACE_JMS_SSL_CIPHER_SUITES, "ECDHE-RSA-AES256-GCM-SHA384,ECDHE-RSA-AES128-GCM-SHA256"); env.put("Solace_JMS_JNDI_ConnectRetries", jmsProperties.getConnectRetries()); env.put("Solace_JMS_JNDI_ConnectRetriesPerHost", jmsProperties.getConnectionRetriesPerHost()); env.put("Solace_JMS_JNDI_ConnectTimeout", jmsProperties.getConnectTimeout()); env.put("Solace_JMS_JNDI_ReadTimeout", jmsProperties.getReadTimeout()); env.put("Solace_JMS_JNDI_ReconnectRetries", jmsProperties.getReconnectRetries()); env.put("Solace_JMS_JNDI_ReconnectRetryWait", jmsProperties.getReconnectRetryWait()); return env; } protected JmsComponent jmsComponent(JmsPropertiesFileItConfiguration jmsProperties, Hashtable<String, Object> env) throws NamingException, JMSException { JmsComponent jmsComponent = new JmsComponent(this.jmsConfiguration(jmsProperties, env)); jmsComponent.setAcknowledgementMode(2); jmsComponent.setAutoStartup(true); return jmsComponent; } protected JmsConfiguration jmsConfiguration(JmsPropertiesFileItConfiguration jmsProperties, Hashtable<String, Object> env) throws NamingException, JMSException { JmsConfiguration jmsConfiguration = new JmsConfiguration(); jmsConfiguration.setConnectionFactory(this.connectionFactory(jmsProperties, env)); return jmsConfiguration; } public SolConnectionFactory connectionFactory(JmsPropertiesFileItConfiguration jmsProperties, Hashtable<String, Object> env) throws NamingException, JMSException { InitialContext initialContext = new InitialContext(env); SolConnectionFactory connectionFactory = (SolConnectionFactory) initialContext.lookup(jmsProperties.getConnectionFactory()); return connectionFactory;
0 -
Hi @abhis_khiladi,
Interesting. When you say "idle time of more than 12 hours" what do you mean by that? To be honest nothing is jumping out at me as an issue.
Note: if you have paid support please open a support ticket so you can share the application logs, etc. and they can help troubleshoot the issue.
0