我正在尝试使用Java DSL,Netbeans和Tomcat在Camel中设置REST服务的托管。它给了我以下堆栈跟踪:
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.apache.camel.RuntimeCamelException: org.apache.camel.FailedToCreateRouteException: Failed to create route route1: Route(route1)[[From[rest:get:/update:/hello?routeId=route1&c... because of No bean could be found in the registry for: restlet of type: org.apache.camel.spi.RestConsumerFactory
at org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException(ObjectHelper.java:1756)
at org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:138)
at org.apache.camel.spring.CamelContextFactoryBean.onApplicationEvent(CamelContextFactoryBean.java:361)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5017)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5531)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:677)
at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1912)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我的路线制作工具中有以下内容:
package com.api.camelthree.camelroutes;
import org.apache.camel.Expression;
import org.apache.camel.model.rest.RestBindingMode;
import org.apache.camel.spring.SpringRouteBuilder;
import com.api.camelthree.processors.IncomingOrderUpdate;
public class IncomingUrlRouteBuilder extends SpringRouteBuilder {
public void configure() {
restConfiguration().component("restlet").host("localhost").port(8080).bindingMode(RestBindingMode.auto);
rest("/update")
.get("/hello").to("direct:hey")
;
from("direct:hey")
.transform().constant("Hey World")
;
}
}
只是为了完整性,这是pom:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.api</groupId>
<artifactId>CamelThree</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>CamelThree</name>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<cxf-version>2.6.1</cxf-version>
<camel-version>2.19.0</camel-version>
<spring-version>4.1.6.RELEASE</spring-version>
<!--log4j-version></log4j-version-->
</properties>
<dependencies>
<!-- Camel -->
<dependency><groupId>org.apache.camel</groupId> <artifactId>camel-core</artifactId> <version>${camel-version}</version> </dependency>
<dependency><groupId>org.apache.camel</groupId> <artifactId>camel-spring</artifactId> <version>${camel-version}</version> </dependency>
<dependency><groupId>org.apache.camel</groupId> <artifactId>camel-restlet</artifactId> <version>${camel-version}</version> </dependency>
<dependency><groupId>org.apache.camel</groupId> <artifactId>camel-servlet</artifactId> <version>${camel-version}</version> </dependency>
<dependency><groupId>org.apache.camel</groupId> <artifactId>camel-servletlistener</artifactId> <version>${camel-version}</version> </dependency>
<!-- spring -->
<dependency><groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring-version}</version> </dependency>
<dependency><groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId><version>3.1.0</version> </dependency>
<!-- logging -->
<!--dependency><groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api </artifactId> <version>log4j-version</version> <scope>runtime</scope> </dependency-->
<!--dependency><groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core </artifactId> <version>log4j-version</version> <scope>runtime</scope> </dependency-->
<!--dependency><groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl </artifactId> <version>log4j-version</version> <scope>runtime</scope> </dependency-->
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>6.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
如果我使用样式from("rest:get:hello/{name}.transform(simple(hey ${header.name}")
,那可行,但我想了解/rest
的工作原理,并希望自动绑定JSON输入。
Java 1.8 骆驼2.19 Netbeans 8.0.2 Tomcat 7.0.63
有人知道如何删除错误吗?