2014-07-08 2 views
0

자바 코드 (임베디드 부티) 만 사용하여 Jetty를 사용하여 서블릿을 실행하려고합니다. 여기 내 두 클래스입니다 :web.xml 파일없이 jetty에서 서블릿을 실행할 수 있습니까?

ExampleServer.java :

import org.eclipse.jetty.server.Connector; 
import org.eclipse.jetty.server.Handler; 
import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.server.ServerConnector; 
import org.eclipse.jetty.server.handler.DefaultHandler; 
import org.eclipse.jetty.server.handler.HandlerCollection; 
import org.eclipse.jetty.servlet.ServletContextHandler; 

/** 
* Created by Administrator on 7/8/14. 
*/ 
public class ExampleServer { 

    public static void main(String[] args) throws Exception { 
     Server server = new Server(); 
     ServerConnector connector = new ServerConnector(server); 
     connector.setPort(8080); 

     server.setConnectors(new Connector[]{connector}); 

     ServletContextHandler context = new ServletContextHandler(); 
     context.setContextPath("/hello"); 
     context.addServlet(HelloServlet.class, "/"); 

     HandlerCollection handlers = new HandlerCollection(); 
     handlers.setHandlers(new Handler[]{context, new DefaultHandler()}); 
     server.setHandler(handlers); 

     server.start(); 
     server.join(); 
    } 
} 

HelloServlet.java :

: 나는 다음과 같은 오류가 http://localhost:8080/hello에 액세스하려고 지금

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import java.io.IOException; 

/** 
* Created by Administrator on 7/8/14. 
*/ 
public class HelloServlet extends HttpServlet{ 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    { 
     response.setContentType("text/html"); 
     response.setStatus(HttpServletResponse.SC_OK); 
     response.getWriter().println("<h1>Hello from HelloServlet</h1>"); 
     response.getWriter().println("session=" + request.getSession(true).getId()); 
    } 
} 

HTTP 오류 : 500

/hello /에 액세스하는 중 문제가 발생했습니다. 이유 :

java.lang.IllegalStateException: No SessionManager 

해결 방법에 대한 아이디어가 있으십니까? 감사합니다.

+0

예, 서버를 포함시키고 시작할 때 올바른 매개 변수를 제공하면 예. 즉, 당신은 자신의 주체를 호출합니다. – maress

+0

그래서 주된 방법으로 뭔가를 추가해야합니까? – skiabox

+0

web.xml 데이터는 구성 데이터라는 것을 알 수 있습니다. 서버를 시작할 때 매개 변수를 제공합니다. 구글 임베디드 부두와 매개 변수를 전달하는 방법을 볼 수 있습니다 – maress

답변

1

당신은 단계,

context.addServlet(HelloServlet.class, "/"); 
context.setSessionHandler(new org.eclipse.jetty.server.session.SessionHandler()); 

일반적으로 놓친 것 같다, 구성 파일은 기본적으로 (또는 클러스터 JDBCSessionManager를 사용하는) 것을 설정하는 데 사용됩니다. 또한 호출했을 때만이 필요합니다. request.getSession(true).getId()

관련 문제