[英]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-spring3 , jersey 2和spring4 。
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.