这真的令人困惑,我有一个可以在某些计算机上运行的休息服务,但拒绝在其他计算机上工作,不明白为什么。
该项目正在使用Maven,EJB和glassfish
这是休息服务:
@Path("/")
public class ArticleService {
@EJB
private LocalArticle articleEJB;
@GET
@Produces(MediaType.APPLICATION_XML)
@Path("article/{articleId}")
public Article getArticleXML(@PathParam("articleId") int id) {
return articleEJB.getArticleById(id);
}
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("article/{articleId}")
public Article getArticleJSON(@PathParam("articleId") int id) {
return articleEJB.getArticleById(id);
}
}
返回值是一个对象,如果我改为返回article.getName,我得到200响应,但是如果我尝试返回整个对象,我得到500
这是一个休息管理课程(我不知道这是做什么的,我从一本书中得到了一个例子):
@ApplicationPath("rest")
public class ArticleMgmtRESTApplication extends ResourceConfig {
public ArticleMgmtRESTApplication () {
packages("se.alager.rest.ws.services");
}
}
}
以下是相关文章:
@Entity
@NamedQueries({
@NamedQuery(name="Article.findAll", query="SELECT a FROM Article a"),
@NamedQuery(name="Article.findById", query="SELECT a FROM Article a WHERE a.id = :id")
})
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Article implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id_article")
@XmlAttribute
private int id;
private int amount;
private String description;
private String name;
}
这段确切的代码对于朋友来说是完美无缺的,但我似乎无法将其付诸实践,为什么会有任何想法?
这是错误的Glassfish日志(还有大约500行日志,我希望这是相关的,我不知道我在这里做什么)
[2016-10-20T16:31:44.140+0200] [glassfish 4.1]
[INFO] [] [org.jboss.weld.Bootstrap]
[tid: _ThreadID=142 _ThreadName=admin-listener(7)] [timeMillis: 1476973904140]
[levelValue: 800] [[
WELD-000119: Not generating any bean definitions from
org.glassfish.jersey.server.internal.inject.ParamConverters$CharacterProvider
because of underlying class loading error: Type [unknown] not found.
If this is unexpected, enable DEBUG logging to see the full error.]]
[2016-10-20T16:31:45.000+0200] [glassfish 4.1] [INFO] []
[org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer]
[tid: _ThreadID=142 _ThreadName=admin-listener(7)] [timeMillis: 1476973905000]
[levelValue: 800] [[
Registering the Jersey servlet application, named
se.alager.rest.ws.ManagementRESTApplication,
at the servlet mapping /rest/*, with the Application class of the same name.]]