简体   繁体   English

找不到媒体类型= Application / json,glassfish的MessageBodyWriter

[英]MessageBodyWriter not found for media type=Application/json, glassfish

I'm using JAX-RS to create simple restful json my first method work fine but when I add 2nd to get all vendorNOS"ID" method I have this exception when I view the in browser I also debug the Restful service and it work fine it gell all vendorNOS"ID" 我正在使用JAX-RS来创建简单的restful json我的第一个方法正常工作但是当我添加第二个来获取所有vendorNOS“ID”方法时,我在浏览器中查看此异常时我也调试了Restful服务并且它工作正常它gell所有vendorNOS“ID”

my output from vendorFacadeBean is {1,2,3,4,5,6,11,13}

HTTP Status 500 - Internal Server Error

type Exception report

messageInternal Server Error

descriptionThe server encountered an internal error that prevented it from fulfilling this request.

exception

    javax.servlet.ServletException: org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=Application/json, type=class java.util.Vector, genericType=java.util.List<java.lang.Integer>.
    root cause

    org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=Application/json, type=class java.util.Vector, genericType=java.util.List<java.lang.Integer>.
    note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 4.0 logs.

    GlassFish Server Open Source Edition 4.0

java source code java源代码

package resources;

import case2dtos.VendorEJBDTO;
import case2ejbs.VendorFacadeBean;
import java.util.List;
import javax.ejb.EJB;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;

/**
 * REST Web Service
 *
 * @author abdallaelnajjar
 */
@Path("vendors")
@RequestScoped
public class VendorsResource {
    @EJB
    private VendorFacadeBean vendorFacadeBean;

    @Context
    private UriInfo context;

    /**
     * Creates a new instance of VendorsResource
     */
    public VendorsResource() {
    }

    /**
     * Retrieves representation of an instance of resources.VendorsResource
     * @return an instance of java.lang.String
     */
    @GET
    @Path("getAVendor/{vendorno}")
    @Produces("Application/json")
    public VendorEJBDTO getAVendor(@PathParam("vendorno")int vendorno)
    {
        return vendorFacadeBean.getVendorInfo(vendorno);
    }

    /**
     * Retrieves representation of an instance of resources.VendorsResource
     * @return an instance of java.lang.String
     */
    @GET
    @Path("getVendornos")
    @Produces("Application/json")
    public List<Integer> getVendornos()
    {
        List<Integer> vendornosList = null;
        try 
        {
         vendornosList =  vendorFacadeBean.getVendorsnos();
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }

        return vendornosList;
    }
}

Use genson ( https://code.google.com/p/genson/downloads/list ) jar and add this to class path. 使用genson( https://code.google.com/p/genson/downloads/list )jar并将其添加到类路径。 This will convert any object to json format. 这会将任何对象转换为json格式。 You get this error because you do not have a json provider. 您收到此错误,因为您没有json提供程序。 And it is better to return object rather than toString(). 返回对象而不是toString()更好。

As well as you can use JAXB jar which comes with jersey bundle. 除了你可以使用泽西束附带的JAXB jar。 This will support both XML and JSON. 这将支持XML和JSON。 You can find the jar inside /ext folder of jersey distribution. 你可以找到泽西分布的jar里面/ ext文件夹。

I solved it by adding the following dependency. 我通过添加以下依赖项解决了它。

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-moxy</artifactId>
    <version>2.17</version>
</dependency>

I am using jersey-spring3 , jersey 2 and spring4 . 我使用的是jersey-spring3jersey 2spring4

The problem seems with List<Integer> that you are returning from second method. List<Integer>的问题似乎是你从第二种方法返回。

Are you seeing error like the following? 您是否看到如下错误?

javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class java.util.ArrayList, and Java type class java.util.ArrayList, and MIME media type application/xml was not found

Please refer to GenericEntity . 请参阅GenericEntity Moreover this seems duplicate . 此外,这似乎重复

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 未找到 Media type=application/json 的 MessageBodyWriter - MessageBodyWriter not found for media type=application/json 找不到媒体类型= application / json的MessageBodyWriter - Getting MessageBodyWriter not found for media type=application/json 找不到媒体类型application / json的MessageBodyWriter - MessageBodyWriter not found for media type application/json 未找到媒体类型 = 应用程序/json 的 MessageBodyWriter - MessageBodyWriter not found for media type=application/json 找不到针对媒体类型= application / json的错误MessageBodyWriter - Getting Error MessageBodyWriter not found for media type=application/json 找不到针对媒体类型= application / json的杰克逊网络服务错误MessageBodyWriter - jackson web service error MessageBodyWriter not found for media type=application/json 泽西与Grizzly:找不到媒体类型= application / json的MessageBodyWriter - Jersey with Grizzly: Getting MessageBodyWriter not found for media type=application/json 泽西(Jersey)REST错误,找不到媒体类型= application / json的MessageBodyWriter - Jersey REST error, MessageBodyWriter not found for media type=application/json 找不到具有@xmlrootelement的DTO的媒体类型= application / json的MessageBodyWriter - MessageBodyWriter not found for media type=application/json for DTO with @xmlrootelement 严重:找不到媒体类型 = 应用程序/json;字符集 = utf-8 的 MessageBodyWriter - SEVERE: MessageBodyWriter not found for media type=application/json;charset=utf-8
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM