Я хотел бы изготовить JSON, используя Jetty + Jersey. Мой POM.XML похож на этот пост: How do I update example to work with latest versions Jetty (9.1.0.RC2) and Jersey (2.7)?. Я предполагаю, что у меня отсутствует какая-то зависимость. Результат inferFile() возвращается пустым.Jersey + Jetty + JSON
Я вижу, что метод toStirng из класса Student не был вызван.
Maven
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-server</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>9.1.3.v20140225</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.14</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.14</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-jetty-http</artifactId>
<version>2.14</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
<version>2.14</version>
</dependency>
Java
public class Student {
public Student(){
}
@Override
public String toString(){
return new StringBuffer(" First Name : ").append("MY FIRST NAME").toString();
}
}
@Path("/bulkload")
public class BulkLoadAPI {
@POST
@Path("inference")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public Student inferFile() throws URISyntaxException, IOException {
Student s = new Student();
return s;
}
}
public static void main(String[] args) throws Exception {
ServletHolder jerseyServlet = new ServletHolder(ServletContainer.class);
jerseyServlet.setInitParameter("jersey.config.server.provider.classnames", "service.api.BulkLoadAPI");
jerseyServlet.setInitParameter("com.sun.jersey.api.json.POJOMappingFeature", "true");
Server server = new Server(10500);
ServletContextHandler context = new ServletContextHandler (server, "/", Servl etContextHandler.SESSIONS);
context.addServlet(jerseyServlet, "/*");
server.start();
server.join();
}
Если я хочу использовать JSON с помощью POJO, мне нужно что-либо изменить или просто изменить @Consumes (MediaType.APPLICATION_JSON) и использовать Student в качестве параметра? Я попробовал это, и теперь я получаю неподдерживаемый тип медиа. –
То, что вы делаете, отлично звучит. Вы используете клиентский API для его отправки? –
Я использую POSTMAN (https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm) для генерации запроса. Нужно ли использовать конкретную библиотеку для отправки запроса? Запрос будет выполнен с использованием angular.js. –