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 instead which is not an equivalent to a physical connection anymore like JCO.Client was. A JCoDestination represents an RFC target instead. This is similar to the RFC destinations in an ABAP system (maintained with transaction SM59).
Connection pooling is defined in the destination's configuration settings and is managed by the JCo3 framework automatically. No need to take for the developer. Pooling 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.
For TID management there is also a separate handler: the JCoServerTIDHandler which is set using method JCoServer.setTIDHandler(JCoServerTIDHandler).
The same applies to the JCoIDocServer and the IDoc handlers from the JIDocLib 3.0.
If you need an IDocRepository this can be fetched by calling JCoIDoc.getIDocRepository(JCoDestination). But usually you don't need this for a pure JCoIDocServer implementation. Which repository a server should use is simply better defined in its configuration, namely with property jco.server.repository_destination.
An IDocRepository is only needed for creating a new IDoc from scratch.
And finally:
The equivalent method to IDoc.Document.getName() is:
IDocDocument.getRecordMetaData().getName()
Hopefully this answers all your questions.
Best regards,
Stefan