Type: New Feature
Affects Version/s: 2.0-M4, 2.0-FINAL
Fix Version/s: 2.1.2
Environment:Apache Web Server, Apache Jakarta Tomcat and mod_jk or mod_jk2 connectors
This Issue is to implement True Virtual Portals
The Apache Web server implements Web virtual hosting in two ways: IP-based virtual hosting and name-based virtual hosting. With name-based, the Web server listens on the IP addresses configured on the host, and serves resources from the relevant Web site based on HTTP request headers from the Web client.
When Apache Web server is connected to Tomcat via a mod_jk or mod_jk2 connector, a host, port and a worker are specified in a properties file (ex. localhost at 8009 with ajp) and are associated to uri contexts (ex. www.foo.com/portal/*).
We have a requirement to set up many (ex. 100+) virtual hosts on Apache Web server, and one host, port, and worker for many uri contexts in the connector. This is what we have done for other web applications. Each web application can have a different host and port but the same web application must only have one instance (ex. one host and port) for many different Apache Web server virtual hosts (ex. Web sites).
Thus we would like to set many virtual hosts to have one host and port for the ajp worker in the connector properties file that points to the running instance of Jetspeed 2. Of course there will be many uri contexts because there are many virtual hosts (sometimes several contexts per host). For each virtual host, there should be a virtual portal. A virtual portal should be able to have a customizable view look and feel, customizable configuration of displayed/included portlets, and a differentiated set of users. Of course, if this is not all possible in M4, you could just make the customizable view look and feel and customizable list of displayed/included portlets a goal and set the differentiated users for a later milestone.
I have seen this done in the past with other open source projects. For example, OFBiz ( www.ofbiz.com ) embeds Tomcat and, in one instance, it can run N number of online stores. Each virtual store has a customizable look and feel and has users, product catalogs and orders differentiated. I am familiar with how this app does it so I will explain it as a possible approach to this requirement.
If you log into the ofbiz catalog administration and create a "new store" you can configure it with different view template files, default name and other differentiating elements. Then you need to log into content administration and create a "new website" and associate it to the store id created earlier.
Then with the app shut down, you copy a webapp directory ofbiz called "ecommerce" and rename it to something like "ecommerce1". Then you do the following 3 config edits:
1) Edit the WEB-INF/web.xml file in the recently copied and renamed ecommerce1 as follows:
<description>A unique ID used to look up the WebSite entity to get information about catalogs, etc.</description>
2) Edit the ofbiz-component.xml file in components/ecommerce/ and add the new webapp context as follows:
3) Edit the ofbiz-component.xml file in components/ecommerce/ and change the new webapp context you just added to make the mount point /store and add a virtual host element as follows:
With this approach, the goals are accomplished with one instance. The OFBiz instance knows which webapp, location="webapp/ecommerce1", is associated to <virtual-host host-name="www.foo.com"/> and that mount-point="/store"
Hope this helps!
By the way this is the url for the ofbiz MIT Open Source license: