2.104. Servlet


由 Servlet 提供 HTTP 请求。

2.104.1. 什么是内部

有关用法和配置详情,请参阅上述链接。

2.104.2. Maven 协调

在 code.quarkus.redhat.com 上使用此扩展创建新项目

或者将协调添加到现有项目中:

<dependency>
    <groupId>org.apache.camel.quarkus</groupId>
    <artifactId>camel-quarkus-servlet</artifactId>
</dependency>
Copy to Clipboard Toggle word wrap

2.104.3. 使用方法

2.104.3.1. Configuring CamelHttpTransportServlet

2.104.3.1.1. 最小配置

配置 CamelHttpTransportServlet 的最简单方法是配置属性。最小的设置要求您使用 quarkus.camel.servlet.url-patterns 为 Servlet 定义一个或多个 URL 模式。

例如,使用如下配置:

quarkus.camel.servlet.url-patterns = /*
Copy to Clipboard Toggle word wrap

和 Camel 路由。

from("servlet://greet")
    .setBody().constant("Hello World");
Copy to Clipboard Toggle word wrap

生成消息 Hello World

2.104.3.1.2. 高级配置

Servlet 名称

要为 Servlet 提供特定名称,您可以使用 quarkus.camel.servlet.servlet-name 配置选项。

quarkus.camel.servlet.servlet-name = My Custom Name
Copy to Clipboard Toggle word wrap

Servlet 类

您可以在 Camel 路由中使用自定义 Servlet 类(E.g 扩展 CamelHttpTransportServlet)。

quarkus.camel.servlet.servlet-class = org.acme.MyCustomServlet
Copy to Clipboard Toggle word wrap

多个命名的 Servlets

对于更高级的用例,您可以配置多个 'named' Servlets。

quarkus.camel.servlet.my-servlet-a.servlet-name = my-custom-a
quarkus.camel.servlet.my-servlet-a.url-patterns = /custom/a/*

quarkus.camel.servlet.my-servlet-b.servlet-name = my-custom-b
quarkus.camel.servlet.my-servlet-b.servlet-class = org.acme.CustomServletB
quarkus.camel.servlet.my-servlet-b.url-patterns = /custom/b/*
Copy to Clipboard Toggle word wrap
from("servlet://greet?servletName=my-custom-a")
    .setBody().constant("Hello World");

from("servlet://goodbye?servletName=my-custom-b")
    .setBody().constant("Goodbye World");
Copy to Clipboard Toggle word wrap

精细控制 Servlet 配置

如果您需要更多控制 Servlet 配置,例如来配置自定义 init 参数,您可以通过 jakarta.servlet.annotation.WebServlet 注解选项使用自定义 Servlet 类进行此操作。

import jakarta.servlet.annotation.WebServlet;
import org.apache.camel.component.servlet.CamelHttpTransportServlet;

@WebServlet(
    urlPatterns = {"/*"},
    initParams = {
        @WebInitParam(name = "myParam", value = "myValue")
    }
)
public class MyCustomServlet extends CamelHttpTransportServlet {
}
Copy to Clipboard Toggle word wrap

或者,您可以使用 web-app 描述符放入 src/main/resources/META-INF/web.xml 来配置 CamelHttpTransportServlet

<web-app>
  <servlet>
    <servlet-name>CamelServlet</servlet-name>
    <servlet-class>org.apache.camel.component.servlet.CamelHttpTransportServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>CamelServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>
</web-app>
Copy to Clipboard Toggle word wrap

2.104.4. 原生模式中的 transferException 选项

要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南

您还需要为您要序列化的异常类启用序列化功能。例如:

@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
Copy to Clipboard Toggle word wrap

2.104.5. 其他 Camel Quarkus 配置

Expand
配置属性类型default

quarkus.camel.servlet.url-patterns

以逗号分隔的路径模式列表,可在其中访问 CamelServlet。路径模式示例: configured , /services configured

字符串列表

 

quarkus.camel.servlet.servlet-class

用于提供与 url-patterns匹配的路径的 servlet 类的完全限定名称

string

org.apache.camel.component.servlet.CamelHttpTransportServlet

quarkus.camel.servlet.servlet-name

web.xml 文件中定义 servletName,或者在 jakarta.servlet.annotation.WebServlet Serialname () 注解中定义。

string

CamelServlet

quarkus.camel.servlet.load-on-startup

在 Servlet 中设置 loadOnStartup 优先级。loadOnStartup 是一个大于或等于零的值,表示容器初始化优先级 Servlet。如果 loadOnStartup 是一个负整数,则 Servlet 会被初始化。

int

-1

quarkus.camel.servlet.async

启用 Camel 从异步 Servlet 支持中受益。

布尔值

false

quarkus.camel.servlet.force-await

当设置为 true 时,与 quarkus.camel.servlet.async = true 结合使用,这将强制路由处理同步运行。

布尔值

false

quarkus.camel.servlet.executor-ref

配置可选自定义线程池用于处理 Camel Servlet 处理的 bean 名称。

string

 

quarkus.camel.servlet.multipart.location

在处理部分或文件大小超过指定的 file-size-threshold 配置值时,文件系统上要临时存储文件的目录的绝对路径。

string

${java.io.tmpdir}

quarkus.camel.servlet.multipart.max-file-size

上传文件允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。

long

-1

quarkus.camel.servlet.multipart.max-request-size

multipart/form-data 请求允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。

long

-1

quarkus.camel.servlet.multipart.file-size-threshold

文件以字节为单位,文件将临时存储在磁盘上。

int

0

[[quarkus-camel-servlet-​named-servlets-​url-patterns] quarkus.camel.servlet."named-servlets".url-patterns

以逗号分隔的路径模式列表,可在其中访问 CamelServlet。路径模式示例: configured , /services configured

字符串列表

 

[[quarkus-camel-servlet-​named-servlets-​servlet-class]] quarkus.camel.servlet."named-servlets".servlet-class

用于提供与 url-patterns匹配的路径的 servlet 类的完全限定名称

string

org.apache.camel.component.servlet.CamelHttpTransportServlet

[[quarkus-camel-servlet-​named-servlets-​servlet-name] quarkus.camel.servlet."named-servlets".servlet-name

web.xml 文件中定义 servletName,或者在 jakarta.servlet.annotation.WebServlet Serialname () 注解中定义。

string

CamelServlet

[[quarkus-camel-servlet-​named-servlets-​load-on-startup]] quarkus.camel.servlet."named-servlets".load-on-startup

在 Servlet 中设置 loadOnStartup 优先级。loadOnStartup 是一个大于或等于零的值,表示容器初始化优先级 Servlet。如果 loadOnStartup 是一个负整数,则 Servlet 会被初始化。

int

-1

quarkus.camel.servlet."named-servlets".async

启用 Camel 从异步 Servlet 支持中受益。

布尔值

false

[[quarkus-camel-servlet-​named-servlets-​force-await] quarkus.camel.servlet."named-servlets".force-await

当设置为 true 时,与 quarkus.camel.servlet.async = true 结合使用,这将强制路由处理同步运行。

布尔值

false

[[quarkus-camel-servlet-​named-servlets-​executor-ref]] quarkus.camel.servlet."named-servlets".executor-ref

配置可选自定义线程池用于处理 Camel Servlet 处理的 bean 名称。

string

 

[[quarkus-camel-servlet-​named-servlets-​multipart-location]] quarkus.camel.servlet."named-servlets".multipart.location

在处理部分或文件大小超过指定的 file-size-threshold 配置值时,文件系统上要临时存储文件的目录的绝对路径。

string

${java.io.tmpdir}

[[quarkus-camel-servlet-​named-servlets-​multipart-max-file-size] quarkus.camel.servlet."named-servlets".multipart.max-file-size

上传文件允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。

long

-1

[[quarkus-camel-servlet-​named-servlets-​multipart-max-request-size] quarkus.camel.servlet."named-servlets".multipart.max-request-size

multipart/form-data 请求允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。

long

-1

[[quarkus-camel-servlet-​named-servlets-​multipart-file-size-threshold]] quarkus.camel.servlet."named-servlets".multipart.file-size-threshold

文件以字节为单位,文件将临时存储在磁盘上。

int

0

在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部