我想创建一个学习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方法都运行良好。
答案 0 :(得分:1)
实际上所有的代码都没问题。处理服务器可能存在问题。我已经创建了JAVA_HOME并添加了路径。关闭服务器再次打开它并再次部署项目。神奇地它起作用了。如果有人知道解释请分享。