THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
Wiki Markup |
---|
h2. UrlRewrite Component *Available as of Camel 2.11* The {{camel-urlrewrite}} component allows to plugin url rewrite functionality to [HTTP], [HTTP4], [Jetty], or [AHC] components. This component integrates the [UrlRewriteFilter|http://code.google.com/p/urlrewritefilter/] project with Apache Camel. This allows you to use the capabilities from the url rewrite project with your Camel routes. This component *requires* that your Camel routes starts from a servlet based endpoint such as [Jetty] or [Servlet]. h3. Options The {{camel-urlrewrite}} component offers the following options {div:class=confluenceTableSmall} || Name || Default Value || Description || | {{conf}} | {{null}} | To use a custom {{org.tuckey.web.filters.urlrewrite.Conf}} as the configuration for the url rewrite filter. | | {{configFile}} | {{null}} | Refers to a file name to load as the configuration file. The file should be XML file. | | {{modRewriteConfFile}} | {{null}} | Refers to a file name to load as the mod based configuration file. This file should be a plain text file. | | {{modRewriteConfText}} | {{null}} | Is used to quickly configure a mod based configuration without using a file. | | {{useQueryString}} | {{false}} | Whether to use query strings in the url rewrite rules. | | {{useContext}} | {{false}} | Whether to include context-path or not in the matching. Will be default remove the context-path. | | {{defaultMatchType}} | {{"regex"}} | Which match type to use. Can be either "wildcard" or "regex". | | {{decodeUsing}} | {{null}} | To use a specific encoding such as "utf-8" or "iso-8859-1". | {div} h3. Usage The following component producers supports using together with the {{camel-urlrewrite}} component: [Http], [Http4] [Jetty]. {div:class=confluenceTableSmall} || Component || Class || | {{camel-http}} | {{org.apache.camel.component.urlrewrite.http.HttpUrlRewrite}} | | {{camel-jetty}} | {{org.apache.camel.component.urlrewrite.http.HttpUrlRewrite}} | | {{camel-http4}} | {{org.apache.camel.component.urlrewrite.http4.HttpUrlRewrite}} | {div} You setup the url rewrite as a bean such of the type {{org.apache.camel.component.urlrewrite.http.HttpUrlRewrite}} (when using [Http] component) as shown below: TODO: java{snippet:id=e1|lang=java|url=camel/trunk/components/camel-urlrewrite/src/test/java/org/apache/camel/component/urlrewrite/jetty/JettyUrlRewriteTest.java} And in XML DSL you can do: TODO: xml{code:xml} <bean id="myRewrite" class="org.apache.camel.component.urlrewrite.HttpUrlRewrite"> <property name="configFile" value="example/urlrewrite2.xml"/> </bean> {code} In the Camel routes TODO: route, you bridge the endpoints, and refer to the url rewrite on the producer endpoint as shown below. Notice how we refer to our url rewrite filter using the {{urlRewrite}} option in the endpoint uri. {snippet:id=e2|lang=java|url=camel/trunk/components/camel-urlrewrite/src/test/java/org/apache/camel/component/urlrewrite/jetty/JettyUrlRewriteTest.java} h3. Writing custom url rewriters You can implement your custom url rewriters by implementing either of the following interfaces from the component of choice: Component(s): camel-http / camel-jetty - {{org.apache.camel.component.http.UrlRewrite}} - {{org.apache.camel.component.http.HttpServletUrlRewrite}} Component(s): camel-http4 - {{org.apache.camel.component.http4.UrlRewrite}} - {{org.apache.camel.component.http4.HttpServletUrlRewrite}} The former is a simple and generic interface, which is not dependent on the Servlet API. The later is servlet based which requires the Camel route to start from a servlet based component such as [Jetty] or [Servlet]. The servlet based is more feature rich and that's the API we use to integrate with the [UrlRewriteFilter|http://code.google.com/p/urlrewritefilter/] project in this {{camel-urlrewrite}} component. h4. A simple url rewrite filter In this example we implement a custom {{org.apache.camel.component.http.UrlRewrite}} that just replaces yahoo with google. Mind this example is based on a unit test, and only for demonstration purposes. As its java code you have full power to implement more complex logic. The url parameter contains the full url including scheme://hostname:port/path?query. The relativeUrl parameter is the url without the endpoint configured path. Notice this option may be null if the url doesn't start with the endpoint configured path. {snippet:id=e1|lang=java|url=camel/trunk/components/camel-http/src/test/java/org/apache/camel/component/http/GoogleUrlRewrite.java} {include:Endpoint See Also} - [Jetty] - [Http4] - [Http] - [AHC] |