2012-05-25 4 views
5

저는 웹 개발과 임베디드 부티크를 사용하는 초보자입니다. 아래에 제시된 소스 코드는 Eclipse IDE를 사용하여 개발되었습니다. 부두 서버를 프로그래밍 방식으로 시작해야하는데 명령 줄을 통해 시작하는 옵션이 없습니다. 메모리/처리 속도가 낮은 시스템에서 실행되므로 매우 가벼운 웹 인터페이스 여야합니다.임베디드 부두에서 웹 인터페이스 만들기

내가 ECLIPSE

JettyExample <Project> 
    src 
    sample_package 
     HelloWorld.java 
    WEB-INF 
     index.html 
     web.xml 

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

    Server server = new Server(8080); 
    ResourceHandler resource_handler = new ResourceHandler(); 
    resource_handler.setDirectoriesListed(true); 
    resource_handler.setResourceBase(args.length == 2?args[1]:"."); 
    resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 


    System.out.println("serving " + resource_handler.getBaseResource()); 

    HandlerList handlers = new HandlerList(); 
    handlers.setHandlers(new Handler[] { resource_handler, new DefaultHandler() }); 
    server.setHandler(handlers); 
    server.start(); 
    server.join(); 

} 

된 index.html입니다

<html> 
<head> 
    <title>HTML Generator Sample Page</title> 
</head> 
<body> 
    <h1 style="text-align: center;"> 
     Agent Management Interface</h1> 
    <ol> 
     <li> 
      Start Platform</li> 
     <li> 
      Show Agent Status</li> 
     <li> 
      Create Dummy Agent</li> 
     <li> 
      Intiate Request Message</li> 
     <li> 
      Stop agent</li> 
     <li> 
      Stop Platform</li> 
    </ol> 
    <p> 
     Enter option :</p> 
    <p> 
     <textarea cols="10" name="myTextBox" rows="1" style="width: 104px; height: 25px;"></textarea></p> 
    <p> 
     <input name="option_selector" type="submit" value="option_selector" /></p> 
</body> 

HelloWorld.java의 소스 코드에 다음 디렉토리 구조를 개발했다

web.xml 파일은 환영 파일 목록이있는 일반적인 파일입니다. 웹 브라우저에서 서버를 실행하고 localhost : 8080을 실행하면 404 오류가 발생합니다. web.xml 파일 또는 web.xml 파일의 참조를 추가해야하는지 잘 모르겠습니다. HelloWorld.java main 메소드에서 올바르지 않습니다.

내가 서버-api.jar을 파일을 클래스 패스에 jetty.jar을 파일을 포함하고 일식에 대한 Maven 플러그인으로 사용하고 있지 않다 :

어떤 힌트는/제안 도움이 편집 한 것입니다.

EDIT2 : 당신은 WEB-INF/index.html을로 시작 파일을 설정 한

2012-05-25 14:40:39.253:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.260:DBUG:oejs.Server:REQUEST/on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.264:DBUG:oejs.Server:RESPONSE/200 
2012-05-25 14:40:39.267:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.272:DBUG:oejs.AsyncHttpConnection:async request (null null)@17160330 [email protected] 
2012-05-25 14:40:39.273:DBUG:oejs.Server:REQUEST /jetty-dir.css on org.eclipse.jett[email protected][email protected]:8080<->127.0.0.1:55062 
2012-05-25 14:40:39.275:DBUG:oejs.Server:RESPONSE /jetty-dir.css 404 
+0

파일의 전체 경로를 입력해도 오류가 있습니까? – BOSS

+0

@abhishek bose 필자는 localhost : 8080/src/WEB-INF을 입력 할 때만 디렉토리 구조를 볼 수 있습니다. index.html 페이지 – bhavs

답변

2

. WEB-INF 폴더 안에있는 항목은 서블릿 컨테이너에서만 볼 수 있으며 컨테이너 외부에서는 액세스 할 수 없습니다.

index.html이 WEB-INF 뒤에 숨겨져 있기 때문에 작동하지 않습니다. WEB-INF로 작업 할 때 또한, 그러한 /WEB-INF/file.html로, 응용 프로그램의 루트에서 액세스하는 관례 :

resource_handler.setWelcomeFiles(new String[]{ "WEB-INF/index.html" }); 

당신이처럼 index.html 파일을 포함하는 경우 응용 프로그램이 필요로하기 때문에,

resource_handler.setWelcomeFiles(new String[]{ "index.html" }); 

것은이 변경 한 후 부두를 다시 시작해야합니다 : 확인 또한 파일 환영하고 index.html을 응용 프로그램의 루트에, 부두 서버를 찾을 수 있어야합니다 이 정보를 다시로드하십시오.

또한 서버에 새 웹 응용 프로그램을 구성 할 때 일반적으로 로깅 수준을 최대한 높이는 것이 좋습니다. 서버 및 프레임 워크는 일반적으로 하위 수준에서 로깅되므로 응용 프로그램 로그를 방해하지 않습니다. 그러나이 경우 브라우저에서 localhost : 8080을로드 할 때 서블릿 컨테이너가 액세스하려고하는 리소스를 확인해야합니다.

더 명확히하기 위해 ResourceHandler.setWelcomeFiles Java 메소드는 웹을 통해 서버를 구성하는 것과 같습니다.다음 XML 항목을 사용하여 포함되지 않은 부두에서 XML :

<welcome-file-list> 
      <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 

은 몇 가지 예와 Eclipse Wiki Page on Embedding Jetty 더 문서가 있으며, 더 지침을 확인해야합니다. 임베디드 부두 6

파일 구조 : 여기

내가 가진 임베디드 부두의 사본의 예제 파일 구조입니다. src.html의 오른쪽에 index.html이 있습니다.

build.properties* index.html* README.textile* src/ war/ 
build.xml*   licenses/ server/   test/ WEB-INF/ 
+0

에서 html 페이지를 볼 수 있습니다. 변경, 내가 입력 한 localhost : 8080 이제 내 코드베이스의 디렉토리 구조를 볼 때 src/WEB-INF 폴더를 클릭하면 내가 만든 html 페이지를 볼 수있다. 로깅 수준이 증가하지 않도록 로그 메시지로 질문을 업데이트합니다 – bhavs

+1

ok. index.html을 src와 같은 폴더로 옮기십시오. 그래서 형제입니다. index.html 파일은 Jetty가 찾고있는 것보다 2 단계 더 깊습니다. 또한 WEB-INF가 표시된다는 사실은 구성 파일이 아무 것도하지 않고 있음을 나타냅니다. 컨테이너가 일반적으로 기본적으로 숨기는 것이기 때문입니다. 하지만 XML 파일 대신 프로그래밍 방식으로 구성하기 때문에 괜찮습니다. – jmort253

+0

도움을 주셔서 감사 드리며, 지금 페이지를 볼 수 있습니다. – bhavs