2.104. Servlet
由 Servlet 提供 HTTP 请求。
2.104.1. 什么是内部 复制链接链接已复制到粘贴板!
-
servlet 组件, URI 语法:
servlet:contextPath
有关用法和配置详情,请参阅上述链接。
2.104.2. Maven 协调 复制链接链接已复制到粘贴板!
在 code.quarkus.redhat.com 上使用此扩展创建新项目
或者将协调添加到现有项目中:
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-servlet</artifactId>
</dependency>
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-servlet</artifactId>
</dependency>
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 = /*
quarkus.camel.servlet.url-patterns = /*
和 Camel 路由。
from("servlet://greet")
.setBody().constant("Hello World");
from("servlet://greet")
.setBody().constant("Hello World");
生成消息 Hello World。
2.104.3.1.2. 高级配置 复制链接链接已复制到粘贴板!
Servlet 名称
要为 Servlet 提供特定名称,您可以使用 quarkus.camel.servlet.servlet-name 配置选项。
quarkus.camel.servlet.servlet-name = My Custom Name
quarkus.camel.servlet.servlet-name = My Custom Name
Servlet 类
您可以在 Camel 路由中使用自定义 Servlet 类(E.g 扩展 CamelHttpTransportServlet)。
quarkus.camel.servlet.servlet-class = org.acme.MyCustomServlet
quarkus.camel.servlet.servlet-class = org.acme.MyCustomServlet
多个命名的 Servlets
对于更高级的用例,您可以配置多个 'named' Servlets。
from("servlet://greet?servletName=my-custom-a")
.setBody().constant("Hello World");
from("servlet://goodbye?servletName=my-custom-b")
.setBody().constant("Goodbye World");
from("servlet://greet?servletName=my-custom-a")
.setBody().constant("Hello World");
from("servlet://goodbye?servletName=my-custom-b")
.setBody().constant("Goodbye World");
精细控制 Servlet 配置
如果您需要更多控制 Servlet 配置,例如来配置自定义 init 参数,您可以通过 jakarta.servlet.annotation.WebServlet 注解选项使用自定义 Servlet 类进行此操作。
或者,您可以使用 web-app 描述符放入 src/main/resources/META-INF/web.xml 来配置 CamelHttpTransportServlet。
2.104.4. 原生模式中的 transferException 选项 复制链接链接已复制到粘贴板!
要在原生模式中使用 transferException 选项,您必须启用对对象序列化的支持。如需更多信息,请参阅 原生模式用户指南。
您还需要为您要序列化的异常类启用序列化功能。例如:
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
@RegisterForReflection(targets = { IllegalStateException.class, MyCustomException.class }, serialization = true)
2.104.5. 其他 Camel Quarkus 配置 复制链接链接已复制到粘贴板!
| 配置属性 | 类型 | default |
|---|---|---|
|
以逗号分隔的路径模式列表,可在其中访问 CamelServlet。路径模式示例: configured |
| |
|
用于提供与 |
|
|
|
在 |
|
|
|
在 Servlet 中设置 loadOnStartup 优先级。loadOnStartup 是一个大于或等于零的值,表示容器初始化优先级 Servlet。如果 loadOnStartup 是一个负整数,则 Servlet 会被初始化。 |
|
|
|
启用 Camel 从异步 Servlet 支持中受益。 |
|
|
|
当设置为 |
|
|
|
配置可选自定义线程池用于处理 Camel Servlet 处理的 bean 名称。 |
| |
|
在处理部分或文件大小超过指定的 file-size-threshold 配置值时,文件系统上要临时存储文件的目录的绝对路径。 |
|
|
|
上传文件允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。 |
|
|
|
multipart/form-data 请求允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。 |
|
|
|
文件以字节为单位,文件将临时存储在磁盘上。 |
|
|
|
[[quarkus-camel-servlet-named-servlets-url-patterns]
以逗号分隔的路径模式列表,可在其中访问 CamelServlet。路径模式示例: configured |
| |
|
[[quarkus-camel-servlet-named-servlets-servlet-class]]
用于提供与 |
|
|
|
[[quarkus-camel-servlet-named-servlets-servlet-name]
在 |
|
|
|
[[quarkus-camel-servlet-named-servlets-load-on-startup]] 在 Servlet 中设置 loadOnStartup 优先级。loadOnStartup 是一个大于或等于零的值,表示容器初始化优先级 Servlet。如果 loadOnStartup 是一个负整数,则 Servlet 会被初始化。 |
|
|
|
启用 Camel 从异步 Servlet 支持中受益。 |
|
|
|
[[quarkus-camel-servlet-named-servlets-force-await]
当设置为 |
|
|
|
[[quarkus-camel-servlet-named-servlets-executor-ref]] 配置可选自定义线程池用于处理 Camel Servlet 处理的 bean 名称。 |
| |
|
[[quarkus-camel-servlet-named-servlets-multipart-location]] 在处理部分或文件大小超过指定的 file-size-threshold 配置值时,文件系统上要临时存储文件的目录的绝对路径。 |
|
|
|
[[quarkus-camel-servlet-named-servlets-multipart-max-file-size] 上传文件允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。 |
|
|
|
[[quarkus-camel-servlet-named-servlets-multipart-max-request-size] multipart/form-data 请求允许的最大大小(以字节为单位)。默认大小(-1)允许无限大小。 |
|
|
|
[[quarkus-camel-servlet-named-servlets-multipart-file-size-threshold]] 文件以字节为单位,文件将临时存储在磁盘上。 |
|
|
在构建时修复的配置属性。所有其他配置属性可在运行时覆盖。