2016-06-03 5 views
2

저는 REST와 Jersey의 기본 사항을 파악하려고합니다. 나는 here이라는 Cruncify 튜토리얼을 따르고있다.Jersey HTTP 500 오류

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>CrunchifyRESTJerseyExample</groupId> 
    <artifactId>CrunchifyRESTJerseyExample</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
     <plugin> 
     <artifactId>maven-war-plugin</artifactId> 
     <version>2.6</version> 
     <configuration> 
      <warSourceDirectory>WebContent</warSourceDirectory> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-bundle</artifactId> 
     <version>1.19.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.19.1</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-core</artifactId> 
     <version>1.19.1</version> 
    </dependency> 
    <dependency> 
     <groupId>asm</groupId> 
     <artifactId>asm</artifactId> 
     <version>20041228.180559</version> 
    </dependency> 
    <dependency> 
     <groupId>ai.x</groupId> 
     <artifactId>play-json-extensions_2.11</artifactId> 
     <version>0.8.0</version> 
    </dependency> 
    </dependencies> 
</project> 
:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
version="3.0"> 
<display-name>CrunchifyRESTJerseyExample</display-name> 
<welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
</welcome-file-list> 

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <url-pattern>/crunchify/*</url-pattern> 
</servlet-mapping> 
여기

는 pom.xml 파일입니다 :은 web.xml 여기

package com.crunchify.restjersey; 

/** 
* @author Crunchify.com 
*/ 

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.Produces; 

@Path("/ctofservice") 
public class CtoFService { 
@GET 
@Produces("application/xml") 
public String convertCtoF() { 

    Double fahrenheit; 
    Double celsius = 36.8; 
    fahrenheit = ((celsius * 9)/5) + 32; 

    String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit; 
    return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>"; 
} 

@Path("{c}") 
@GET 
@Produces("application/xml") 
public String convertCtoFfromInput(@PathParam("c") Double c) { 
    Double fahrenheit; 
    Double celsius = c; 
    fahrenheit = ((celsius * 9)/5) + 32; 

    String result = "@Produces(\"application/xml\") Output: \n\nC to F Converter Output: \n\n" + fahrenheit; 
    return "<ctofservice>" + "<celsius>" + celsius + "</celsius>" + "<ctofoutput>" + result + "</ctofoutput>" + "</ctofservice>"; 
} 
} 

됩니다 : 여기

은 내가 사용하고있는 서비스입니다

그리고 내가 받고있는 오류가있다 :

type Exception report 

message Servlet.init() for servlet Jersey Web Application threw exception 

description The server encountered an internal error that prevented it from fulfilling this request. 

exception 

javax.servlet.ServletException: Servlet.init() for servlet Jersey Web Application threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1099) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

근본 원인은 JSON 예외입니다. 나는 이것을 Tomcat 8.0 서버에서 실행하고있다. 어떤 도움을 주시면 감사하겠습니다. 감사.

+0

모든 것이 나에게 좋아 보이는 서블릿의 init-PARAM 항목의 하나로서 응용 프로그램 구현 클래스 이름을 통과 할 필요가있다 . 언제이 예외가 생겼어? 네가 시도하고있는 URL은 무엇인가? 필요없는 것을 제거하십시오. asm 및 play-json-extensions_2.11 jars와 같은 형식입니다. – Veeram

+1

500은 내부 서버입니다. 코드를 통해 디버깅 할 수 있습니까? 또한 전체 스택 추적을 제공합니다. – LeTex

+1

제공된 스택 추적은 일반적으로 실제 근본 원인을 나타내는 "원인"부분을 생략 한 것으로 보입니다. stacktrace의 해당 부분도 포함시킬 수 있습니까? – Castaglia

답변

0

web.xml의 서블릿 컨테이너에 모든 리소스 클래스를 지정하는 초기화 매개 변수가 없습니다. 동일한 내용은 아래 샘플을 참조하십시오.

<servlet> 
    <servlet-name>Jersey Web Application</servlet-name> 
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
      <init-param> 
       <param-name>jersey.config.server.provider.packages</param-name> 
       <param-value>com.crunchify.restjersey; 
        com.fasterxml.jackson.jaxrs 
       </param-value> 
      </init-param> 
      <load-on-startup>1</load-on-startup> 
     </servlet> 

서블릿 2.x를 실행 한 후 대신이 저지 특정 서블릿을 선언하고

+0

init-param은 저지 2 용이고 op는 저지 1을 사용하고 있습니다. –