/ / वेबफ्लक्स के साथ संदर्भ पथ - वसंत-वेबफ्लक्स

वेबफ्लक्स के साथ संदर्भ पथ - वसंत-वेबफ्लक्स

मैं वेबफ्लक्स एप्लिकेशन के संदर्भ पथ को सेट करने का एक तरीका खोजने का प्रयास कर रहा हूं। मुझे पता है कि मैं इसका उपयोग कर कॉन्फ़िगर कर सकता हूं

server.servlet.context-path

अगर मैं एक सर्वलेट तैनात करता हूं, लेकिन मैं इसे वेबफ्लक्स के साथ प्राप्त करना चाहता हूं, बिना किसी मार्ग के पथ को स्पष्ट रूप से जोड़ना या एमवीसी का उपयोग करना।

उत्तर:

उत्तर № 1 के लिए -1

आप WebFlux समर्थन संदर्भ बनाने के लिए वेब फ़िल्टर का उपयोग कर सकते हैं

@Bean
public WebFilter contextPathWebFilter() {
String contextPath = serverProperties.getServlet().getContextPath();
return (exchange, chain) -> {
ServerHttpRequest request = exchange.getRequest();
if (request.getURI().getPath().startsWith(contextPath)) {
return chain.filter(
exchange.mutate()
.request(request.mutate().contextPath(contextPath).build())
.build());
}
return chain.filter(exchange);
};
}

उत्तर № 2 के लिए 1

टॉमकैट प्रतिक्रियाशील के साथ ऐसा करने का मेरा तरीका यहां है:

@Configuration
public class TomcatReactiveWebServerConfig extends TomcatReactiveWebServerFactory {

@Value("${server.servlet.context-path}")
private String contextPath;

/**
* {@inheritDoc}
*/
@Override
protected void configureContext(final Context context) {

super.configureContext(context);

if (StringUtils.isNotBlank(this.contextPath)) {
context.setPath(this.contextPath);
}
}
}

जवाब के लिए 0 № 3

यदि आप स्वयं को सर्वर को कॉन्फ़िगर कर रहे हैं (यदि आप स्प्रिंग बूट का उपयोग नहीं कर रहे हैं), तो आप सेटअप कर सकते हैं एक ContextPathComposite हैंडलर जो कई हैंडलर खुद को लपेटता है।

यदि आप स्प्रिंग बूट का उपयोग कर रहे हैं, तो यह सुविधा वर्तमान में समर्थित नहीं है।


जवाब के लिए 0 № 4

लोडर के बाद से मुझे एक ही समस्या थीअलग-अलग बैक एंड ऐप्स पर रूट करने के संदर्भ पथ पर बैलेंसर बेस। स्प्रिंग बूट वेबफ्लक्स w / संदर्भ पथ के आसपास जाने का एक तरीका @XXXX मैपिंग एनोटेशन में चर का उपयोग कर रहा है। उदाहरण के लिए @RequestMapping (value = "$ {server.servlet.context-path} / subpath")


जवाब के लिए 0 № 5

Undertow के लिए मैं एक अनुकूलित UndertowReactiveWebServer फैक्टरी बनाकर एक संदर्भ पथ जोड़ने में कामयाब रहे:

 @Bean
public UndertowReactiveWebServerFactory undertowReactiveWebServerFactory(
@Value("${server.servlet.context-path}") String contextPath) {
return new UndertowReactiveWebServerFactory() {
@Override
public WebServer getWebServer(HttpHandler httpHandler) {
Map<String, HttpHandler> handlerMap = new HashMap<>();
handlerMap.put(contextPath, httpHandler);
return super.getWebServer(new ContextPathCompositeHandler(handlerMap));
}
};
}