我用两个资源创建了一个简单的REST服务。第一个资源很好用,只返回MediaType.TEXT_PLAIN。
对于第二个资源,我想尝试将POJO映射到Java并遵循以下示例:
https://github.com/jersey/jersey/tree/2.3.1/examples/json- moxy/src/main/java/org/glassfish/jersey/examples/jsonmoxy
我的testbean定义为:
@XmlRootElement public class Company { public String name; public String symbol; public String country; public Company(String name, String symbol, String country) { this.name = name; this.symbol = symbol; this.country = country; } public String getName() { return name; } public String getSymbol() { return symbol; } public String getCountry() { return country; } }
该资源也是微不足道的:
@Path("company/{name}") public class CompanyResource { private Map<String, Company> companies; public CompanyResource() { companies = new LinkedHashMap<String, Company>(); companies.put("Apple", new Company("Apple Inc.", "AAPL", "USA")); companies.put("Microsoft", new Company("Microsoft Corp.", "MSFT", "USA")); companies.put("Honda", new Company("Honda Motor Co Ltd", "HMC", "Japan")); companies.put("Random", new Company("Random Inc.", "RND", "Undefined")); } @GET @Produces(MediaType.APPLICATION_JSON) public Company getCompany(@PathParam("name") String name) { Company cmp = companies.get(name); if (cmp == null) { return companies.get("Random"); } return cmp; } }
我已经调试了一个请求,并且没有问题地到达了return语句。但是,从这里开始,我认为抛出了JAXBException,但是我无法查看详细信息,并且任何地方的任何日志中都没有任何内容。所发生的全部是浏览器显示“内部服务器错误500”消息。
在监视配置下,我绝望地将所有内容都设置为HIGH。仍然没有任何地方出现。
对于客户端,我只是将Google Chrome与“ Advanced REST Client”应用结合使用。
任何帮助将非常感激。
您将需要在类上提供一个无参数的构造函数Company。如果要限制谁可以访问构造函数,可以将其设为私有。
Company
private Company() { }