rainsister
  • 신비한 비 Blog
  • Design Pattern
    • Adapter Pattern
    • Proxy Pattern
    • Mediator Pattern
    • Visitor Pattern
    • State Pattern
    • Memento Pattern
    • Factory Pattern
    • Template Pattern
    • Strategy Pattern
    • Bridge Pattern
  • springboot 2.x
    • 메시징 - 큐
      • RabbitMQ 기본설정
      • RabbitMQ 지연 큐(delayed queue)
    • Log
      • 기본 Log 설정 및 Logback 설정
      • Log4j2 사용해보기
      • tinylog 모듈 사용해보기
    • 기타 Database 에 대한 기본가이드
      • PostgreSQL
      • InfluxDB
      • MongoDB
    • 수행속도 UP! 각종 cache 어노테이션 사용법
      • Redis를 사용하여 Cache 관리하기
      • EhCache 사용해보기
      • Thread내캐쉬사용 및 Cache 어노테이션 사용법
    • Database Connection
      • Springboot 2.5 이후 data init script 초기화에 대한 변경
      • JTA 로 JPA 다중 DataSource 트랜잭션 처리 하기
      • Flyway 로 DataBase 형상 관리해보자
      • 트랜잭션 기초읽기
      • MyBatis 의 다중 DataSource
      • Spring Data JPA 다중 DataSource
      • JdbcTemplate 다중 DataSource
      • XML 로 Mybatis 설정하기
      • Mybatis 로 Mysql 연결하기
      • ORM(Spring data jpa)
      • Druid datasource 연결
      • Hikari 설정
      • JdbcTemplate 로 db 접근
    • rest api
      • XML에 대한 요청 및 응답 처리
      • SpringFox 3 및 Swagger 설정
      • 프로젝트 구동 시 RequestMappingHandler 로그 설정
      • Swagger 의 api들을 분류하는 법
      • 간단한 Restful API 만들고 테스트 코드 작성
      • Swagger2 구성하여 API 문서 자동화하기
      • JSR-303 그리고 validation
    • 설정
      • 시작
      • 멀티환경구성에 대한 새로운 방법
      • 멀티환경구성에 대한 새로운 include
      • 프로젝트 설정파일
      • 민감한 정보에 대한 암호화
  • java버전별차이
    • JAVA18
    • JAVA9
    • JAVA10
    • JAVA11
    • JAVA14
    • JAVA15
    • JAVA17
    • JAVA16
  • spring노하우
    • BeanUtils 권장하지 않는이유
    • 개인정보 암호화
    • Springboot 3가지 CROS 설정
    • Springboot 내장된 유용한 Utils
    • Spring Security WebSecurityConfigurerAdapter 가 deprecated 된 이슈해결하기
    • 아직도 HttpUtil ? SpringBoot 3.0의 HTTP Client Util 을 사용해보라
    • JDBC 소스를 뽀개기
    • spring-boot-configuration-processor 는 뭐하는놈임?
    • Apache BeanUtils vs Spring BeanUtils 성능비교
  • Effetive Java 3th
    • Finalizer & Cleaner
Powered by GitBook
On this page
  1. java버전별차이

JAVA18

Previousjava버전별차이NextJAVA9

Last updated 8 months ago

jwebserver 구동

공식사이트에서 캡처 이미지를 이용해보겠다.

짧은 영어능력으로 일단 이해한 내용을 요약하면!

  • Jetty、Nginx 등 기존 웹서버를 대체하기위함이 아닌 순수 테스트,학습목적으로 만들어 졌다.

  • 인증, 시큐리티, 액세스컨트롤, 암호화 등 기능은 지원하지 않는다.

  • HTTP/1.1 만 지원하고 HTTPS는 지원 안한다!

  • GET、HEAD 요청만 지원한다.

  • 명령을 통한 Java 클래스 구동이 가능하다.

아주 간단한 index.html 파일하나 만들어보자!

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
    <h1>안녕하세요 신비한 비 티스토리 블로그 입니다!</h1>
    </div>
    <div><h3>티스토리블로그:</h3></div>
    <url>https://rainsister.tistory.com/</url>
    <div><h3>깃북블로그:</h3></div>
    <url>https://app.gitbook.com/o/oa8n0se1zcxXR1QCxPlj/home</url>
    
</body>
</html>

내가 설치한 java 버전 그리고 home 경로를 파악해보자. 맥 기준 터미널에서

/usr/libexec/java_home -V
Matching Java Virtual Machines (7):
    18.0.2.1 (x86_64) "Eclipse Adoptium" - "OpenJDK 18.0.2.1" /Users/blake/Library/Java/JavaVirtualMachines/temurin-18.0.2.1/Contents/Home
    17.0.5 (arm64) "Eclipse Adoptium" - "OpenJDK 17.0.5" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
    16.0.2 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 16" /Library/Java/JavaVirtualMachines/temurin-16.jdk/Contents/Home
    11.0.17 (arm64) "Eclipse Adoptium" - "OpenJDK 11.0.17" /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
    11.0.11 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_345 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
    1.8.0_292 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

/Users/blake/Library/Java/JavaVirtualMachines/temurin-18.0.2.1/Contents/Home 로 확인 인된다.

jwebserver 를 시작하기 위해 bin 폴더까지 이동한다.

./jwebserver
Binding to loopback by default. For all interfaces use "-b 0.0.0.0" or "-b ::".
Serving /Users/blake/Library/Java/JavaVirtualMachines/temurin-18.0.2.1/Contents/Home/bin and subdirectories on 127.0.0.1 port 8000
URL http://127.0.0.1:8000/
127.0.0.1 - - [05/1월/2023:16:16:31 +0900] "GET /index.html HTTP/1.1" 200 -
127.0.0.1 - - [05/1월/2023:16:16:59 +0900] "GET /index.html HTTP/1.1" 200 -

추가 설명!

-h or -? or --help
 Prints the help message and exits.

-b addr or --bind-address addr
 Specifies the address to bind to.  Default: 127.0.0.1 or ::1 (loopback).  For
 all interfaces use -b 0.0.0.0 or -b ::.

-d dir or --directory dir
 Specifies the directory to serve.  Default: current directory.

-o level or --output level
 Specifies the output format.  none | info | verbose.  Default: info.

-p port or --port port
 Specifies the port to listen on.  Default: 8000.

-version or --version
 Prints the version information and exits.
  • -b:바인딩할 ip

  • -p:포트

  • -d:제공할 목록

  • -o:console 출력등급

jwebserver -p 9000 -d / -b 127.0.0.1 -o info

루트 / 디렉토리의 내용을 확인 할수 있다.

jwebserver 구동(with java code)

테스트용 메인함수 하나 만든다.

public static void main(String[] args) {
    System.out.println("구동완료!!!");
    
    var addr = new InetSocketAddress(9898);
    var server = SimpleFileServer.createFileServer(
        addr, Path.of("/"), SimpleFileServer.OutputLevel.INFO);
    server.start();
}

확인을 위해 9898 포트 새로 띄여보면 정상적으로 시작된걸 알수 있다.

끝!