2017-07-26 68 views
0

我正在使用gradle,並且我的項目構建得很好。當我使用Jetty部署戰爭時,我沒有看到我的對象。Gradle Jax-RS Mysql Jetty項目不工作

apply plugin: 'war' 
apply plugin: 'eclipse' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile 'org.glassfish.jersey.media:jersey-media-json-jackson:2.16' 
    compile 'org.glassfish.jersey.bundles:jaxrs-ri:2.16' 
} 

compileJava { 
    sourceCompatibility = JavaVersion.VERSION_1_8 
    targetCompatibility = JavaVersion.VERSION_1_8 
} 

Java文件

Persons.java

package workspace.TomcatJNDIProject; 

import java.io.Serializable; 
import java.util.Date; 
import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Id; 

public class Persons implements Serializable { 

private static final long serialVersionUID = 1L; 
@Basic(optional = false) 
@Column(name="person_id") 
@Id 
private int personId; 
@Basic(optional = false) 
@Column(name="name") 
@Id 
private String name; 
private int Age; 
private Date DOB; 
private String email; 

@JsonProperty(value = "person_id") 
public int getId() { 
    return personId; 
} 
public void setId(int id) { 
    this.personId = id; 
} 

@JsonProperty(value = "name") 
public String getName() { 
    return name; 
} 

public void setName(String name) { 
     this.name = name; 
} 

@JsonProperty(value = "age") 
public int getAge() { 
    return Age; 
} 
public void setAge(int age) { 
    Age = age; 
} 

@JsonProperty(value = "dateofbirth") 
public Date getDOB() { 
    return DOB; 
} 
public void setDOB(Date dOB) { 
    DOB = dOB; 
} 

@JsonProperty(value = "email") 
public String getEmail() { 
    return email; 
} 
public void setEmail(String email) { 
    this.email = email; 
} 
} 

PeopleDAO.java

package workpace.TomcatJNDIProject; 

import javax.ws.rs.core.Response; 

import com.people.model.Persons; 

public interface PeopleDAO { 

public Response getPerson(int id); 
public Response getAllPeople(); 

} 

PeopleDAOImpl.java

package workpace.TomcatJNDIExample; 

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.ArrayList; 
import java.util.List; 
import javax.sql.DataSource; 
import javax.ws.rs.core.Response; 
import javax.ws.rs.core.Response.Status; 
import org.apache.log4j.Logger; 
import com.poeple.dao.PeopleDAO; 
import com.poeple.model.Persons; 
import com.poeple.model.StatusMessage; 
import com.poeple.util.Database; 

public class PeopleDAOImpl implements PeopleDAO { 
private DataSource datasource = Database.getDataSource(); 
private Logger logger = Logger.getLogger(PeopleDAOImpl.class); 

@Override 
public Response getPerson(int id) { 
    Connection conn = null; 
    PreparedStatement ps = null; 
    ResultSet rs = null; 

    People person = null; 
    String sql = "select people_id, first_name, last_name, address, city, " 
     + "state, zip_code, is_active from Person where people_id = ?"; 

    try { 
     conn = datasource.getConnection(); 
     ps = conn.prepareStatement(sql); 
     ps.setInt(1, id); 
     rs = ps.executeQuery(); 

     if (rs.next()) { 
      person = new People(); 
      person.setId(rs.getInt("Person_ID")); 
      person.setName(rs.getString("Name")); 
      person.setAge(rs.getInt("Age")); 
      person.setDOB(rs.getDate("DateOfBirth")); 
      person.setEmail(rs.getString("Email")); 
      persons.add(person); 
     } else { 
      logger.error(String.format("Person with ID of %d is not found.", id)); 
      StatusMessage statusMessage = new StatusMessage(); 
      statusMessage.setStatus(Status.NOT_FOUND.getStatusCode()); 
      statusMessage.setMessage(String.format("Customer with ID of %d is not found.", id)); 
      return Response.status(404).entity(statusMessage).build(); 
     } 
    } catch (SQLException e) { 
     logger.error("Error: " + e.getMessage()); 
     e.printStackTrace(); 
    } 
    finally { 
     if (rs != null) { 
      try { 
       rs.close(); 
      } catch (SQLException e) { 
       logger.error("Error closing resultset: " + e.getMessage()); 
       e.printStackTrace(); 
      } 
     } 
     if (ps != null) { 
      try { 
       ps.close(); 
      } catch (SQLException e) { 
       logger.error("Error closing PreparedStatement: " + e.getMessage()); 
       e.printStackTrace(); 
      } 
     } 
     if (conn != null) { 
      try { 
       conn.close(); 
      } catch (SQLException e) { 
       logger.error("Error closing connection: " + e.getMessage()); 
       e.printStackTrace(); 
      } 
     } 
    } 
    return Response.status(200).entity(people).build(); 
} 
} 

TomcatJNDIService.java

package workpace.TomcatJNDIProject; 

import java.io.IOException; 
import javax.ws.rs.Consumes; 
import javax.ws.rs.DELETE; 
import javax.ws.rs.DefaultValue; 
import javax.ws.rs.GET; 
import javax.ws.rs.POST; 
import javax.ws.rs.PUT; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.QueryParam; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.core.Response; 
import org.apache.log4j.Logger; 
import org.codehaus.jackson.JsonGenerationException; 
import org.codehaus.jackson.map.JsonMappingException; 
import com.people.dao.PeopleDAO; 
import com.people.dao.impl.PeopleDAOImpl; 
import com.people.model.Persons; 

@Path("tomcat") 
public class TomcatJNDI { 
private Logger logger = Logger.getLogger(TomcatJNDIExample.class); 


@GET 
@Path("/people/{id}") 
@Produces(MediaType.APPLICATION_JSON) 
public Response getPerson(@DefaultValue("0") @QueryParam("id") int id) { 

    PeopleDAO daoImpl = new PeopleDAOImpl(); 
    logger.info("Inside getPerson..."); 

    Response resp = daoImpl.getPerson(id); 
    return resp; 
} 
} 

StatusMessage.java

package com.avaldes.model; 

import org.codehaus.jackson.annotate.JsonProperty; 

public class StatusMessage { 

private Integer status; 
private String message; 

public StatusMessage() { 
} 

@JsonProperty(value = "status_code") 
public Integer getStatus() { 
    return status; 
} 

public void setStatus(Integer status) { 
    this.status = status; 
} 

@JsonProperty(value = "message") 
public String getMessage() { 
    return message; 
} 

public void setMessage(String message) { 
    this.message = message; 
} 
} 

我使用的gradle 構建戰爭 Java的罐子碼頭,亞軍9.1.0.M0.jar --port 8081構建/libs/Sample.war

而且不知道從哪裏得到基本的錯誤。我沒有看到json對象,但我也不知道如何使用jax-rs進行登錄。先謝謝你。

回答

2

jetty-runner不會爲基於服務器的日誌記錄創建日誌目錄。

如果您在戰爭中沒有配置日誌記錄,則所有Jetty日誌均顯示在控制檯上。但是,由於您使用的是JAX-RS,所以配置JAX-RS在戰爭中使用的任何日誌記錄庫來執行您所需的任何操作(設置記錄器級別,寫入文件等)將是明智的做法)