With JCo3 the connection management concept has changed and is now completely done within the JCo framework. So there are no connection related APIs in JCo3 anymore and therefore also the pool management is now completely done internally.
Just delete everything that is related to old JCO.Client, JCO.Pool and JCO.PoolManager instances and use the new JCoDestination object now which is not an equivalent to a physical connection anymore like JCO.Client was. A JCoDestination reflects an RFC target instead. This is similar to the RFC destinations (SM59) in an ABAP system.
Connection pooling is defined in the destination's configuration settings and managed by the JCo3 framework automatically. No need to take for the developer, this can be easily setup and modified by an administrator later without any code change.
For the server related stuff, do not extend any internal JCo runtime class. Please use the interfaces from the API only, For servers you have to set the appropriate handlers, e.g. with JCoServer.setCallHandlerFactory(JCoServerCallHandlerFactory). Here you have to implement the appropriate interface, e.g. JCoServerFunctionHandlerFactory, or use the default factory implementation and register your own handlers there, The handleRequest() method is defined in the interface JCoServerFunctionHandler. You have to implement this one. Please see the JCo JavaDoc for further info.
The same applies to the JCoIDocServer and the IDoc handlers from the JIDocLib 3.0.
If you really need an IDocRepository this can be fetched by calling JCoIDoc.getIDocRepository(JCoDestination). But usually you don't need this and I guess you are on the wrong path here. Which repository a server should use is simply better defined in its configuration, namely with property jco.server.repository_destination.
And finally:
The equivalent method to IDoc.Document.getName() is:
IDocDocument.getRecordMetaData().getName()
Hopefully this answers all your questions.
Best regards,
Stefan