YARN-6626, there is a desire to have ability to run ApiServer REST API in Resource Manager, this can eliminate the requirement to deploy another daemon service for submitting docker applications. In YARN-5698, a new UI has been implemented as a separate web application. There are some problems in the arrangement that can cause conflicts of how Java session are being managed. The root context of Resource Manager web application is /ws. This is hard coded in startWebapp method in ResourceManager.java. This means all the session management is applied to Web URL of /ws prefix. /ui2 is independent of /ws context, therefore session management code doesn't apply to /ui2. This could be a session management problem, if servlet based code is going to be introduced into /ui2 web application.
ApiServer code base is designed as a separate web application. There is no easy way to inject a separate web application into the same /ws context because ResourceManager is already setup to bind to RMWebServices. Unless ApiServer code is moved into RMWebServices, otherwise, they will not share the same session management.
The alternate solution is to keep ApiServer prefix URL independent of /ws context. However, this will be a departure from YARN web services naming convention. This can be loaded as a separate web application in Resource Manager jetty server. One possible proposal is /app/v1/services. This can keep ApiServer code modular and independent from Resource Manager.