private Map<String, Object> getArguments(ServiceRequestContext ctx, AggregatedHttpRequest req) {
        final Map<String, Object> arguments = new LinkedHashMap<>(additionalArguments.size() +
                                                                  ctx.pathParams().size() + 16);
        arguments.putAll(additionalArguments);
        arguments.putAll(ctx.pathParams());
        if (!req.content().isEmpty()) {
            final Map<String, Object> bodyParams;
            try {
                bodyParams = OBJECT_MAPPER.readValue(req.content().array(), JSON_MAP);
            } catch (IOException e) {
                throw new IllegalArgumentException("Invalid JSON in request.");
            }
            arguments.putAll(bodyParams);
        }

        final QueryParams params = QueryParams.fromQueryString(ctx.query());
        for (String name : params.names()) {
            final List<String> values = params.getAll(name);
            arguments.put(name, values.size() != 1 ? values : values.get(0));
        }

        return ImmutableMap.copyOf(arguments);
    }
{@link HttpService} to handle a {@link WebOperation}. Mostly inspired by reactive implementation in
{@link AbstractWebFluxEndpointHandlerMapping}.
spring/boot3-actuator-autoconfigure/src/main/java/com/linecorp/armeria/spring/actuate/WebOperationService.java