转换为泛型方法后,getall函数无效

时间:2018-01-17 11:04:25

标签: java mysql rest generics crud

我想创建一个学习Java ee的项目。我计划建立一个票务管理系统。所以我创建了一个mysql数据库,实体类,访问类,ejb类以及最后的WService类。对于单独的Seat和Customer表,我的CRUD操作正常。我尝试过Soap UI。

之后我创建了一个通用访问类。现在我的get选项无效,我正在

  

HTTP / 1.1 500内部服务器错误

从glassfish服务器日志中得到以下回复。

  

[2018-01-17T12:02:48.966 + 0100] [Payara 4.1] [SEVERE] [] [org.glassfish.jersey.message.internal.WriterInterceptorExecutor] [tid:_ThreadID = 31 _ThreadName = http-thread- pool :: http-listener-1(3)] [timeMillis:1516186968966] [levelValue:1000] [[     找不到媒体类型= application / json的MessageBodyWriter; charset = utf-8,type = class java.util.ArrayList,genericType = java.util.List。]]

我得到的其他3种方法" HTTP / 1.1 200 OK"答复。

以下是访问类的示例代码,getall方法

public <A extends EntityCode> List<A> getAll(Class<A> type) {

    final String method = Thread.currentThread().getStackTrace()[0].getMethodName(); // to take the method name
    LOGGER.entering(CLASS, method);

    List<A> result = null;
    try {           
        TypedQuery<A> holderQuery= em.createNamedQuery(type.getSimpleName() + ".findAll", type);
        result = holderQuery.getResultList();
        return result;

    } catch (Exception ex) {
        LOGGER.log(Level.SEVERE, String.format("Something Wrong..."), ex);
        return result;
    } finally {
        LOGGER.exiting(CLASS, method, result);
    }   
}

这里是来自ejb class的getallseat的代码

public List<Seat> getAllSeat() {
    List<Seat> allSeatCaller = new ArrayList<>(accessObject.getAll(Seat.class));
    return allSeatCaller;
}

以下是我的webservice类

中的代码
@GET
@Path("getAllSeats")
@Produces(MediaType.APPLICATION_JSON + ";charset=utf-8")
public Response getAllSeats() {
    List<Seat> variable = seatPrice.getAllSeat();
    GenericEntity<List<Seat>> genericList = new GenericEntity<List<Seat>>(variable) {};
    ResponseBuilder builder = Response.status(Response.Status.OK);
    builder.entity(genericList);
    Response response = builder.build();
    return response; 

在创建通用访问类之前,所有CRUD方法都运行良好。

1 个答案:

答案 0 :(得分:1)

实际上所有的代码都没问题。处理服务器可能存在问题。我已经创建了JAVA_HOME并添加了路径。关闭服务器再次打开它并再次部署项目。神奇地它起作用了。如果有人知道解释请分享。