2015-10-22 39 views
2

我在Spring-boot应用程序中使用Camel 2.16.0与camel-netty4-http,camel-swagger-java和camel-spring-boot。我SpringBootRouter被配置以下列方式:如何使用Swagger具有多个Camel Rest DSL定义

public void configure() { 

    restConfiguration() 
    .component("netty4-http") 
    .bindingMode(RestBindingMode.json) 
    .dataFormatProperty("prettyPrint", "true") 
    .host("0.0.0.0") 
    .contextPath("/") 
    .port(port) 
    .apiContextPath("/api-doc") 
     .apiProperty("api.title", "User API") 
     .apiProperty("api.version", "1.2.3") 
     .apiProperty("cors", "true"); 

    rest("/hello").description("Say hello.") 
    .produces("application/json") 
    .get().description("Get hello.").route().transform(constant("hello")); 

    rest("/hi").description("Say hi.") 
    .produces("application/json") 
    .get().description("Get hi.").route().transform(constant("hi")); 
} 

我怎么能有扬鞭多休息的定义?上面的配置给了我下面的例外。但是,如果我删除其他休息定义其余(“/嗨”)然后Swagger工作得很好。

例外:

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.springframework.boot.maven.RunMojo$LaunchRunner.run(RunMojo.java:423) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.camel.spring.boot.CamelSpringBootInitializationException: org.apache.camel.FailedToStartRouteException: Failed to start route route4 because of Multiple consumers for the same endpoint is not allowed: Endpoint[http://0.0.0.0:10000/api-doc?httpMethodRestrict=GET] 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:81) 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:37) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:151) 
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:128) 
    at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:331) 
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:775) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:139) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:483) 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:117) 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:689) 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) 
    at org.apache.camel.spring.boot.FatJarRouter.main(FatJarRouter.java:26) 
    ... 6 more 
Caused by: org.apache.camel.FailedToStartRouteException: Failed to start route route4 because of Multiple consumers for the same endpoint is not allowed: Endpoint[http://0.0.0.0:10000/api-doc?httpMethodRestrict=GET] 
    at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRouteConsumers(DefaultCamelContext.java:3473) 
    at org.apache.camel.impl.DefaultCamelContext.doStartRouteConsumers(DefaultCamelContext.java:3449) 
    at org.apache.camel.impl.DefaultCamelContext.safelyStartRouteServices(DefaultCamelContext.java:3379) 
    at org.apache.camel.impl.DefaultCamelContext.doStartOrResumeRoutes(DefaultCamelContext.java:3147) 
    at org.apache.camel.impl.DefaultCamelContext.doStartCamel(DefaultCamelContext.java:3003) 
    at org.apache.camel.impl.DefaultCamelContext.access$000(DefaultCamelContext.java:172) 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2799) 
    at org.apache.camel.impl.DefaultCamelContext$2.call(DefaultCamelContext.java:2795) 
    at org.apache.camel.impl.DefaultCamelContext.doWithDefinedClassLoader(DefaultCamelContext.java:2818) 
    at org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:2795) 
    at org.apache.camel.support.ServiceSupport.start(ServiceSupport.java:61) 
    at org.apache.camel.impl.DefaultCamelContext.start(DefaultCamelContext.java:2764) 
    at org.apache.camel.spring.boot.RoutesCollector.onApplicationEvent(RoutesCollector.java:79) 
    ... 17 more 
+0

这似乎是一个骆驼弹簧启动问题也许。你能否将你的样本项目作为ZIP附加到CAMEL jira票据上,以便我们可以从中复制出来?或者把项目放在github上? –

+0

我发布到Jira门票,这里也是Github示例项目的链接:https://github.com/jnupponen/camel-spring-boot-swagger-problem – jnupponen

回答

相关问题