2017-12-06 19 views
1

빠른 개발을 위해 Java 기본 응용 프로그램에 임베드 된 Jetty를 사용하고 싶습니다. 부두에 완전히 새로운 나는 몇 가지 tuts 및 예제를보고 시작하고 여기에 내가 함께 넣어 것입니다 :임베디드 서블릿 컨테이너로 Jetty를 사용하려고 시도합니다.

public class JettyTest { 

    public static void main(String[] args) throws Exception { 

    Server server = new Server(8080); 
    server.dumpStdErr(); 
    ServletHandler handler = new ServletHandler(); 
    handler.addServletWithMapping(HelloServlet.class, "/*");   
    server.setHandler(handler); 
    server.start(); 
    server.join(); 
    } 
} 

class HelloServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    @Override 
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException { 
    HttpServletResponse httpRes = (HttpServletResponse) res; 
    httpRes.setContentType("text/html"); 
    httpRes.setStatus(HttpServletResponse.SC_OK); 
    httpRes.getWriter().println("<h1>Hello..</h1>"); 
    } 
} 

그리고 이것은 치어의 의존성이다 :

<dependencies> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <!-- it is 3.1.0 version --> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-server</artifactId> 
     <version>9.2.15.v20160210</version> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-servlet</artifactId> 
     <version>9.2.15.v20160210</version> 
    </dependency> 
</dependencies> 

내가이되지 가지고 있음을 실행 그래서 유망한 콘솔에 출력 :

[email protected] - STOPPED 
+? qtp1355316001{STOPPED,8<=0<=200,i=0,q=0} - STOPPED 
+? [email protected]{HTTP/1.1}{0.0.0.0:8080} - STOPPED 
| +~ [email protected] - STOPPED 
| +~ qtp1355316001{STOPPED,8<=0<=200,i=0,q=0} - STOPPED 
| +? 
[email protected]2 - STOPPED 
| +- [email protected]67a5 
| +? [email protected]{HTTP/1.1} - STOPPED 
| | +- [email protected]{32768/8192,8192/8192,https://:0,[]} 
| += [email protected]589838eb - STOPPED 
|  +- null 
|  +- null 
|  +- null 
|  +- null 
| 
+> [email protected] 
... 

와 나는 localhost:8080를 공격하려고 할 때이 얻을 :

javax.servlet.ServletException: [email protected]==edu.jetty.exp.HelloServlet,-1,false 

무엇이 누락 되었습니까?

+0

Dunno. 나를 위해 일합니다. :) – Stewart

+0

이전 버전의 Jetty ('8.1.22.v20160922')를 사용하고 있었으며 서블릿 매핑을 거치지 않고 직접 핸들러를 설정하고있었습니다. – Stewart

답변

0

ServletHandler을 직접 사용하지 마십시오. ServletContextHandler을 사용하고 그에 서블릿을 추가하십시오.

코드 예제의 경우 stackoverflow.com에서만 수천 개의 예제를 사용할 수 있으며 다른 웹 사이트에서는 더 많은 예제가 제공됩니다.

일부 하이라이트 :

에서, service(ServletRequest, ServletResponse) 방법 (매우 낮은 수준의 API 자사조차 HTTP !) 복잡한 라이브러리 외부에서는 거의 사용되지 않습니다.

서블릿 API를 처음 사용하는 경우 doGet()doPost()과 같이 다양한 do*() 방법을 대신 사용해보십시오.

doGet and doPost in Servlets