Jetty 설치 및 구성
1. http://www.eclipse.org/jetty/downloads.php 페이지에서 설치 파일을 다운로드 한다.
본 예에서는 zip 패키지 파일을 다운로드하여 설치한다.
2. 다운로드 받은 파일을 임의의 설치 디렉토리에 압축을 해제한다.
----------------------------------------------------------------------------------
C:\jetty-distribution-9.2.2.v20140723
2014-08-11 오후 01:02 <DIR> .
2014-08-11 오후 01:02 <DIR> ..
2014-08-11 오후 01:02 <DIR> bin
2014-08-11 오후 01:02 <DIR> demo-base
2014-08-11 오후 01:02 <DIR> etc
2014-08-11 오후 01:02 <DIR> lib
2014-07-23 오전 11:47 30,012 license-eplv10-aslv20.html
2014-07-23 오전 11:47 <DIR> logs
2014-08-11 오후 01:02 <DIR> modules
2014-07-23 오전 11:47 6,262 notice.html
2014-07-23 오전 11:47 1,188 README.TXT
2014-07-23 오전 11:47 <DIR> resources
2014-08-11 오후 01:02 <DIR> start.d
2014-07-23 오전 11:47 2,397 start.ini
2014-07-23 오전 11:47 105,491 start.jar
2014-07-23 오전 11:47 368,015 VERSION.txt
2014-08-11 오후 01:02 <DIR> webapps
----------------------------------------------------------------------------------
3. JETTY_HOME 경로에 있는 start.jar 파일을 실행하면 jetty가 구동된다.
명령프롬프트에서 java -jar start.jar 를 입력후 Enter
jetty는 기본적으로 8080포트를 사용한다.
----------------------------------------------------------------------------------
> cd C:\jetty-distribution-9.2.2.v20140723
> java -jar start.jar
2014-08-11 13:04:38.189:INFO::main: Logging initialized @12967ms
2014-08-11 13:04:43.278:INFO:oejs.Server:main: jetty-9.2.2.v20140723
2014-08-11 13:04:43.728:INFO:oejdp.ScanningAppProvider:main: Deployment monitor[file:/C:/jetty-distribution-9.2.2.v20140723/webapps/] at interval 1
2014-08-11 13:04:45.527:INFO:oejs.ServerConnector:main: Started ServerConnector@1abc23{HTTP/1.1}{0.0.0.0:8080}
2014-08-11 13:04:45.530:INFO:oejs.Server:main: Started @20861ms
----------------------------------------------------------------------------------
4. 서버가 실행되었다면 브라우저를 이용해 http://localhost:8080 페이지에 접속해보면 다음과 같이 404 에러가 발생된다.
Error 404 - Not Found.
No context on this server matched or handled this request.
Contexts known to this server are:
Powered by Jetty:// Java Web Server
이유는 인스턴스만 기동했지 아무런 컨텍스트 등의 리소스가 없기 때문이다.
톰캣과 같이 홈 루트에 ROOT라는 기본 컨텍스트 디렉토리에 intro 페이지를 기본으로 제공않기 때문이다.
컨택스트 정의는 "인스턴스홈\webapps\WEB-INF\jetty-web.xml" 파일에 합니다.
jetty는 별도의 데모 인스턴스를 기동해야 데모 페이지를 확인할 수 있다.
5. 데모인스턴스를 기동해본다.
> cd C:\jetty-distribution-9.2.2.v20140723\demo-base
> java -jar ../start.jar
2014-08-11 13:25:22.527:INFO::main: Logging initialized @1803ms
2014-08-11 13:25:23.181:WARN::main: demo test-realm is deployed. DO NOT USE IN PRODUCTION!
2014-08-11 13:25:23.185:INFO:oejs.Server:main: jetty-9.2.2.v20140723
2014-08-11 13:25:23.212:INFO:oejdp.ScanningAppProvider:main: Deployment monitor[file:/C:/jetty-distribution-9.2.2.v20140723/demo-base/webapps/] at interval 1
2014-08-11 13:25:24.342:WARN::main: async-rest webapp is deployed. DO NOT USE IN PRODUCTION!
2014-08-11 13:25:24.885:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@21477c{/async-rest,[file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-529785691001485515.dir/webapp/, jar:file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-async-rest.war-_async-rest-any-529785691001485515.dir/webapp/WEB-INF/lib/example-async-rest-jar-9.2.2.v20140723.jar!/META-INF/resources],AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps\async-rest.war}2014-08-11 13:25:25.511:WARN::main: test webapp is deployed. DO NOT USE IN PRODUCTION!
2014-08-11 13:25:26.857:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@1e91c40{/test,file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-test.war-_test-any-3900659022558313272.dir/webapp/,AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps/test.war}
2014-08-11 13:25:27.373:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@28842f{/proxy,file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-xref-proxy.war-_xref-proxy-any-1185034837788092682.dir/webapp/,AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps\xref-proxy.war}
2014-08-11 13:25:27.589:WARN::main: test-jaas webapp is deployed. DO NOT USE INPRODUCTION!
2014-08-11 13:25:27.645:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@399ad5{/test-jaas,file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-test-jaas.war-_test-jaas-any-6454231903457840622.dir/webapp/,AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps/test-jaas.war}
2014-08-11 13:25:28.395:WARN::main: test-spec webapp is deployed. DO NOT USE INPRODUCTION!Calling TestListener.contextInitialized
2014-08-11 13:25:28.489:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@56ebfb{/test-spec,[file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-4997816671946262084.dir/webapp/, jar:file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-test-spec.war-_test-spec-any-4997816671946262084.dir/webapp/WEB-INF/lib/test-web-fragment-9.2.2.v20140723.jar!/META-INF/resources],AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps/test-spec.war}
2014-08-11 13:25:28.592:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@98e03e{/,file:/C:jetty-distribution-9.2.2.v20140723/demo-base/webapps/ROOT/,AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps\ROOT}
2014-08-11 13:25:28.817:WARN::main: test-jndi webapp is deployed. DO NOT USE INPRODUCTION!
2014-08-11 13:25:28.933:INFO:oejsh.ContextHandler:main: Started o.e.j.w.WebAppContext@6e8f1{/test-jndi,file:/C:/Users/ssm/AppData/Local/Temp/jetty-0.0.0.0-8080-test-jndi.war-_test-jndi-any-4865082905996063980.dir/webapp/,AVAILABLE}{C:\jetty-distribution-9.2.2.v20140723\jetty-distribution-9.2.2.v20140723\demo-base\webapps/test-jndi.war}
2014-08-11 13:25:28.939:INFO:oejsh.ContextHandler:main: Started o.e.j.s.h.MovedContextHandler@d96047{/oldContextPath,null,AVAILABLE}
2014-08-11 13:25:28.946:INFO:oejs.ServerConnector:main: Started ServerConnector@1878e70{HTTP/1.1}{0.0.0.0:8080}
2014-08-11 13:25:29.009:INFO:oejs.ServerConnector:main: Started ServerConnector@1e633b7{SSL-http/1.1}{0.0.0.0:8443}
2014-08-11 13:25:29.011:INFO:oejs.Server:main: Started @8323ms
6. 데모 인스턴스가 정상적으로 기동되었으면 브라우저를 이용해 http://localhost:8080/ 페이지에 접속해본다.
다음과 같은 페이지를 확인할 수 있다.
7. 이번에는 새로운 인스턴스를 구성해보겠다. 새로운 인스턴스 홈 디렉터리를 생성하고 생성된 디렉토리로 이동해 다음 명령을 수행한다.
버전 9.1 부터는 jetty.base 메커니즘이라는게 추가되었는데 2개의 파일로 구분된다.
- jetty.home : jetty의 기본 모듈, 설정 파일 등의 위치를 정의하는 속성이며
- jetty.base : 인스턴스의 위치를 정의하는 속성으로 인스턴스 설정, 로그, 응용프로그램 등이 포함된다.
> cd C:\jetty_instance\inst1
> java -jar C:\jetty-distribution-9.2.2.v20140723\start.jar
WARNING: Nothing to start, exiting ...
Usage: java -jar start.jar [options] [properties] [configs]
java -jar start.jar --help # for more information
이와 같은 메시지를 보여주면서 jetty가 기동되지 않는 것을 확인할 수 있다.
즉, 해당 인스턴스 홈에 jetty 인스턴스 기동에 필요한 환경이 구성되어 있지 않음을 알 수 있다.
8. 새로운 jetty 인스턴스를 위해 HTTP 커넥터와 웹애플리케이션 배포에 관련된 구성을 해야하는데 다음 명령을 수행하면 된다.
C:\jetty_instance\inst1>java -jar C:\jetty-distribution-9.2.2.v20140723\start.jar --add-to-startd=http,deploy
INFO: http initialised in ${jetty.base}\start.d\http.ini (created)
INFO: http enabled in ${jetty.base}\${jetty.base}\start.d\http.ini
INFO: server initialised transitively
INFO: server enabled in ${jetty.base}\${jetty.base}\start.d\http.ini
INFO: deploy initialised in ${jetty.base}\start.d\deploy.ini (created)
INFO: deploy enabled in ${jetty.base}\${jetty.base}\start.d\deploy.ini
MKDIR: ${jetty.base}\webapps
INFO: webapp initialised transitively
INFO: webapp enabled in ${jetty.base}\${jetty.base}\start.d\deploy.ini
INFO: servlet initialised transitively
INFO: servlet enabled in ${jetty.base}\${jetty.base}\start.d\deploy.ini
INFO: security initialised transitively
INFO: security enabled in ${jetty.base}\${jetty.base}\start.d\deploy.ini
INFO: server initialised transitively
INFO: server enabled in ${jetty.base}\${jetty.base}\start.d\http.ini
결과로 인스턴스 홈 디렉토리에 start.d 와 webapps 디렉토리가 생성되고 start.d 디렉토리에 http.ini, deploy.ini 파일이 생성된다.
9. 다시 jetty 인스턴스를 기동해보자.
> cd C:\jetty_instance\inst1
> java -jar C:\jetty-distribution-9.2.2.v20140723\start.jar
2014-08-11 14:01:02.968:INFO::main: Logging initialized @625ms
2014-08-11 14:01:03.134:INFO:oejs.Server:main: jetty-9.2.2.v20140723
2014-08-11 14:01:03.153:INFO:oejdp.ScanningAppProvider:main: Deployment monitor[file:/C:/jetty_instance/inst1/webapps/] at interval 1
2014-08-11 14:01:03.185:INFO:oejs.ServerConnector:main: Started ServerConnector@8f5f75{HTTP/1.1}{0.0.0.0:8080}
2014-08-11 14:01:03.187:INFO:oejs.Server:main: Started @849ms
정상적으로 인스턴스가 기동되는 것을 확인할 수 있다.
10. 인스턴스가 정상적으로 기동되고 웹 페이지가 정상적으로 호출되는지 확인해보자.
> cd C:\jetty_instance\inst1\webapps
> mkdir ROOT
> index.html 파일을 생성
브라우저를 이용해 http://localhost:8080/index.html 을 호출해보면 페이지가 정상적으로 호출되는 것을 확인할 수 있다.
11. 기본 포트가 8080이므로 포트를 다르게 기동하고자 하는 경우는 다음 명령과 같이 수행한다.
> cd C:\jetty_instance\inst1
> java -jar C:\jetty-distribution-9.2.2.v20140723\start.jar jetty.port=8081
또는 C:\jetty_instance\inst1\start.d\http.ini 파일에서 jetty.port의 값을 변경해준다.