Для пространства имен не найдено DestinationFactory — создайте uber JAR CXF с помощью Jetty

Я хочу создать uber JAR для сервера приложений на основе CXF. Я хочу запустить сервер из командной строки с помощью java -jar. В IDE я могу запустить основной класс com.connexta.desertcodecamp.Server, но неправильно создаю банку uber.

Когда я запускаю команду java -jar server-1.0-SNAPSHOT.jar, я получаю

org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:215)
        at com.connexta.desertcodecamp.Server.<init>(Server.java:19)
        at com.connexta.desertcodecamp.Server.main(Server.java:33)
Caused by: org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/http.
        at org.apache.cxf.bus.managers.DestinationFactoryManagerImpl.getDestinationFactory(DestinationFactoryManagerImpl.java:122)
        at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:79)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:63)
        at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:170)

Вот ссылка на файл POM (и репозиторий GitHub): https://github.com/ahoffer/desert-code-camp/blob/master/server/pom.xml

Другие сообщения ссылаются на отсутствующую зависимость, cxf-rt-transports-http, но у меня есть это как зависимость в POM.xml.


person ahoffer    schedule 28.08.2016    source источник
comment
вы уверены, что он у вас есть в комбинированной банке? Как вы объединили банки?   -  person bmargulies    schedule 29.08.2016
comment
@bmargulies Я недостаточно знаю, чтобы ответить на вопрос. Я не знаю, что означает объединение в этом случае. Я включил cxf-rt-transports-http в качестве зависимости от maven. Я предполагал, что все зависимости попадут в затененный JAR.   -  person ahoffer    schedule 29.08.2016


Ответы (1)


Решение было здесь: верблюд apache - упаковка исполняемой банки и здесь: Отсутствует файл cxf.xml? Сбой в maven, работает в Eclipse.

Добавление этого трансформатора и магического ресурса в раздел конфигурации плагина maven shadow исправляет это:

<transformer org.apache.maven.plugins.shade.resource.AppendingTransformer">
    <resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>

Ресурс генерируется плагином; не надо его создавать

person ahoffer    schedule 29.08.2016