При создании ActiveMQ Broker не найдено подходящих редакторов или стратегии конверсии.
Мы обновляем servicemix 4.4.1 до 5.6.0,ActiveMQ 5.5.1 до 5.12.2.
Сбой при создании существующего компонента XML
Невозможно преобразовать значение типа [com.myproduct.transport.bean.JcsSslContext] в требуемый тип [org.apache.activemq.broker.SslContext] для свойства 'sslContext': не найдено соответствующих редакторов или стратегии преобразования
Определение бина в xml, как показано ниже
<bean id="mySslContext" class="com.myproduct.transport.bean.MYSslContext" init-method="afterPropertiesSet">
<property name="keyStore" value="file:MY/conf/ssl.keystore" />
<property name="keyStorePasswordProperty" value="com.myproduct.transport.sslcontext.keyStorePassword" />
<property name="trustStore" value="file:MY/conf/ssl.keystore" />
<property name="trustStorePasswordProperty" value="com.myproduct.transport.sslcontext.trustStorePassword" />
</bean>
<!-- ActiveMQ broker -->
<broker id="MY-broker"
brokerName="MY-broker"
dataDirectory="${karaf.data}/activemq"
xmlns="http://activemq.apache.org/schema/core"
sslContext="#MYSslContext"
</broker>
Определение класса MYSslContext приведено ниже
package com.myproduct.transport.bean;
import org.apache.activemq.spring.SpringSslContext;
public class MYSslContext extends SpringSslContext
{
/** The system property containing the key store password */
private String keyStorePasswordProperty;
/** The system property containing the trust store password */
private String trustStorePasswordProperty;
@Override
public void afterPropertiesSet() throws Exception
{
// The values are set in etc/system.properties.
// They should have been decoded during startup by YOsgiBootstrapBean.
String keyStorePassword = System.getProperty(keyStorePasswordProperty, "");
String trustStorePassword = System.getProperty(trustStorePasswordProperty, "");
setKeyStorePassword(keyStorePassword);
setTrustStorePassword(trustStorePassword);
}
/**
* Set the system property containing the key store password.
*
* @param keyStorePasswordProperty The system property containing the key store password.
*/
public void setKeyStorePasswordProperty(String keyStorePasswordProperty)
{
this.keyStorePasswordProperty = keyStorePasswordProperty;
}
/**
* Set the system property containing the trust store password.
*
* @param trustStorePasswordProperty The system property containing the trust store password.
*/
public void setTrustStorePasswordProperty(String trustStorePasswordProperty)
{
this.trustStorePasswordProperty = trustStorePasswordProperty;
}
}
В идеале не должно быть никаких проблем, поскольку MYSslContext расширяет SpringSslContext, а SpringSslContext расширяет SslContext
Любые предложения будут очень полезны.