继上一讲 Idea中tocmat启动 源码调试,如何进入到tomcat内部进行调试?
这一节主要是继续下面的调试过程
第一步:

上调试图最直接
继续第二步:

源头是:

第三步继续:

第四步:

第五步:

第六步:

继续分析

缓存

初始化DataSource

在创建bean的时候,需要把bean的方法 属性也一起创建了

在使用mybatis-plus的时候,会打印如下信息,弄清楚 mybatis-plus init success是如何打印出来的?

最终调试发现: 注册bean的时候调用了构造函数 2020年8月16日


但是tomcat启动的那个还是找不到在哪里打印出来的!


在调试tomcat启动的时候,始终发现有那么一行字
Connected to Server 死活找不到,最终才发现



通过下载jdk的源码分析可得
/*
* Class: java_net_DualStackPlainSocketImpl
* Method: accept0
* Signature: (I[Ljava/net/InetSocketAddress;)I
*/
JNIEXPORT jint JNICALL Java_java_net_DualStackPlainSocketImpl_accept0
(JNIEnv *env, jclass clazz, jint fd, jobjectArray isaa) {
int newfd, port=0;
jobject isa;
jobject ia;
SOCKETADDRESS sa;
int len = sizeof(sa);
memset((char *)&sa, 0, len);
newfd = accept(fd, (struct sockaddr *)&sa, &len);
if (newfd == INVALID_SOCKET) {
if (WSAGetLastError() == -2) {
JNU_ThrowByName(env, JNU_JAVAIOPKG "InterruptedIOException",
"operation interrupted");
} else {
JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException",
"socket closed");
}
return -1;
}
ia = NET_SockaddrToInetAddress(env, (struct sockaddr *)&sa, &port);
isa = (*env)->NewObject(env, isa_class, isa_ctorID, ia, port);
(*env)->SetObjectArrayElement(env, isaa, 0, isa);
return newfd;
}
最终调试结束
本文详细介绍了在Idea中进行Tomcat启动源码调试的过程,包括如何进入Tomcat内部进行调试,分析mybatis-plus初始化成功信息的打印原理,以及在调试过程中遇到的Connected to Server信息来源的探索。
1万+





