Я играю с 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.
Бьюсь об заклад, я забыл кое-что простое ... но не могу понять.
Ваше здоровье




Ваша настройка выглядит нормально, поскольку вы уже разрешили сериализацию на брокере и клиенте.
Единственное, что я заметил, - это небольшая разница между вашей конфигурацией XML и конфигурацией в Документация ActiveMQ.
В документации используется путь к классам, содержащий пакет spring. В вашем пути к классам отсутствует этот пакет. Поскольку класс в пакете spring является подклассом того класса, который вы используете, это может иметь значение, но это всего лишь предположение.
class = "org.apache.activemq.spring.ActiveMQConnectionFactory"
Спасибо, но нет, это есть. Как указано, он записывает это при запуске "-Dorg.apache.activemq.SERIALIZABLE_PACKAGES = *"
Я отредактировал свой ответ. Вероятно, вам придется установить его и на клиентах.
Хорошо, но если вы посмотрите на мой вопрос, я установил для параметра trustAllPackages значение true для фабрики соединений? Насколько я понимаю, это должно сработать?
Извините, я ответил, основываясь на сообщении об ошибке, а не на вашем вопросе. Я еще раз отредактировал свой ответ. Небольшая разница - это единственное, что я могу найти.
Я попробую, наверняка что-то не так с доверием
Какой бы ни была причина, похоже, ваш
trustAllPackagesне работает. Если вы посмотрите на этот клиентский класс ActiveMQ, начиная со строки 101, вы получите сообщение об ошибке внутри проверки, чтоtrustAllPackagesне установлен.