[ https://issues.apache.org/jira/browse/KNOX-670?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15142070#comment-15142070 ]
Kevin Minder edited comment on KNOX-670 at 2/11/16 3:01 PM: ------------------------------------------------------------ For the next phase I'm considering allowing the mixing of <service> and <application> within a single topology as suggested by [~lmccay]. I originally restricted this because I was trying to solve the "single application topology" problem that arose with admin and knoxsso. I was also trying to avoid potential confusion between applications and services binding to the same paths. In addition, I want to ensure that an application could easily be made accessible at the root context of a topology. To illustrate, it should be possible to access to an application (conf/applications/sample.war) at the root of topology file (e.g. conf/topologies/sandbox.xml) as https://localhost:8443/gateway/sandbox. To support all of these use cases I'm considering adding a <context> (or possibly <url> or <path>) to <application> in the next iteration. The example below shows how an conf/topologies/sandbox.xml topology file might look: {code:xml} <topology> <application> <name>sample</name> <context>example</context> </application> </topology> {code} If this were topology file conf/topologies/sandbox.xml then this will result in the application conf/applications/sample.war being available at https://localhost:8443/gateway/sandbox/example. This could also be specified using a leading / as <context>/example</context> with the same result. In addition, specifying a blank or / for <context> could make the application available at the of the topology. This would result in the application being avialable at https://localhost:8443/gateway/sandbox as shown below. {code:xml} <topology> <application> <name>sample</name> <context>/</context> </application> </topology> {code} This will result in the conf/applications/sample.war being available at https://localhost:8443/gateway/sandbox There will need to be validation done to ensure that no two <context> settings within a given topology have the same value. In addition, I do not believe that a blank or / context should be allowed in a topology that also contains services as this may cause unexpected path binding results. It may even be required to force topologies with a root application to contain only that single application and no services. Unfortunatly the serlvet container's path matching rules are first match not best match based. A more complex topology conf/topologies/sandbox.xml might look like this: {code:xml} <topology> <gateway> <!-- Shiro authentication provider configuration --> </gateway> <application> <name>idp</name> <!-- conf/applications/idp.war (Shibboleth)--> <context>/sso</context> <!-- https://localhost:8443/gateway/sandbox/sso --> </application> <application> <name>knoxlogin</name> <!-- conf/applications/knoxlogin (i.e. directory) --> <context>/login</context> <!-- https://localhost:8443/gateway/sandbox/login --> </application> <application> <name>testpage</name> <!-- conf/applications/testpage.war --> <!-- https://localhost:8443/gateway/sandbox/testpage --> </application> <service> <role>WEBHDFS</role> <url>...</url> </service> </topology> {code} Note that if <context> is not present, as with the testpage example above, then the context defaults to name. I have also given consideration to making <name> optional in which case it will default to the name of the topology making simply <application/> possible. If this existed in conf/topologies/sample.xml it would effectivly represent what is shown below and make conf/applications/sample.war accessible at https://localhost:8443/gateway/sample {code:xml} <application> <name>sample</name> <context>/</context> </application> {code} was (Author: kminder): For the next phase I'm considering allowing the mixing of <service> and <application> within a topology as requested by [~lmccay]. I originally restricted this because I was trying to solve the "single application topology" and avoid potential confusion between applications and services trying to bind to the same paths. I particular I want to ensure that a testapp.war application can easily be made accessible from a topology file conf/topologies/sample.xml at https://localhost:8443/gateway/sample without any confusion. For the next phase I'm considering adding a <context> to <application>. {code} <topology> <application> <name>testapp</name> <context>example</context> </application> </topology> {code} This will result in the sample.war being available at https://localhost:8443/gateway/sample/example. This could also be specified as <context>/example</context>. However specifying a blank or / context will make the application available at the root. {code:xml} <topology> <application> <name>testapp</name> <context>/</context> </application> </topology> {code} This will result in the sample.war being available at https://localhost:8443/gateway/sample There will of course need to be validation done to ensure that no two <context> settings within a given topology have the same value. In addition I do not believe that a blank or root context should be allowed in a topology with mixed services and applications. So a more complex topology conf/topologies/sandbox.xml might now look like this: {code:xml} <topology> <gateway> ... </gateway> <application> <name>idp</name> <!-- conf/applications/idp.war (Shibboleth)--> <context>/sso</context> <!-- https://localhost:8443/gateway/sandbox/sso --> </application> <application> <name>knoxlogin</name> <!-- conf/applications/knoxlogin.war --> <context>/login</context> <!-- https://localhost:8443/gateway/sandbox/login --> </application> <application> <name>testpage</name> <!-- conf/applications/testpage.war --> <!-- https://localhost:8443/gateway/sandbox/testpage --> </application> <service> <role>WEBHDFS</role> <url>...</url> </service> </topology> {code} Note that if <context> is not present as with the testpage example then the context defaults to name. > Knox Should be able to Host Simple Web Apps > ------------------------------------------- > > Key: KNOX-670 > URL: https://issues.apache.org/jira/browse/KNOX-670 > Project: Apache Knox > Issue Type: Bug > Components: Server > Reporter: Larry McCay > Assignee: Kevin Minder > Fix For: 0.9.0 > > Attachments: KNOX-670_001.patch, KNOX-670_002.patch > > > I think that we need the ability to serve up arbitrary web app resources. > Given a conf/applications along side conf/topologies, we should be able to > spin up a simple application that can be used as a central login facility > with KnoxSSO, a management UI or any number of simple applications. -- This message was sent by Atlassian JIRA (v6.3.4#6332)