Не удалось извлечь тело .. Запрещенный класс

Я играю с Camel и ActiveMQ, пытаясь отскочить от фиктивного объекта между моими очередями. (Нет, в реальном случае так не поступит ..) Однако мне не разрешено делать это из-за ограничений безопасности, и я действительно не могу понять, почему? Я читал о объект и вижу свои изменения при запуске AMQ

..d:\apache-activemq-5.15.3\bin..\conf\login.config -Dorg.apache.activemq.SERIALIZABLE_PACKAGES=* -Dactivemq.classpath=d ..

И я добавил это в свою фабрику подключений

<property name = "connectionFactory">
  <bean class = "org.apache.activemq.ActiveMQConnectionFactory">
    <property name = "brokerURL" value = "tcp://localhost:61616"/>
    <property name = "trustAllPackages" value = "true"/>
  </bean>
</property>

И мой класс Dummy реализует Serializable.

Но он по-прежнему отказывается говорить:

org.apache.camel.RuntimeCamelException: Failed to extract body due to: 
javax.jms.JMSException: Failed to build body from content.
Serializable class not available to broker. 
Reason: java.lang.ClassNotFoundException: 
Forbidden class camelinaction.Dummy! This class is not trusted to be 
serialized as ObjectMessage payload.

Бьюсь об заклад, я забыл кое-что простое ... но не могу понять.

Ваше здоровье

Какой бы ни была причина, похоже, ваш trustAllPackages не работает. Если вы посмотрите на этот клиентский класс ActiveMQ, начиная со строки 101, вы получите сообщение об ошибке внутри проверки, что trustAllPackages не установлен.

burki 04.04.2018 10:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
1 657
1

Ответы 1

Ваша настройка выглядит нормально, поскольку вы уже разрешили сериализацию на брокере и клиенте.

Единственное, что я заметил, - это небольшая разница между вашей конфигурацией XML и конфигурацией в Документация ActiveMQ.

В документации используется путь к классам, содержащий пакет spring. В вашем пути к классам отсутствует этот пакет. Поскольку класс в пакете spring является подклассом того класса, который вы используете, это может иметь значение, но это всего лишь предположение.

class = "org.apache.activemq.spring.ActiveMQConnectionFactory"

Спасибо, но нет, это есть. Как указано, он записывает это при запуске "-Dorg.apache.activemq.SERIALIZABLE_PACKAGES = *"

elwis 03.04.2018 15:14

Я отредактировал свой ответ. Вероятно, вам придется установить его и на клиентах.

burki 03.04.2018 15:32

Хорошо, но если вы посмотрите на мой вопрос, я установил для параметра trustAllPackages значение true для фабрики соединений? Насколько я понимаю, это должно сработать?

elwis 03.04.2018 16:19

Извините, я ответил, основываясь на сообщении об ошибке, а не на вашем вопросе. Я еще раз отредактировал свой ответ. Небольшая разница - это единственное, что я могу найти.

burki 03.04.2018 16:58

Я попробую, наверняка что-то не так с доверием

elwis 04.04.2018 20:04

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