바람둥이 작동의 내부를 배우고 흐름을 이해하고 싶습니다. 이를 위해 바람둥이 소스로 들어가는 방법?
나는 서블릿 생성 -public class TestServlet extends HttpServlet {
//Breakpoint set on constructor
public TestServlet() {
}
}
나는 소스 조회 디렉토리에 바람둥이 소스 코드를 포함하고 디버그 모드에서 서버를 출시했다. 당신이 바람둥이가 TestServlet
의 초기화를 처리 할 수있는 새로운 데몬 스레드를 시작 볼 수 있듯이
Daemon Thread [localhost-startStop-1] (Suspended (entry into method <init> in TestServlet))
owns: StandardWrapper (id=39)
owns: StandardContext (id=40)
TestServlet.<init>() line: 12
NativeConstructorAccessorImpl.newInstance0(Constructor, Object[]) line: not available [native method]
NativeConstructorAccessorImpl.newInstance(Object[]) line: 39
DelegatingConstructorAccessorImpl.newInstance(Object[]) line: 27
Constructor<T>.newInstance(Object...) line: 513
Class<T>.newInstance0() line: 355
Class<T>.newInstance() line: 308
DefaultInstanceManager.newInstance(String) line: 138
StandardWrapper.loadServlet() line: 1144
StandardWrapper.load() line: 1088
StandardContext.loadOnStartup(Container[]) line: 5123
StandardContext.startInternal() line: 5407
StandardContext(LifecycleBase).start() line: 150
ContainerBase$StartChild.call() line: 1559
ContainerBase$StartChild.call() line: 1549
FutureTask$Sync.innerRun() line: 303
FutureTask<V>.run() line: 138
ThreadPoolExecutor$Worker.runTask(Runnable) line: 886
ThreadPoolExecutor$Worker.run() line: 908
Thread.run() line: 662
- 디버거 내 중단 점에서 멈출 때 다음은 스택 추적입니다. 내가이 위치에서 벗어나면 달려 가서 실행을 멈추고 멈출 것이다. 그러나 주 서버 논리를 이해하고 싶습니다. org.apache.catalina.startup.Bootstrap
클래스로 들어가려면 어떻게해야합니까? (또는 기본 시작 스레드에서 실행되는 다른 클래스)
어떻게 디버그 모드에서 서버를 실행합니까? Eclipse의 "서버"를 사용합니까? 아니면 독립 실행 형 응용 프로그램으로 실행합니까? – jmruc
http://stackoverflow.com/questions/975271/remote-debugging-a-java-application을 참조하십시오. 하지만 문제는 부트 스트랩 (Bootstrap) 클래스에 중단 점을 넣으려고 했습니까? – jmruc
Eclipse에서 Ctrl + Shift + T를 누르고 클래스 이름을 작성한 다음 열어 자신의 코드와 같이 중단 점을 배치하십시오. – jmruc