Java 转换为泛型方法后,getall函数不起作用

Java 转换为泛型方法后,getall函数不起作用,java,mysql,rest,generics,crud,Java,Mysql,Rest,Generics,Crud,我想做一个学习JavaEE的项目。我计划建立一个售票管理系统。所以我创建了一个mysql数据库、实体类、访问类、ejb类,最后是WSService类。对于单个座椅和客户桌,我的CRUD操作正常。我已经尝过soapui的味道 之后,我创建了一个通用访问类。现在我的“获取”选项不起作用,我正在获取 HTTP/1.1500内部服务器错误 从glassfish服务器日志中,我得到了以下回复 [2018-01-17T12:02:48.966+0100][Payara 4.1][Severy][[org.g

我想做一个学习JavaEE的项目。我计划建立一个售票管理系统。所以我创建了一个mysql数据库、实体类、访问类、ejb类,最后是WSService类。对于单个座椅和客户桌,我的CRUD操作正常。我已经尝过soapui的味道

之后,我创建了一个通用访问类。现在我的“获取”选项不起作用,我正在获取

HTTP/1.1500内部服务器错误

从glassfish服务器日志中,我得到了以下回复

[2018-01-17T12:02:48.966+0100][Payara 4.1][Severy][[org.glassfish.jersey.message.internal.WriterInterceptorExecutor][tid:_ThreadID=31 _ThreadName=http线程池::http-listener-1(3)][timeMillis:1516186968966][levelValue:1000][[ 未找到媒体类型=应用程序/json的MessageBodyWriter;字符集=utf-8,类型=类java.util.ArrayList,genericType=java.util.List。]]

从其他3种方法中,我得到了“HTTP/1.1200ok”的回复

下面是access类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);
    }   
}
public List getAll(类类型){
最后一个字符串method=Thread.currentThread().getStackTrace()[0].getMethodName();//以获取方法名称
输入(类、方法);
列表结果=空;
试试{
TypedQuery holderQuery=em.createNamedQuery(type.getSimpleName()+“.findAll”,type);
result=holderQuery.getResultList();
返回结果;
}捕获(例外情况除外){
LOGGER.log(Level.SEVERE,String.format(“出错…”),例如);
返回结果;
}最后{
正在退出(类、方法、结果);
}   
}
下面是来自ejb类的getallseat代码

public List<Seat> getAllSeat() {
    List<Seat> allSeatCaller = new ArrayList<>(accessObject.getAll(Seat.class));
    return allSeatCaller;
}
public List getAllSeat(){
List allSeatCaller=newarraylist(accessObject.getAll(Seat.class));
返回所有SeatCaller;
}
这是我的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; 
@GET
@路径(“getAllSeats”)
@产生(MediaType.APPLICATION_JSON+“charset=utf-8”)
公众回应getAllSeats(){
列表变量=seatPrice.getAllSeat();
GenericEntity genericList=新的GenericEntity(变量){};
ResponseBuilder=Response.status(Response.status.OK);
建筑商实体(通用列表);
Response=builder.build();
返回响应;

在创建泛型访问类之前,所有CRUD方法都工作得很好。

实际上,所有代码都很好。处理服务器可能有问题。我已经创建了JAVA_HOME并添加了路径。关闭服务器,再次打开它并重新部署项目。神奇的是,它工作了。如果有人知道解释,请ion请分享。

可能是这样的,没有设置JAVA_HOME变量,它使用的是路径上的默认JAVA,这将是您的JRE,而不是JDK。