【发布时间】:2015-01-10 23:53:41
【问题描述】:
我正在构建一个使用 AngularJS 作为前端的 Web 应用程序。我正在使用 Rest 服务来调用后端并在 Jboss Wildfly 中部署应用程序。该应用程序连接到我有一个表产品的 Mysql 数据库。 一个产品包含一个 id 和一个存储为 BLOB 的图像。 Product java实体如下:
@Entity
@Table(name = "PRODUCTS")
public class Product implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@Column(name = "IMAGE", nullable = false, insertable = true, updatable = true)
private Blob image;
@Column(name="PRICE",nullable=false, insertable=true,updatable=true)
private Long price;
GETTERS AND SETTERS......
}
然后是Rest Service的代码:
@Path("/products")
public class ProductsService extends CommonService{
private static final Logger log = Logger.getLogger(ProductsService.class);
@EJB
private ProductsServiceHandler handler;
@GET
public Response getAllProducts(@Context Request request, @Context HttpHeaders httpHeaders)
{
try
{
List<Product> products=handler.findAllProducts();
return Response.ok(products).header(ALLOW_ORIGIN_HEADER, "*").build();
}
catch(Exception e){return Response.status(Status.INTERNAL_SERVER_ERROR).build();}
}
产品从数据库中正确检索,图像存储为 Blob,但是当我尝试发送响应时,我收到以下错误:
原因:com.fasterxml.jackson.databind.JsonMappingException:找不到类 java 的序列化程序。 io.ByteArrayInputStream 并且没有发现创建 BeanSerializer 的属性(为避免异常,请禁用 SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过参考链:java.util.ArrayList[0]->com.fgonzalez.domainmodel.Product["image"]-> $Proxy70["binaryStream"])
我猜是因为它不知道如何序列化 Blob。我注意到如果我只将图像作为 InputStream 发送它不会抱怨(但现在我必须弄清楚如何在 Html 中显示它)。知道如何实现我的需要吗?
提前非常感谢你!
【问题讨论】:
标签: java angularjs rest jackson resteasy