搜索

282.6. Samples

download PDF

282.6.1. 带有身份验证的 restlet 端点

以下路由启动一个 restlet 消费者端点,该端点侦听 http://localhost:8080 上的 POST 请求。处理器会创建一个响应,以回显请求正文和 id 标头的值。

URI 查询中的 restletRealm 设置用于在注册表中查找 Realm Map。如果指定了这个选项,restlet 使用者将使用信息来验证用户登录。只有 经过身份验证的 请求才能访问资源。在本例中,我们创建一个作为 registry 的 Spring 应用程序上下文。Realm Map 的 bean ID 应与 restletRealmRef 匹配。

以下示例启动一个 直接 端点,它向 http://localhost:8080 中的服务器发送请求(即 restlet 消费者端点)。

这是我们需要的。我们已准备好发送请求并尝试出 restlet 组件:

示例客户端使用以下标头向 direct:start-auth 端点发送请求:

  • CamelRestletLogin (由 Camel 内部使用)
  • CamelRestletPassword (由 Camel 内部使用)
  • ID (应用程序标头)
注意

org.apache.camel.restlet.auth.loginorg.apache.camel.restlet.auth.password 不会被传播为 Restlet 标头。

示例客户端获得类似如下的响应:

received [<order foo='1'/>] as an order id = 89531

282.6.2. 单个 restlet 端点为多个方法和 URI 模板提供服务(已弃用)

这个功能 已弃用,请不要使用!

可以使用 restletMethods 选项创建单个路由来服务多个 HTTP 方法。这个片段还演示了如何从标头检索请求方法:

除了为多种方法提供服务外,下一个代码片段还演示了如何创建一个端点,该端点使用 restletUriPatterns 选项支持多个 URI 模板。请求 URI 在 IN 消息的标头中可用。如果在端点 URI 中定义了 URI 模式(本例中不是这种情况),则端点中定义的 URI 模式和 restletUriPatterns 选项都将满足。

restletUriPatterns=#uriTemplates 选项引用 Spring XML 配置中定义的 List<String > bean。

<util:list id="uriTemplates">
    <value>/users/{username}</value>
    <value>/atom/collection/{id}/component/{cid}</value>
</util:list>

282.6.3. 使用 Restlet API 填充响应

从 Camel 2.8 开始提供

您可能希望使用 org.restlet.Response API 来填充响应。这可让您完全访问 Restlet API 和对响应的精细控制。请参阅下面的路由片断,从内联 Camel 处理器生成响应:

使用 Restlet Response API 生成响应

282.6.4. 在组件上配置最大线程

要配置最大线程选项,您必须在组件上执行此操作,例如:

<bean id="restlet" class="org.apache.camel.component.restlet.RestletComponent">
  <property name="maxThreads" value="100"/>
</bean>

282.6.5. 在 webapp 中使用 Restlet servlet

从 Camel 2.8开始,
可以通过三种方式在 servlet 容器中配置 Restlet 应用程序,并使用子类的 SpringServerServlet 在 Camel 中通过注入 Restlet 组件来启用配置。http://www.restlet.org/documentation/2.0/jee/ext/org/restlet/ext/servlet/ServerServlet.html

在 servlet 容器中使用 Restlet servlet 可让路由配置 URI 中的相对路径(删除硬编码绝对 URI 的限制)和托管 servlet 容器来处理传入的请求(而不是在新端口上生成单独的服务器进程)。

先决条件

  • 您需要将对 Spring 扩展的依赖项添加到 Maven pom.xml 文件中的 restlet 中:

    <dependency>
      <groupId>org.restlet.jee</groupId>
      <artifactId>org.restlet.ext.spring</artifactId>
      <version>${restlet-version}</version>
    </dependency>

流程

  1. 要配置 Restlet 应用程序,请将以下内容添加到 camel-context.xml 中;

    <camelContext>
      <route id="RS_RestletDemo">
        <from uri="restlet:/demo/{id}" />
        <transform>
          <simple>Request type : ${header.CamelHttpMethod} and ID : ${header.id}</simple>
        </transform>
      </route>
    </camelContext>
    
    <bean id="RestletComponent" class="org.restlet.Component" />
    
    <bean id="RestletComponentService" class="org.apache.camel.component.restlet.RestletComponent">
      <constructor-arg index="0">
        <ref bean="RestletComponent" />
      </constructor-arg>
    </bean>
  2. 将以下内容添加到 web.xml 中;

    <!-- Restlet Servlet -->
    <servlet>
      <servlet-name>RestletServlet</servlet-name>
      <servlet-class>org.restlet.ext.spring.SpringServerServlet</servlet-class>
      <init-param>
        <param-name>org.restlet.component</param-name>
        <param-value>RestletComponent</param-value>
      </init-param>
    </servlet>
    
    <servlet-mapping>
      <servlet-name>RestletServlet</servlet-name>
      <url-pattern>/rs/*</url-pattern>
    </servlet-mapping>

结果

您可以在 http://localhost:8080/mywebapp/rs/demo/1234 中访问部署的路由,其中 localhost:8080 是 servlet 容器的服务器和端口,mywebapp 是部署的 web 应用程序的名称。

您的浏览器将显示以下内容:

"Request type : GET and ID : 1234"
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.