В настоящее время я переношу свой проект с camel 2.5 на 3.1.0. Также я использую Java 11.0.11 с Apache Maven 3.6.3. Итак, у меня есть класс Java, который расширяет
RouteBuilder
класс из пакета org.apache.camel.builder
В данном классе я пытаюсь установить следующую конфигурацию REST:
public class IvyRouteBuilder extends RouteBuilder {
protected void enableCors(String path) {
estConfiguration()
.component("spark-rest")
.host("0.0.0.0")
.port(8087)
.bindingMode(RestBindingMode.off)
.enableCORS(true)
.corsHeaderProperty("Access-Control-Allow-Origin", "*")
.corsHeaderProperty("Access-Control-Allow-Headers", "*")
.corsHeaderProperty("Access-Control-Allow-Headers", "Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization")
.corsHeaderProperty("Allow", "GET,OPTIONS,POST,PATCH");
rest(path)
.verb("options")
.route()
.setHeader("Access-Control-Allow-Origin", constant("*"))
.setHeader("Access-Control-Allow-Methods", constant("GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, CONNECT, PATCH"))
.setHeader("Access-Control-Allow-Headers", constant("Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers, Authorization"))
.setHeader("Allow", constant("GET, OPTIONS, POST, PATCH"));
}
}
Когда я запускаю Java-приложение из Eclipse, оно работает нормально! Но не могу работать как файл .jar, и я получаю следующую ошибку:
Exception in thread "main" java.lang.IllegalArgumentException: Error parsing [8087] as a java.lang.Integer.
at org.apache.camel.support.CamelContextHelper.parse(CamelContextHelper.java:457)
at org.apache.camel.support.CamelContextHelper.parseInteger(CamelContextHelper.java:377)
at org.apache.camel.model.rest.RestConfigurationDefinition.asRestConfiguration(RestConfigurationDefinition.java:910)
at org.apache.camel.builder.RouteBuilder.populateRests(RouteBuilder.java:533)
at org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:434)
at org.apache.camel.impl.engine.AbstractCamelContext.lambda$addRoutes$0(AbstractCamelContext.java:1160)
at org.apache.camel.impl.engine.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:2544)
at org.apache.camel.impl.engine.AbstractCamelContext.addRoutes(AbstractCamelContext.java:1160)
at com.gtmhub.etl.MainApp.main(MainApp.java:53)
Caused by: org.apache.camel.NoTypeConversionAvailableException: No type converter available to convert from type: java.lang.String to the required type: java.lang.Integer with value 8087
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:224)
at org.apache.camel.impl.converter.BaseTypeConverterRegistry.mandatoryConvertTo(BaseTypeConverterRegistry.java:175)
at org.apache.camel.support.CamelContextHelper.parse(CamelContextHelper.java:454)
... 8 more
Я попытался передать ПОРТ в виде строки, но результат тот же!
Как я запускаю приложение:
public static void main(String... args) throws Exception {
CamelContext camelContext = new DefaultCamelContext();
camelContext.setLoadTypeConverters(true);
Injector injector = Guice.createInjector(new IvyModule());
camelContext.addRoutes(injector.getInstance(IvyRouteBuilder.class));
camelContext.addRoutes(injector.getInstance(UtilRoutes.class));
camelContext.setTracing(false);
camelContext.start();
}
Кто-нибудь знает, как я могу это исправить?