我正在尝试使用netty组件,但我遇到了以下错误。我也尝试了jeety。但它不起作用。我使用camel 3.21.0,java版本是17。任何帮助都是有用的。
RestConfigurationDefinition restDefinition = restConfiguration()
.endpointProperty("maxThreads", "#maxThreads")
.endpointProperty("minThreads", "#minThreads")
.endpointProperty("requestBufferSize", "#requestBufferSize")
.endpointProperty("responseBufferSize", "#responseBufferSize")
.endpointProperty("requestHeaderSize", "#requestHeaderSize")
.endpointProperty("useXForwardedForHeader", "#useXForwardedForHeader")
.endpointProperty("matchOnUriPrefix", "#matchOnUriPrefix")
.endpointProperty("bridgeErrorHandler", "true")
.endpointProperty("sendServerVersion", "false")
.endpointProperty("socketConnectorProperties", "#socketConnectorProperties")
.endpointProperty("secureSocketProtocol", "TLSv1.3")
.endpointProperty("ssl","true")
.endpointProperty("sslKeyPassword", "WalletPasswd123")
.endpointProperty("sslPassword", "WalletPasswd123")
.endpointProperty("sslContextParameters", "#sslContextParameters")
.enableCORS(true)
.corsHeaderProperty("Access-Control-Allow-Origin", "*")
.bindingMode(endpointConfig.getRestBindingMode() != null ?
endpointConfig.getRestBindingMode() : RestBindingMode.off)
.apiComponent("netty")
.component("netty")
.scheme("https")
.host(endpointConfig.getHost())
.port(endpointConfig.getPort());
Caused by: java.lang.IllegalArgumentException: Component netty is not a RestConsumerFactory
at org.apache.camel.component.rest.RestEndpoint.createConsumer(RestEndpoint.java:482) ~[camel-rest-3.21.0.jar:3.21.0]
at org.apache.camel.impl.engine.DefaultRoute.gatherRootServices(DefaultRoute.java:636) ~[camel-base-engine-3.21.0.jar:3.21.0]
at org.apache.camel.impl.engine.DefaultRoute.gatherServices(DefaultRoute.java:620) ~[camel-base-engine-3.21.0.jar:3.21.0]
at org.apache.camel.impl.engine.DefaultRoute.initializeServices(DefaultRoute.java:205) ~[camel-base-engine-3.21.0.jar:3.21.0]
at org.apache.camel.impl.engine.RouteService.doSetup(RouteService.java:151) ~[camel-base-engine-3.21.0.jar:3.21.0]
at org.apache.camel.impl.engine.RouteService.setUp(RouteService.java:130) ~[camel-base-engine-3.21.0.jar:3.21.0]
我希望使用 netty 在其余请求中启用 ssl。
netty是一个socket通信组件,REST需要使用netty-http组件。可能不需要 apiComponent,因为它的用途不同。
我可以看到您已经配置了一些特定于 jetty 的属性。您需要指定特定于 netty-http 组件的参数。您可以查看 Rest DSL、Netty HTPP、Jetty 的文档以及 this 答案以获取更多详细信息。