Учитывая этот класс, аннотированный Джексоном:
public class ResponseMsg implements Serializable{
public ResponseMsg(String ret, String msg){
this.returnCode = ret;
this.errorMsg = msg;
}
@JsonProperty("ret")
private int returnCode;
@JsonProperty("msg")
private String errorMessage;
// .... getters and setters
}
У меня этот класс отлично работает в Wildfly 26, он возвращает ответ JSON с аннотированными атрибутами ResponseMsg:
@Path("/test")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response processMessage() {
@POST
@Path("/proc")
public Response process() {
ResponseMsg er = new ResponseMsg("abc","some message");
return Response.ok(er).build();
}
}
Поскольку он аннотирован JsonProperty, я получаю в браузере, как и ожидалось:
{ "ret": "abc", "msg": "some message" }
Теперь я перехожу на Tomee с Jakarta EE 9.1, и тот же код возвращает ResponseMsg, но без аннотированных свойств, JSON выглядит так:
{ "returnCode": "abc", "errorMessage": "some message" }
Чего-то не хватает в конфигурации Tomee, что это?




Согласно Джакартской документации,
https://jakarta.ee/specifications/jsonb/2.0/jakarta-jsonb-spec-2.0.html#customizing-property-names
Существует два стандартных способа настройки сериализации поля. (или свойство JavaBean) в документ JSON. То же самое относится к десериализация. Первый способ — аннотировать поле (или JavaBean свойство) с аннотацией jakarta.json.bind.annotation.JsonbProperty. Второй вариант - установить jakarta.json.bind.config.PropertyNamingStrategy.
Вам нужно использовать аннотацию @JsonBProperty вместо JsonProperty, которую вы используете.
import jakarta.json.bind.annotation.JsonbProperty;
Мое приложение большое и сложное, и в нем широко используется Джексон, то, что я задал в вопросе, является просто примером, нет возможности использовать Джексона с Jakarta EE?
Я думаю, вам нужно будет изменить их, если вы хотите использовать JakartaEE. Вы также можете заглянуть на github.com/FasterXML/jackson-jakarta-rs-providers и посмотреть, поможет ли это в любом случае?
Я не нашел способа сохранить код без изменений, спасибо за направление
FWIW WildFly 27 реализует Jakarta EE 10, и вы можете включить поддержку Jackson для REST.