Ошибка при попытке опубликовать POJO во внешнем API с помощью клиента джерси - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть класс для создания события POJO и использования цепного вызова setObjectId для установки значения в POJO.

Проблема в том, что когда я пытаюсь использовать клиент jersey для отправки POJO во внешний API, у меня появляется ошибка "Messagebodywriter not found for media type = application / json". Я знаю, может быть, мне нужно использовать некоторые библиотеки, такие как Джексон или Gson, чтобы преобразовать его в JSON. Но я все еще стараюсь не использовать эти библиотеки для реализации этой функции. Возможно ли, чтобы Джерси автоматически конвертировал POJO в JSON?

И я также обнаружил, что когда я просто помещаю пустой конструктор и задаю m_timeStamp, а m_objectName используют тот же метод, что и setObjectId, используемый для установки значений. Затем я публикую этот POJO-клиент на Джерси, и он работает. Нет необходимости делать какие-либо операции преобразования. Может ли кто-нибудь помочь мне понять это?

  public class Event {

    private final String m_timeStamp;
    private final String m_objectName;

    public Event(String objectName) {

    if (StringUtils.nullOrEmpty(objectName)) {
     throw new IllegalArgumentException("The objectName field is not supplied");
    }

       m_timeStamp = RecDateUtils.utcDateToString(new Date());
       m_objectName = objectName;
 }

    @XmlElement(name = "timeStamp")
     public String getTimeStamp() {
       return m_timeStamp;
 }

    @XmlElement(name = "objectName")
    public String getObjectName() {
       return m_objectName;
 }

    @XmlElement(name = "objectId")
      public Integer getObjectId() {
        return m_objectId;
 }

   public Event setObjectId(Integer objectId) {
  m_objectId = objectId;
  return this;
 }

  @Override
   public String toString() {

    StringBuilder sb = new StringBuilder();
     sb.append("Event");
     sb.append("<timeStamp=").append(m_timeStamp);
     sb.append(", userName=").append(m_userName);;
     if (null != m_objectId)
     sb.append(", objectId=").append(m_objectId);

     return sb.append(">").toString();
 }
...