I have a good working XML configuration for Camel Context that uses JNDI with Spring
Later Solace.JndiObjectFactoryBean gets used as connectionFactory
<bean id="Solace.JmsComponent" class=" on"> <property name="connectionFactory" ref="Solace.JndiObjectFactoryBean" /> <property name="destinationResolver" ref="Solace.JndiDestinationResolver" /> </bean>
I am trying to convert this into a Java class that extends from org.apache.camel.spring.javaconfig.CamelConfiguration
. But there is one problem. When I try to set a connection factory on JMS component component.setConnectionFactory(getJndiObjectFactoryBean()); getJndiObjectFactoryBean(), I get a compile time exception :
The method setConnectionFactory(ConnectionFactory) in the type JmsComponent is not applicable for the arguments (JndiObjectFactoryBean)
But when I try to cast JndiObjectFactoryBean returned from getJndiObjectFactoryBean explicitly to SolConnectionFactory, I get a runtime error
016-02-05 17:39:09,234|[localhost-startStop-1]|[]|[]|[ERROR] web.context.ContextLoader [line:307] Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getJMSConfiguration' defined in class path resource [com//camel /CamelRoutesConfig.class]: Instantiation of bean failed; nested exception is org .springframework.beans.factory.BeanDefinitionStoreException: Factory method [public org.apache.camel.component.jms.JmsConfiguration com.camel.CamelRoutesConfig.getJMSConfiguration()] threw exception; nested exception is java.lang.ClassCastException: org.springframework.jndi.JndiObjectFactoryBean$$EnhancerByCG LIB$$18b94f95 cannot be cast to com.solacesystems.jms.SolConnectionFactory at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsi ngFactoryMethod(ConstructorResolver.java:581) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory .instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1029) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory .createBeanInstance(AbstractAutowireCapableBeanFactory.java:925)
I believe do have have requisite jars in the class path. sol-common-x.y.z.jar, sol-jcsmp-x.y.z.jar, sol-jms-x.y.z.jar