Solace Community is getting a facelift!
On March 3rd we will be starting the process of migrating Solace Community to a new platform. As a result, Solace Community will go in to a temporary read-only state. You will still be able to come onto Solace Community and search through posts to find answers, but you won't be able to ask questions, post comments, or react in any way.
We hope to have the migration complete by Wednesday March 5th (or sooner), so please keep an eye out!
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