继上一讲 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;
}
最终调试结束