来自:http://www.k6k4.com/blog/show/aaaqtuv1y1547605773440
1.第一遍调试
第一遍就是打断点,然后查看调用栈,忽略过多的线程。
找到 CommunityEntryPoint,打一个断点,调试,不断F5进入,F6单步执行,F跳出。
-
new CommunityBootstrapper(),ServerBootstrapper.start(boot,args)
-
ServerBootstrapper
中的初始化关键代码:private GraphDatabaseDependencies dependencies = GraphDatabaseDependencies.newDependencies()
; 这个dependencies貌似来头很大。F5进入
public static GraphDatabaseDependencies newDependencies()
-
KernelExtensionFactory factory : Service.load( KernelExtensionFactory.class)
这段代码似乎跳不进去,反正最后得到了7个:0 = {LuceneKernelExtensionFactory@675} “KernelExtension:LuceneKernelExtensionFactory[lucene]”
1 = {LuceneSchemaIndexProviderFactory@679} “KernelExtension:LuceneSchemaIndexProviderFactory[lucene]”
2 = {NativeLuceneFusionSchemaIndexProviderFactory@680} “KernelExtension:NativeLuceneFusionSchemaIndexProviderFactory[lucene+native]”
3 = {BoltKernelExtension@681} “KernelExtension:BoltKernelExtension[bolt-server]”
4 = {ShellServerExtensionFactory@682} “KernelExtension:ShellServerExtensionFactory[shell]”
5 = {UdcKernelExtensionFactory@683} “KernelExtension:UdcKernelExtensionFactory[kernel udc]”
6 = {JmxExtensionFactory@684} “KernelExtension:JmxExtensionFactory[kernel jmx]” -
List<QueryEngineProvider> queryEngineProviders = asList( Service.load( QueryEngineProvider.class ) );
这段代码和前面一样,不过加载的是查询引擎的的class,我们暂且跳过!
-
return new GraphDatabaseDependencies( null, null, new ArrayList<>(), kernelExtensions,)
-
-
ServerBootstrapper.start( Bootstrapper boot, String... argv )
1. `CommunityBootstrapper(AbstractNeoServer).start`
1. `server = createNeoServer( config, dependencies, userLogProvider );`
1. `new CommunityNeoServer( config, dependencies, logProvider );`
// 初始化很多属性
protected abstract WebServer createWebServer();
// 放在代码后面的属性
private final Dependencies dependencyResolver = new Dependencies( new Supplier<DependencyResolver>()
{
@Override
public DependencyResolver get()
{
Database db = dependencyResolver.resolveDependency( Database.class );
return db.getGraph().getDependencyResolver();
}
} );