使用Camel Servlet

时间:2011-09-23 08:01:22

标签: spring apache-camel

我一直试图获得一个servlet端点的基本示例,以便在camel中工作。我的例子基于:http://camel.apache.org/servlet-tomcat-example.html

当我尝试在Jetty中运行它时,虽然我得到以下异常:'java.lang.IllegalStateException:org.apache.camel.component.servlet.CamelHttpTransportServlet / httpRegistry'

中没有资源

这是我的Web.xml

    <!-- Camel servlet -->
<servlet>
    <servlet-name>CamelServlet</servlet-name>
    <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
    <init-param>
        <param-name>matchOnUriPrefix</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<!-- Camel servlet mapping -->
<servlet-mapping>
    <servlet-name>CamelServlet</servlet-name>
    <url-pattern>/camel/*</url-pattern>
</servlet-mapping>


<!-- the listener that kick-starts Spring -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- location of spring xml files -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>

这是我的applicationContext.xml:

<bean id="route" class="com.routes.smppRoute" />
<!-- the camel context -->
<camelContext xmlns="http://camel.apache.org/schema/spring" id="camel">
    <routeBuilder ref="route" />
</camelContext>

route simple接受输入并将其输出到控制台

public class smppRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
    from("servlet:///").to("stream:out");

}

}

我很确定我拥有所有依赖项,这里是pom.xml:

<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/maven-v4_0_0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.fundamo</groupId>
<artifactId>fundamo-platform-smpp-camel</artifactId>
<version>1.0-SNAPSHOT</version>

<name>Camel Router Application</name>
<description>Camel project that deploys the Camel routes as a WAR</description>
<url>http://www.myorganization.org</url>

<packaging>war</packaging>

<repositories>
    <repository>
        <id>org.apache.camel</id>
        <url>https://repository.apache.org/content/groups/snapshots-group</url>
    </repository>
</repositories>

<dependencies>

    <!-- Camel Dependencies -->
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.7-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-spring</artifactId>
        <version>2.7-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-stream</artifactId>
        <version>2.7-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-servlet</artifactId>
        <version>2.7-SNAPSHOT</version>
    </dependency>
    <!-- Spring Web -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>

    <!-- logging -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.11</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.16</version>
    </dependency>

</dependencies>

<build>
    <defaultGoal>install</defaultGoal>

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>

        <!-- plugin so you can run mvn jetty:run -->
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>7.2.2.v20101205</version>

            <configuration>
                <webAppConfig>
                    <contextPath>/</contextPath>
                </webAppConfig>

                <systemProperties>
                    <!-- enable easy JMX connection to JConsole -->
                    <systemProperty>
                        <name>com.sun.management.jmxremote</name>
                        <value />
                    </systemProperty>
                </systemProperties>
                <scanIntervalSeconds>10</scanIntervalSeconds>
            </configuration>
        </plugin>
    </plugins>
</build>

1 个答案:

答案 0 :(得分:1)

您是否可以尝试将版本更改为2.8.1而不是使用2.7-SNAPSHOT? 我刚刚对Camel trunk中的camel-example-servlet-tomcat做了一些测试,它没有抛出这样的错误。