При создании 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

Любые предложения будут очень полезны.

0 ответов

Другие вопросы по тегам