camel-cxf-blueprint - проблема с ClassNotFoundException

23 дек 2021

camel-cxf-blueprint - проблема с ClassNotFoundException

Недавно натолкнулись на небольшую проблему и потратили некоторое время в связи с ней - вдруг наш блог сэкономит кому-нибудь время... Мы делали простой маршрут на Apache Camel с использованием Apache CXF. В blueprint был добавлен CXF Server:

    <!-- CXF servers -->
    <camelcxf:rsServer id="blogServiceServer" address="/api/message"
                        loggingFeatureEnabled="false" serviceClass="ru.entaxy.cxf.test.MessageService">
    </camelcxf:rsServer>

Бандл устанавливался в Apache Karaf, куда были предварительно установлены все нужные features - cxf и camel-cxf. При установке нашего бандла вылетала ошибка Caused by: java.lang.ClassNotFoundException: org.apache.camel.component.cxf.jaxrs.blueprint.CxfRsBlueprintEndpointFactoryBean, хотя пакет org.apache.camel.component.cxf.jaxrs.blueprint прекрасно экспортируется из активного бандла camel-cxf-blueprint. В итоге эта странная проблема решилась только добавлением явного импорта пакета в maven-bundle-plugin:

<plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>5.1.3</version>
                <extensions>true</extensions>
                <executions>
                    <execution>
                        <id>bundle-manifest</id>
                        <phase>process-classes</phase>
                        <goals>
                            <goal>manifest</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <instructions>
                        <Bundle-SymbolicName>entaxy-test</Bundle-SymbolicName>
                        <Export-Package>ru.entaxy.test.*</Export-Package>
                        <Import-Package>
                         !com.sun.xml.*,
            org.apache.cxf.jaxrs.impl,
            org.apache.camel.component.cxf.jaxrs.blueprint,
            org.apache.camel.component.cxf.blueprint,
            *</Import-Package>
                    </instructions>
                </configuration>
            </plugin>

Удачных вам интеграций!

* Рисунок для этого блога взят с https://camel.apache.org/

Комментарии: 0