有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Camel:找不到restlet bean

我正在尝试使用JavaDSL、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

有人知道如何消除错误吗


共 (0) 个答案