在rest服务java eclipse中未获得json响应
我正在EclipseMars中构建RESTWebServices,通过以下链接创建maven项目 如本文所述,没有将任何依赖项放入pom.xml中(如链接中所述),我得到了xml响应,但没有json响应。因此,当我将依赖项放入pom.xml文件并运行时,我在postman中得到了500个内部服务器错误(此时我不会同时得到xml和json响应) Product.java在rest服务java eclipse中未获得json响应,java,eclipse,rest,maven,Java,Eclipse,Rest,Maven,我正在EclipseMars中构建RESTWebServices,通过以下链接创建maven项目 如本文所述,没有将任何依赖项放入pom.xml中(如链接中所述),我得到了xml响应,但没有json响应。因此,当我将依赖项放入pom.xml文件并运行时,我在postman中得到了500个内部服务器错误(此时我不会同时得到xml和json响应) Product.java package com.star.sample.ProductService.Productsample; import j
package com.star.sample.ProductService.Productsample;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Product {
private String id;
private String name;
private String category;
public Product() {
}
public Product(String id, String name, String category) {
super();
this.id = id;
this.name = name;
this.category = category;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}}
ProductDao.java
package com.star.sample.ProductService.Productsample;
import java.util.HashMap;
import java.util.Map;
public enum ProductDao {
instance;
private Map<String, Product> products = new HashMap<String, Product>();
private ProductDao() {
// pumping-in some default data
Product product = new Product("1001", "iPhone 5S", "Mobile");
products.put("1", product);
product = new Product("1002", "Sony MDR-XD200", "Headphone");
products.put("2", product);
product = new Product("1003", "Bose Wave II", "Home Audio");
products.put("3", product);
}
public Map<String, Product> getProducts() {
return products;
}}
package com.star.sample.ProductService.Productsample;
导入java.util.HashMap;
导入java.util.Map;
公共枚举产品DAO{
实例;
私有映射产品=新HashMap();
私人产品{
//泵入一些默认数据
产品=新产品(“1001”、“iPhone 5S”、“手机”);
产品。投入(“1”,产品);
产品=新产品(“1002”、“索尼MDR-XD200”、“耳机”);
产品。投入(“2”,产品);
产品=新产品(“1003”、“Bose Wave II”、“家用音频”);
产品。放置(“3”,产品);
}
公共地图产品(){
退货产品;
}}
java
package com.star.sample.ProductService.Productsample;
public class ProductResource {
@Context
UriInfo uriInfo;
@Context
Request request;
String id;
ProductService productService;
public ProductResource(UriInfo uriInfo, Request request, String id) {
this.uriInfo = uriInfo;
this.request = request;
this.id = id;
productService = new ProductService();
}
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Product getProduct() {
Product product = productService.getProduct(id);
return product;
}
@GET
@Produces(MediaType.TEXT_XML)
public Product getProductAsHtml() {
Product product = productService.getProduct(id);
return product;
}
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response putProduct(JAXBElement<Product> productElement) {
Product product = productElement.getValue();
Response response;
if (productService.getProducts().containsKey(product.getId())) {
response = Response.noContent().build();
} else {
response = Response.created(uriInfo.getAbsolutePath()).build();
}
productService.createProduct(product);
return response;
}
@DELETE
public void deleteProduct() {
productService.deleteProduct(id);
}
}
package com.star.sample.ProductService.Productsample;
@Path("/products")
public class ProductsResource {
@Context
UriInfo uriInfo;
@Context
Request request;
ProductService productService;
public ProductsResource() {
productService = new ProductService();
}
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Product> getProducts() {
return productService.getProductAsList();
}
@GET
@Produces(MediaType.TEXT_XML)
public List<Product> getProductsAsHtml() {
return productService.getProductAsList();
}
// URI: /rest/products/count
@GET
@Path("count")
@Produces(MediaType.TEXT_PLAIN)
public String getCount() {
return String.valueOf(productService.getProductsCount());
}
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void createProduct(@FormParam("id") String id,
@FormParam("productname") String name,
@FormParam("productcategory") String category,
@Context HttpServletResponse servletResponse) throws IOException {
Product product = new Product(id, name, category);
productService.createProduct(product);
servletResponse.sendRedirect("./products/");
}
@Path("{product}")
public ProductResource getProduct(@PathParam("product") String id) {
return new ProductResource(uriInfo, request, id);
}
package com.star.sample.ProductService.Productsample;
公共类产品资源{
@上下文
UriInfo-UriInfo;
@上下文
请求;
字符串id;
产品服务产品服务;
公共产品资源(UriInfo UriInfo、请求请求、字符串id){
this.uriInfo=uriInfo;
this.request=请求;
this.id=id;
productService=新的productService();
}
@得到
@产生({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
公共产品{
Product Product=productService.getProduct(id);
退货产品;
}
@得到
@生成(MediaType.TEXT\u XML)
公共产品getProductAsHtml(){
Product Product=productService.getProduct(id);
退货产品;
}
@放
@使用(MediaType.APPLICATION_XML)
公共响应产品(JAXBElement productElement){
Product=productElement.getValue();
反应;
if(productService.getProducts().containsKey(product.getId())){
response=response.noContent().build();
}否则{
response=response.created(uriInfo.getAbsolutePath()).build();
}
productService.createProduct(产品);
返回响应;
}
@删除
公共产品(){
productService.deleteProduct(id);
}
}
java
package com.star.sample.ProductService.Productsample;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ProductService {
ProductDao productDao;
public ProductService() {
productDao = ProductDao.instance;
}
public void createProduct(Product product) {
productDao.getProducts().put(product.getId(), product);
}
public Product getProduct(String id) {
return productDao.getProducts().get(id);
}
public Map<String, Product> getProducts() {
return productDao.getProducts();
}
public List<Product> getProductAsList() {
List<Product> productList = new ArrayList<Product>();
productList.addAll(productDao.getProducts().values());
return productList;
}
public int getProductsCount() {
return productDao.getProducts().size();
}
public void deleteProduct(String id) {
productDao.getProducts().remove(id);
}
}
package com.star.sample.ProductService.Productsample;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.Map;
公共类产品服务{
ProductDao ProductDao;
公共产品服务(){
productDao=productDao.instance;
}
公共产品(产品){
productDao.getProducts().put(product.getId(),product);
}
公共产品getProduct(字符串id){
返回productDao.getProducts().get(id);
}
公共地图产品(){
返回productDao.getProducts();
}
公共列表getProductAsList(){
List productList=new ArrayList();
addAll(productDao.getProducts().values());
返回产品列表;
}
public int getProductsCount(){
返回productDao.getProducts().size();
}
公共产品(字符串id){
productDao.getProducts().remove(id);
}
}
ProductsResource.java
package com.star.sample.ProductService.Productsample;
public class ProductResource {
@Context
UriInfo uriInfo;
@Context
Request request;
String id;
ProductService productService;
public ProductResource(UriInfo uriInfo, Request request, String id) {
this.uriInfo = uriInfo;
this.request = request;
this.id = id;
productService = new ProductService();
}
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public Product getProduct() {
Product product = productService.getProduct(id);
return product;
}
@GET
@Produces(MediaType.TEXT_XML)
public Product getProductAsHtml() {
Product product = productService.getProduct(id);
return product;
}
@PUT
@Consumes(MediaType.APPLICATION_XML)
public Response putProduct(JAXBElement<Product> productElement) {
Product product = productElement.getValue();
Response response;
if (productService.getProducts().containsKey(product.getId())) {
response = Response.noContent().build();
} else {
response = Response.created(uriInfo.getAbsolutePath()).build();
}
productService.createProduct(product);
return response;
}
@DELETE
public void deleteProduct() {
productService.deleteProduct(id);
}
}
package com.star.sample.ProductService.Productsample;
@Path("/products")
public class ProductsResource {
@Context
UriInfo uriInfo;
@Context
Request request;
ProductService productService;
public ProductsResource() {
productService = new ProductService();
}
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public List<Product> getProducts() {
return productService.getProductAsList();
}
@GET
@Produces(MediaType.TEXT_XML)
public List<Product> getProductsAsHtml() {
return productService.getProductAsList();
}
// URI: /rest/products/count
@GET
@Path("count")
@Produces(MediaType.TEXT_PLAIN)
public String getCount() {
return String.valueOf(productService.getProductsCount());
}
@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void createProduct(@FormParam("id") String id,
@FormParam("productname") String name,
@FormParam("productcategory") String category,
@Context HttpServletResponse servletResponse) throws IOException {
Product product = new Product(id, name, category);
productService.createProduct(product);
servletResponse.sendRedirect("./products/");
}
@Path("{product}")
public ProductResource getProduct(@PathParam("product") String id) {
return new ProductResource(uriInfo, request, id);
}
package com.star.sample.ProductService.Productsample;
@路径(“/products”)
公共类产品资源{
@上下文
UriInfo-UriInfo;
@上下文
请求;
产品服务产品服务;
公共产品资源(){
productService=新的productService();
}
@得到
@产生({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
公共列表产品(){
返回productService.getProductAsList();
}
@得到
@生成(MediaType.TEXT\u XML)
公共列表getProductsAsHtml(){
返回productService.getProductAsList();
}
//URI:/rest/products/count
@得到
@路径(“计数”)
@生成(MediaType.TEXT\u PLAIN)
公共字符串getCount(){
返回字符串.valueOf(productService.getProductsCount());
}
@职位
@生成(MediaType.TEXT\u HTML)
@使用(MediaType.APPLICATION\u FORM\u URLENCODED)
public void createProduct(@FormParam(“id”)字符串id,
@FormParam(“productname”)字符串名称,
@FormParam(“productcategory”)字符串类别,
@上下文HttpServletResponse(servletResponse)引发IOException{
产品=新产品(id、名称、类别);
productService.createProduct(产品);
servletResponse.sendRedirect(“./products/”);
}
@路径(“{product}”)
公共产品资源getProduct(@PathParam(“产品”)字符串id){
返回新的ProductResource(uriInfo、请求、id);
}
}
POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.star.sample</groupId>
<artifactId>ProductService</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>ProductService Jersey Webapp</name>
<build>
<finalName>ProductService</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<inherited>true</inherited>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<!-- Run the application using "mvn embedded-glassfish:run" -->
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>${glassfish.version}</version>
<configuration>
<goalPrefix>embedded-glassfish</goalPrefix>
<app>C:/Users/star/eclipseworkspace/target/${project.build.finalName}.war</app>
<autoDelete>true</autoDelete>
<port>8080</port>
</configuration>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-servlet</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>${jersey.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.glassfish.extras</groupId>
<artifactId>glassfish-embedded-web</artifactId>
<version>${glassfish.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<jersey.version>1.19</jersey.version>
<glassfish.version>3.1.1</glassfish.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
4.0.0
com.star.sample
产品服务
战争
0.0.1-快照
ProductService Jersey Webapp
产品服务
org.apache.maven.plugins
maven编译器插件
真的
1.6
1.6
玻璃鱼
maven嵌入式glassfish插件
${glassfish.version}
嵌入式玻璃鱼
C:/Users/star/eclipseworkspace/target/${project.build.finalName}.war
真的
8080
泽西岛
泽西servlet
${project.version}
javax.servlet
javax.servlet-api
3.0.1
泽西岛
泽西servlet
${jersey.version}
泽西岛
泽西json
${jersey.version}
朱尼特
朱尼特
4.8.2
测试
泽西岛
泽西岛客户
${jersey.version}
测试
org.glassfish.extras
玻璃鱼嵌入网
${glassfish.version}
测试
1.19
3.1.1
UTF-8
我是java的新手,mav