Hi The "servlet" component requires you to run inside a Servlet container, such as Apache Tomcat, Jetty, and ESB containers such as ServiceMix etc.
When you run it standalone as unit test, then there is no servlet container, and you cannot use that. You can swap the servlet with jetty instead. Then you use Jetty as the http server for testing. Or you can look at some of the 3rd party libraries that can simulate a servlet environment. In fact I think we do that in camel-servlet source code for testing itself. https://svn.apache.org/repos/asf/camel/trunk/components/camel-servlet/ On Wed, Jan 23, 2013 at 10:35 PM, Zemin Hu <zemin...@hotmail.com> wrote: > I am trying to use CamelSpringTestSupport to build my unit tests. Most of my > routes are in Spring XML format. Here is my first test case: > public class SimpeRouteTest extends CamelSpringTestSupport { > protected AbstractXmlApplicationContext createApplicationContext() { > return new > FileSystemXmlApplicationContext("src/main/webapp/WEB-INF/applicationContext.xml"); > } > > @Test > public void testSimpleRoute() throws Exception { > String response = > template.requestBodyAndHeader("http://localhost:8080/services/test/simple", > "body: Hello World", "MY_HEADER", "my name", String.class); > System.err.println(response); > } > } > > The Spring XML route: > <routeContext id="test-route-simple" > xmlns="http://camel.apache.org/schema/spring"> > <route> > <from uri="servlet:///test/simple" /> > <setBody> > <constant>hello world</constant> > </setBody> > </route> > </routeContext> > > I can see the log that route is started during(before) test run: > [ main] SpringCamelContext INFO Route: > route90 started and consuming from: Endpoint[servlet:///test/simple] > > if I use "servlet:///test/simple", I got: > You cannot create producer with servlet endpoint, please consider to use > http or http4 endpoint. > > if I use "http://localhost:8080/services/test/simple", or > "http://localhost:80/test/simple" or other versions, I got: > I/O exception (java.net.ConnectException) caught when processing request: > Connection refused: connect > I read Testing with Camel in CamelInAction book, it used "file://" which is > working, but there are no samples for "servlet:///" which is most commonly > used. > > What's is correct way for the endpoint? How to test "servlet:///" or "http:" > component without having to start routes in a web server? > > I am using camel-core 2.9.1, camel-test 2.9.1. > Thanks. > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/HTTP-Endpoint-construction-in-CamelSpringTest-tp5726090.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- Red Hat, Inc. FuseSource is now part of Red Hat Email: cib...@redhat.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen