작은 바퀴 하나. - express 를 모방 한 자바 서버.

2212 단어 Webjettyexpress.java
앞서 자바 프로젝트 인 MockSocks 를 만 들 었 는데 UI 를 만 들 려 면 Swing 으로 사실 적 으로 low 하고 힘 들 었 습 니 다. 전단 동료 와 node - webkit 에 대해 이야기 하 는 것 이 좋 았 습 니 다.그러나 나의 대부분의 업 무 는 자바 에 있 기 때문에 자바 와 js 의 통신 문제 와 관련된다.
물론 가장 많이 사용 되 는 해결 방안 은 자바 로 웹 백 엔 드 를 쓰 는 것 이다.그러나 이렇게 해결 하 는 것 은 너무 무 겁 습 니 다. 대부분의 시간 을 웹 설정 에 써 야 합 니 다. 마지막 으로 하나의 용 기 를 사용 하여 시작 해 야 합 니 다. 프로그램 프로 세 스 도 제 가 제어 할 수 없습니다.
사실 JMX 의 제어 방식 을 좋아 하 는데 다른 언어 로 연결 하 는 것 은 비용 이 좀 비싸다.그래서 JMX 방식 대로 웹 서버 를 쓰 고 응용 프로그램 에 삽입 하려 고 합 니 다.Jetty 를 직접 사용 하면 너무 원생 태 적 입 니 다. URL 경로 / 매개 변수 맵 과 전환 은 항상 해 야 합 니 다. 그래서 express 의 문법 을 참고 하여 아주 작은 웹 프레임 워 크 express. 자바 가 있 습 니 다.
원래 야심 차게 netty 로 직접 써 야 하 는데 나중에 어색 한 점 을 만 났 습 니 다. 자신 이 HttpMessage 류 를 쓰 면 API 를 디자인 하 는 것 이 번 거 롭 고 디자인 을 잘 하 는 데 시간 이 필요 합 니 다.HttpServletRequest / Response 를 다시 사용 하려 면 실현 하기 가 너무 힘 듭 니 다.그래서 제 티 로 직접 썼 고 바퀴 를 다시 만 들 지 않 았 어 요.
웹 프레임 워 크 는 이미 한우충동 의 지경 에 이 르 렀 기 때문에 누구 와 도 비교 하고 싶 지 않 고 자신의 요 구 를 완성 하면 충분 하 다.이 물건 은 servlet 규범 (HttpServletRequest / Response 두 대상 이 servlet 3.0 기반) 을 지원 하지 않 습 니 다. 간단 한 것 을 원 합 니 다.
이 웹 서버 는 프로그램 내 에서 시작 하여 UrlRouter 로 경 로 를 완성 하고 해당 하 는 Controller 로 이동 할 수 있 습 니 다.비교적 큰 특징 은 동적 으로 컨트롤 러 와 맵 을 추가 하 는 것 을 지원 하 는 것 으로 새로 추가 하 는 데 매우 편리 하 다.예 를 들 어 저 는 service 에 상태 가 있 습 니 다 count. 그러면 저 는 이렇게 쓸 수 있 습 니 다.

public class ServiceMonitor {

private int count;

private WebServer webServer;

public ServiceMonitor(WebServer webServer) {
    this.webServer = webServer;
    monitor();
}

private void monitor() {
    webServer.get("/service/count", new AjaxController() {
        @Override
        public Object ajax(ParamMap params) {
            return ResultMap.create().put("count", count);
        }
    });
}

public static void main(String[] args) throws Exception {
    WebServer server = WebServer.jettyServer().port(8080);
    ServiceMonitor serviceMonitor = new ServiceMonitor(server);
    server.start();
    for (int i = 0; i < 1000; i++) {
        serviceMonitor.count = i;
        Thread.sleep(1000);
    }
}
}

물론 이렇게 분산 식 분 배 는 url 의 관리 문 제 를 가 져 올 수 있 지만 작은 프로젝트 는 더욱 편리 할 것 입 니 다.이 걸 로 웹 애플 리 케 이 션 을 쓸 생각 은 없 었 기 때문에 현재 의 포 지 셔 닝 은 이 렇 습 니 다.

좋은 웹페이지 즐겨찾기