我正在修改一个使用服务层的基于Maven的Liferay portlet(6.1.1)。
我的需求是向portlet添加一个ActiveMQ侦听器(用于与外部产品通信)。
我正在尝试使用集成的spring引擎(3.0.7)来实例化侦听器。
因此,首先,在ext-sping.xml(由Liferay自动管理)中,我定义了以下bean:-连接工厂:org.apache.activemq.ActiveMQConnectionFactory
-缓存连接工厂(org.springframework.jms.connection.CachingConnectionFactory
),其具有对先前bean的targetConnectionFactory
引用。
在部署时,我得到的错误是:
Cannot convert value of type [org.apache.activemq.ActiveMQConnectionFactory] to
required type [javax.jms.ConnectionFactory] for property
'targetConnectionFactory': no matching editors or conversion strategy found
显然,org.apache.activemq.ActiveMQConnectionFactory
实现了javax.jms.ConnectionFactory
,事实上,如果我尝试通过代码设置值,部署就成功了。
在我的pom.xml中,我试图将depenency添加到activemq-core(仅activemq)或activemq-all(还包含javax.jms包),但没有成功。
这怎么可能?
感谢
可能是一个类加载器问题-加载CachingConnectionFactory
的类加载器正在解决不同于加载ActiveMQ工厂的javax.jms.ConnectionFactory
。
在命令行上使用-verbose
运行,查看从哪个jar类加载。