An error 400 and "This method is only valid for servlets" message occurs when you try to call an active decision campaign with curl commands


After you migrate to SAS® 9.4M9 (TS1M9), REST API calls to the Decision Services endpoint fail with HTTP 400 errors:

curl -v -X POST "http://servername:7980/RTDM/rest/runtime/decisions/Event%20Definition(1)" \
-H "Content-Type: application/vnd.sas.decision.request+json" \
--data-binary @payload.json \
-o respuesta1.json

This error comes from DecisionInputJSONHttpMessageConverter.readInternal(), where an instance of ServletServerHttpRequest fails.

Cause

This issue is caused by the following migration changes:

Specifically, the migration fails because spring 6 introduced a new decorator pattern where HttpInputMessage objects are wrapped in EmptyBodyCheckingHttpInputMessage before being passed to message converters.

This wrapper does as follows: