Не удалось найти JAXBContextFinder для типа носителя: application / json - PullRequest
1 голос
/ 22 февраля 2011

У меня проблема с разработкой Resteay + EJB + JSON. Использование Jboss-5.1.0.GA. Я получил пример от resteasy-jaxrs и адаптирован для использования в моем случае. Добавлены jar-файлы (это спрашивает меня jboss. В другом случае ловите исключение - класс не найден) в \ jboss-5.1.0.GA \ server \ default \ lib \

resteasy-jaxb-provider-1.2.1.GA jaxrs-api-2.0.1.GA resteasy-jaxrs-2.0.1.GA

Получить исключение

    09:43:15,502 ERROR [SynchronousDispatcher:error] Failed executing GET /basic
    org.jboss.resteasy.plugins.providers.jaxb.JAXBMarshalException: Could not find JAXBContextFinder for media type: application/json    
   at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.findJAXBContext(AbstractJAXBProvider.java:50)
    at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.getMarshaller(AbstractJAXBProvider.java:127)
    at org.jboss.resteasy.plugins.providers.jaxb.AbstractJAXBProvider.writeTo(AbstractJAXBProvider.java:103)

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>2.0.0.GA</version>
</dependency>
<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>1.1.GA</version>
</dependency>

@Stateless
public class SimpleResourceBean implements SimpleResource {

    @Override
    public Book getBasic() {
        System.out.println("getBasic()");
        return new Book("AAA", "CCC", "SSSS");
    }  
}

@Path("/")
public interface SimpleResource {

    @GET
    @Path("basic")
   // @Produces("text/plain")
    @Produces("application/json")
    Book getBasic();

}

@BadgerFish
@XmlRootElement(name = "book")
public class Book
{   
   private String author;
   private String ISBN;
   private String title;

   public Book()
   {
   }

   public Book(String author, String ISBN, String title)
   {
      this.author = author;
      this.ISBN = ISBN;
      this.title = title;
   }

   @XmlElement
   public String getAuthor()
   {
      return author;
   }

   public void setAuthor(String author)
   {
      this.author = author;
   }

   @XmlElement
   public String getISBN()
   {
      return ISBN;
   }

   public void setISBN(String ISBN)
   {
      this.ISBN = ISBN;
   }

   @XmlAttribute
   public String getTitle()
   {
      return title;
   }

   public void setTitle(String title)
   {
      this.title = title;
   }
}

Пожалуйста, любые предложения. С наилучшими пожеланиями Артем

Ответы [ 5 ]

5 голосов
/ 21 марта 2011

RestEasy больше не включает поддержку JSON в JAR.http://docs.jboss.org/resteasy/docs/2.0.0.GA/userguide/html_single/index.html#JAXB_+_JSON_provider

Вам нужно получить библиотеку JSON JAX-B из http://jettison.codehaus.org/

1 голос
/ 20 апреля 2012

http://jettison.codehaus.org/ не работает для меня, потому что .jar на этом сайте не работает с resteasy.

Вы должны скачать resteasy-jettison-provider.jar, потому что этот jar реализует jettison для resteasy (работа для меня): http://www.java2s.com/Code/Jar/r/Downloadresteasyjettisonproviderjar.htm

1 голос
/ 16 августа 2011

Пожалуйста, попробуйте включить @DoNotUseJAXBProvider для метода, для которого вы получаете ошибку. Это сработало для меня. Но это было для текста / HTML Это упоминается в http://docs.jboss.com/seam/3/rest/snapshot/reference/en-US/html_single/

0 голосов
/ 31 августа 2013

добавление следующей банки разрешило мою проблему:

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jettison-provider</artifactId>
        <version>2.2.0.GA</version>
</dependency>   
0 голосов
/ 25 января 2013

Я использовал провайдера Джексона

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jackson-provider</artifactId>
        <version>2.0.1.GA</version>
    </dependency>

и решенная проблема.

обратите внимание, что поставщик resteasy-jackson зависит от поставщика resteasy-jettison

...