Пользовательский преобразователь mule работает в студии, но не развертывается на автономном сервере.

У меня есть поток с кастомным трансформатором. Этот поток работает, когда я запускаю его в Mule Studio, но терпит неудачу при запуске автономным сервером mule. Сообщение об ошибке: «Нет класса для пользовательского преобразователя элемента (имя = таблица обновления)».

<flow name="updates" doc:name="updates">

    <jms:inbound-endpoint connector-ref="JMSConnector"
        doc:name="JMS" topic="updates" />
    <collection-splitter doc:name="Collection Splitter" />
    <custom-transformer class="com.domain.UpdateTable"
        doc:name="Update Table">
        <spring:property name="table" ref="table" />
    </custom-transformer>

</flow>

Я также нашел похожий вопрос на старом форуме мулов, но на него не было ответа ;


person CAB    schedule 26.03.2013    source источник
comment
Развернут ли класс com.domain.UpdateTable в пути к классам вашего приложения в Muls Standalone?   -  person Filipe Fedalto    schedule 27.03.2013
comment
Класс находится в экспортированном MuleStudio ZIP-файле в папке классов. Он заканчивается в $MULE_HOME/apps/myapp/classes/com/domain/UpdateTable.class. Я предполагаю, что Mule собирает их как часть горячего развертывания — если нет какой-либо конфигурации проекта, которую необходимо выполнить в MuleStudio перед экспортом?   -  person CAB    schedule 27.03.2013
comment
Wrt/мой предыдущий комментарий. У меня есть еще один класс в том же пакете - сама таблица, экземпляр которой я создаю как Spring bean (без использования фабрики) и который передается как свойство пользовательскому преобразователю. Я ожидаю, что если Spring найдет этот класс, UpdateTable также должен быть доступен.   -  person CAB    schedule 28.03.2013
comment
Трудно сказать, почему он терпит неудачу, потому что теоретически, с информацией, которую вы предоставляете, он должен работать. Можете показать полную трассировку стека?   -  person David Dossot    schedule 29.03.2013
comment
В конце концов мы определили, что это была статическая ошибка инициализации в классе, которая вызывала ошибку NoClassDefFoundError, которую мул трансформировал в No class for element, путем перехвата и вывода трассировки стека на консоль. Далее мы сузили это до ошибки в xml-apis-1.3.04.jar. . Решение состояло в том, чтобы переместить эту банку из mule/lib/endorsed в mule/lib/user.   -  person CAB    schedule 01.04.2013


Ответы (1)


Эта ошибка была вызвана ошибкой java.lang.NoClassDefFoundError, которую Mule перехватывает и преобразует в сообщение «Нет класса для элемента». Вот хорошее описание NoClassDefFoundError. В моем случае ошибка была вызвана исключением из статического инициализатора.

person CAB    schedule 01.04.2013