Не удается расширить SpringBootServletInitializer при использовании Apache-Camel Spring starter - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь создать развертываемый * .war из приложения Spring Boot, следуя его документации.У меня возникли проблемы при расширении SpringBootServletInitializer.Это дает мне ошибку времени компиляции, говорящую The type org.springframework.web.WebApplicationInitializer cannot be resolved. It is indirectly referenced from required .class files.Но в каталоге зависимостей Maven ясно видно, что SpringBootServletInitializer.class существует в spring-boot-1.5.10.RELEASE jar.Он был загружен как часть camel-spring-boot-starter зависимости.

Мой главный класс

@SpringBootApplication
@EnableAutoConfiguration
public class SpringCamelApplication  extends SpringBootServletInitializer{

public static void main(String[] args) {
    SpringApplication.run(SpringCamelApplication.class, args);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
    return application.sources(SpringCamelApplication.class);
}

@Bean
public RestConfiguration restConfiguration()
{
    RestConfiguration restconfig=new RestConfiguration();
    restconfig.setPort(8081);
    restconfig.setComponent("restlet");
    //restconfig.setHost("localhost");
    restconfig.setContextPath("/api");
    restconfig.setBindingMode("auto");
    return restconfig;
}

}

Мой pom.xml

<modelVersion>4.0.0</modelVersion>
    <groupId>com.camel</groupId>
    <artifactId>spring-camel</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>spring-camel</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <camel.version>2.21.0</camel.version>
        <spring.version>2.0.0.RELEASE</spring.version>
        <start-class>com.camel.springcamel.SpringCamelApplication</start-class>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>${camel.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-restlet</artifactId>
            <version>${camel.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

Куда я здесь не так?Я заметил, что если я использую spring-boot-starter-web зависимость, то это не дает мне никакой ошибки, но у меня уже есть camel-spring-boot-starter, поэтому мне не нужно spring-boot-starter-web.Кто-нибудь может объяснить, что здесь на самом деле не так?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 29 июня 2018

Вам необходимо обновить версию верблюда для совместимости с Spring Boot 2.

https://github.com/apache/camel/blob/master/components/camel-spring-boot/src/main/docs/spring-boot.adoc

Spring Boot 2 поддерживается начиная с Camel 2.22 (лето 2018).Предыдущие версии Camel поддерживают только Spring Boot 1.x.

Также с Spring Boot 2 spring-boot-starter-web больше не является транзитивной зависимостью в Spring Starters из-за добавления spring-boot-starter-webflux для реактивных импликов HTTP и WebSockets.Решать, какую реализацию выбрать, должны третьи лица или вы сами.

0 голосов
/ 29 июня 2018

Я нашел свое решение, это определенно была проблема с весенней загрузкой версии, которую я использовал, версия ниже 2 работает нормально, у горячего было время, чтобы выяснить, почему версия 2. . не работает.

...