복붙노트

[SPRING] 왜이 자바 동적 웹 프로젝트에서 어떤 주요 방법을 볼 수 없습니까?

SPRING

왜이 자바 동적 웹 프로젝트에서 어떤 주요 방법을 볼 수 없습니까?

나는 웹 서비스가 어떻게 작동하는지 이해하려고 노력했으며이 튜토리얼을 보았습니다.

이제는 엔터프라이즈 애플리케이션에서 스프링이 사용되는 것을 보았습니다. 주요 방법이 어디에 있으며 모든 것이 어떻게 작동하는지 궁금해했습니다. 그리고 스프링 튜토리얼에 갈 때마다 그들은 beanFactory와 Contexts로 시작할 것이고, 무엇이 아니라면, 메인 자바 메소드에서 그리고 필요에 따라 빈을 계속 가져올 것입니다. 이것은 응용 프로그램에서 볼 수있는 것과 완전히 다릅니다.

누군가가 스프링이 정확히이 경우 어떻게 작동하는지 말해 줄 수 있습니까? 호출 순서는 무엇입니까? 나는 어딘가에 숨겨진 주된 방법이있을 것이라고 생각하지만 나는 그것에 대해 확신하지 못한다.

일반적으로 커맨드 라인에서 간단한 자바 프로젝트를 실행한다면 java mainClass를 사용합니다. 이제 어떻게 될까요?

감사

해결법

  1. ==============================

    1.웹 응용 프로그램에는 주 기능이 없습니다. 실행중인 '프로그램'은 실제로 웹 컨테이너 (Apache Tomcat, Glassfish, JBoss, Weblogic 등)이며 해당 프로그램은 사용자가 배포 한 웹 응용 프로그램을 서비스합니다. Java 웹 환경이 무엇인지 배우고 이해하려면 JEE 자습서를 읽는 것이 좋습니다.

    웹 응용 프로그램에는 주 기능이 없습니다. 실행중인 '프로그램'은 실제로 웹 컨테이너 (Apache Tomcat, Glassfish, JBoss, Weblogic 등)이며 해당 프로그램은 사용자가 배포 한 웹 응용 프로그램을 서비스합니다. Java 웹 환경이 무엇인지 배우고 이해하려면 JEE 자습서를 읽는 것이 좋습니다.

    https://docs.oracle.com/javaee/7/tutorial/

  2. ==============================

    2.여전히 주요한 방법이 있습니다. 응용 프로그램 개발자가 작성한 것이 아니라 컨테이너 개발자가 작성한 것입니다.

    여전히 주요한 방법이 있습니다. 응용 프로그램 개발자가 작성한 것이 아니라 컨테이너 개발자가 작성한 것입니다.

    다음과 같이 디버거를 사용하여 main 메소드를 호출 할 수 있습니다.

    다음은 부두가있는 예입니다.

    이를 보시려면 응용 프로그램의 메인 스레드를 얻을 수 있도록 초기화 메소드에 중단 점을 넣어야합니다.

    초기화 메소드 대신 요청 처리에 중단 점을두면 main ()이 아닌 스택 추적의 맨 아래에 Thread.run ()이 표시됩니다.

    Thread.run ()은 주 스레드가 아닌 다른 스레드의 main 메소드와 동일합니다.

    그래서 main 메소드는 여전히 존재합니다. 단지 컨테이너 레벨에서 처리됩니다.

  3. ==============================

    3.명시적인 주 방법은 웹 프로젝트이기 때문에 표시되지 않습니다. 이 프로젝트는 웹 서버 / 서블릿 컨테이너에 배포되는 웹 응용 프로그램 아카이브 (WAR) 파일에 빌드됩니다. 이 튜토리얼의 Tomcat.

    명시적인 주 방법은 웹 프로젝트이기 때문에 표시되지 않습니다. 이 프로젝트는 웹 서버 / 서블릿 컨테이너에 배포되는 웹 응용 프로그램 아카이브 (WAR) 파일에 빌드됩니다. 이 튜토리얼의 Tomcat.

    웹 애플리케이션은 주요 메소드를 포함 할 필요가 없습니다. 웹 애플리케이션 내에서 명시 적으로 Java 프로세스를 시작할 필요가 없기 때문입니다. 깊이있는 곳에서 Tomcat은 빌드 된 코드의 주요 메소드를 호출합니다. 이것은 서버 시작시 발생합니다.

    그런 다음 들어오는 HTTP 호출에 코드를 바인딩하지만 새로운 프로세스는 시작하지 않습니다. 오히려 새로운 스레드를 시작합니다.

  4. ==============================

    4.웹 응용 프로그램은 독립형 응용 프로그램이 아니며, 일부 응용 프로그램에서 실행되므로 java 컨텍스트에서 servletContainer라는 이름을 사용하므로 모든 웹 응용 프로그램의 기본 메서드 또는 Java 프로세스 (os)가 없습니다. 그것들은 OS 런타임에서 main 메소드와 java 프로세스가있는 컨테이너에 배포됩니다.

    웹 응용 프로그램은 독립형 응용 프로그램이 아니며, 일부 응용 프로그램에서 실행되므로 java 컨텍스트에서 servletContainer라는 이름을 사용하므로 모든 웹 응용 프로그램의 기본 메서드 또는 Java 프로세스 (os)가 없습니다. 그것들은 OS 런타임에서 main 메소드와 java 프로세스가있는 컨테이너에 배포됩니다.

  5. from https://stackoverflow.com/questions/20900098/why-dont-i-see-any-main-method-in-this-java-dynamic-web-project by cc-by-sa and MIT license