Я посмотрел на код ActiveMQ , который выбрасывает это исключение из org.apache.activemq.ra.ActiveMQActivationSpec#setResourceAdapter
:
public void setResourceAdapter(ResourceAdapter resourceAdapter) throws ResourceException {
// spec section 5.3.3
if (this.resourceAdapter != null) {
throw new ResourceException("ResourceAdapter already set");
}
if (!(resourceAdapter instanceof MessageResourceAdapter)) {
throw new ResourceException("ResourceAdapter is not of type: " + MessageResourceAdapter.class.getName());
}
this.resourceAdapter = (MessageResourceAdapter)resourceAdapter;
}
В нем содержится ссылка на раздел 5.3.3 спецификации JCA 1.5, в котором говорится:частично:
Метод setResourceAdapter в JavaBean ActivationSpec должен вызываться ровно один раз;то есть ассоциация не должна изменяться в течение времени жизни ActivationSpec JavaBean.
Таким образом, похоже, что либо ошибка в JBoss в том, что она вызывает setResourceAdapter
moreчем один раз за время существования ActivationSpec
или в ActiveMQ есть ошибка в том, как он интерпретирует спецификацию JCA 1.5 и выдает исключение.Любая ошибка в JBoss Application Server 5.x на данный момент не будет исправлена (5.0 была выпущена более 10 лет назад), поэтому вы можете обновить ее до последней версии (например, Wildfly 17.0.1 ).Или, может быть, кто-то из сообщества Apache ActiveMQ посмотрит на проблему, решит, что это ошибка, и исправит ее.Лучше всего предупредить сообщество, используя ActiveMQ User Mailing List .
Вы также можете решить эту проблему самостоятельно, поскольку оба проекта имеют открытый исходный код.