我有一个 Spring Boot 项目 1.3.3-Release,已将其部署到 Web Logic 12c 应用服务器上。该代码在嵌入式 tomcat 上运行良好,但在部署到 Web Logic 上时则运行不佳。
我有一个 Spring Data-Rest 存储库
@RepositoryRestResource(collectionResourceRel = "car", path = "car")
public interface CarRepo extends PagingAndSortingRepository<Meter, Long>
{
List<Car> findall();
}
我的车POJO
@Table(name="car")
@Entity
public class Car
{
@Id
@Column(name="ID")
private Long id;
@Column(name="manufacturer")
private String manufacturer;
.......
}
一切都会启动并加载网页,当我进行其余调用时,我可以看到 SQL 输出的 SQL 查询执行良好,但随后我在服务器日志中收到以下错误:
java.lang.AbstractMethodError: com.fasterxml.jackson.databind.JsonSerializer.isEmpty(Ljava/lang/Object;) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:528)
我假设 data-rest 正在尝试自动将 JSON 响应从端点映射到 Car 对象,但由于某种未知原因而失败。
我从下面的链接中看到 Spring-Hateoas 存在问题,我知道 spring-data-rest 使用它,但似乎我使用的是最新版本的 spring-data-rest 这不应该是一个问题。
任何帮助将不胜感激
最佳答案
这看起来像是 JsonSerializer 类的版本不匹配问题。我认为您的 weblogic 类加载器正在加载旧版本的 com.fasterxml.jackson.core:jackson-databind,其中 JsonSerializer 类没有 isEmpty 方法。
来自文档:
/**
* Method called to check whether given serializable value is
* considered "empty" value (for purposes of suppressing serialization
* of empty values).
*<p>
* Default implementation will consider only null values to be empty.
*
* @since 2.0
*/
public boolean isEmpty(T value) {
return (value == null);
}
关于java - Spring Boot 数据休息 Jakson JSONSerializer 空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625143/