For example, I have a single OFBiz running for multiple users with different domain names. I use the multi-tenant feature to separate domain name and database for the multiple users. I would like to separate the user sites with different webapps, also different mount points. I think instead of I have to write about 10 lines of code in the index.jsp file, I only just add the domain name and initial path into the database. I think it would be easier.
Regards, Chatree Srichart On Wed, Nov 10, 2010 at 12:10 PM, Scott Gray <scott.g...@hotwaxmedia.com>wrote: > Thanks Chatree, that document explains what it does but it doesn't explain > why it is needed. The index.jsp file in each webapp currently does exactly > what you've described so I guess I don't understand why we need something > specifically for multi-tenant here? > > Regards > Scott > > On 10/11/2010, at 6:02 PM, Chatree Srichart wrote: > > > I wrote the wiki for the intial path concept: > > https://cwiki.apache.org/confluence/display/OFBIZ/Multitenancy+support > > You can see at the bottom of page called "Setting the initial path > according > > to domain name". > > > > Regards, > > Chatree Srichart > > > > On Wed, Nov 10, 2010 at 11:55 AM, Scott Gray <scott.g...@hotwaxmedia.com > >wrote: > > > >> Hi Chatree, > >> > >> Perhaps if you could explain the purpose of the initialPath and a use > case > >> for it then I might be able to offer some suggestions but without that I > >> don't really understand the problem you are trying to solve. > >> > >> How are you handling this problem for webapps that aren't mounted at > root? > >> > >> Thanks > >> Scott > >> > >> HotWax Media > >> http://www.hotwaxmedia.com > >> > >> On 10/11/2010, at 5:35 PM, Chatree Srichart wrote: > >> > >>> Hi Scott Gray, > >>> > >>> I found this solution: > >>> > >>> Index: framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>> =================================================================== > >>> --- framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>> (revision 1033345) > >>> +++ framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>> (working copy) > >>> @@ -196,6 +196,8 @@ > >>> } > >>> > >>> // test to see if we have come through the control servlet > >> already, > >>> if not do the processing > >>> + String requestPath = null; > >>> + String contextUri = null; > >>> if (request.getAttribute(ContextFilter.FORWARDED_FROM_SERVLET) > == > >>> null) { > >>> // Debug.logInfo("In ContextFilter.doFilter, > >>> FORWARDED_FROM_SERVLET is NOT set", module); > >>> String allowedPath = > config.getInitParameter("allowedPaths"); > >>> @@ -208,7 +210,7 @@ > >>> > >>> if (debug) Debug.log("[Request]: " + > >>> httpRequest.getRequestURI(), module); > >>> > >>> - String requestPath = httpRequest.getServletPath(); > >>> + requestPath = httpRequest.getServletPath(); > >>> if (requestPath == null) requestPath = ""; > >>> if (requestPath.lastIndexOf("/") > 0) { > >>> if (requestPath.indexOf("/") == 0) { > >>> @@ -234,7 +236,7 @@ > >>> if (httpRequest.getPathInfo() != null) { > >>> contextUriBuffer.append(httpRequest.getPathInfo()); > >>> } > >>> - String contextUri = contextUriBuffer.toString(); > >>> + contextUri = contextUriBuffer.toString(); > >>> > >>> // Verbose Debugging > >>> if (Debug.verboseOn()) { > >>> @@ -288,10 +290,11 @@ > >>> GenericValue tenant = EntityUtil.getFirst(tenants); > >>> String tenantId = tenant.getString("tenantId"); > >>> > >>> - // if the request URI is "/control/main" then > >> redirect > >>> to the initial path > >>> - if > >>> (httpRequest.getRequestURI().startsWith("/control/main")) { > >>> + // if the request path is a root mount then > redirect > >> to > >>> the initial path > >>> + if (UtilValidate.isNotEmpty(requestPath) && > >>> requestPath.equals(contextUri)) { > >>> String initialPath = > >>> tenant.getString("initialPath"); > >>> > >>> ((HttpServletResponse)response).sendRedirect(initialPath); > >>> + return; > >>> } > >>> > >>> // make that tenant active, setup a new delegator > and > >> a > >>> new dispatcher > >>> > >>> Could you approve this solution, please? > >>> > >>> Regards, > >>> Chatree Srichart > >>> > >>> On Wed, Nov 10, 2010 at 10:17 AM, Chatree Srichart < > >>> chatree.srich...@gmail.com> wrote: > >>> > >>>> Hi Scott Gray, > >>>> May I ask you some suggestion? Is there anyway to handle the root > mount > >>>> point when an user enter only domain name in a web browser. The > purpose > >> of > >>>> this code is I need to handle the first URI after an user enter only > >> domain > >>>> name on a web browser and redirect to the initial path that be > specified > >> in > >>>> the Tenant entity. > >>>> > >>>> Regards, > >>>> Chatree Srichart > >>>> > >>>> > >>>> On Wed, Nov 10, 2010 at 3:00 AM, Scott Gray < > scott.g...@hotwaxmedia.com > >>> wrote: > >>>> > >>>>> On 9/11/2010, at 10:14 PM, hans...@apache.org wrote: > >>>>> > >>>>>> Author: hansbak > >>>>>> Date: Tue Nov 9 09:14:33 2010 > >>>>>> New Revision: 1032896 > >>>>>> > >>>>>> URL: http://svn.apache.org/viewvc?rev=1032896&view=rev > >>>>>> Log: > >>>>>> removing the tenant servlet because that gave a problem with the > root > >>>>> mountpoint defined twice in systems which already use the root mount > >> point > >>>>>> > >>>>>> Removed: > >>>>>> > >>>>> > >> > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/TenantServlet.java > >>>>>> Modified: > >>>>>> > >>>>> > >> > ofbiz/trunk/framework/catalina/src/org/ofbiz/catalina/container/CatalinaContainer.java > >>>>>> > >>>>> > >> > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>>>>> > >>>>>> > >>>>>> Modified: > >>>>> > >> > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>>>>> URL: > >>>>> > >> > http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java?rev=1032896&r1=1032895&r2=1032896&view=diff > >>>>>> > >>>>> > >> > ============================================================================== > >>>>>> --- > >>>>> > >> > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>>>> (original) > >>>>>> +++ > >>>>> > >> > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ContextFilter.java > >>>>> Tue Nov 9 09:14:33 2010 > >>>>>> @@ -288,6 +288,12 @@ public class ContextFilter implements Fi > >>>>>> GenericValue tenant = > EntityUtil.getFirst(tenants); > >>>>>> String tenantId = tenant.getString("tenantId"); > >>>>>> > >>>>>> + // if the request URI is "/control/main" then > >>>>> redirect to the initial path > >>>>>> + if > >>>>> (httpRequest.getRequestURI().startsWith("/control/main")) { > >>>>>> + String initialPath = > >>>>> tenant.getString("initialPath"); > >>>>>> + > >>>>> ((HttpServletResponse)response).sendRedirect(initialPath); > >>>>>> + } > >>>>>> + > >>>>>> // make that tenant active, setup a new delegator > >>>>> and a new dispatcher > >>>>>> String tenantDelegatorName = > >>>>> delegator.getDelegatorBaseName() + "#" + tenantId; > >>>>>> > >>>>> httpRequest.getSession().setAttribute("delegatorName", > >> tenantDelegatorName); > >>>>> > >>>>> Hi Hans, > >>>>> > >>>>> You should always return after sending a redirect or otherwise the > >> request > >>>>> continues to be processed. > >>>>> > >>>>> Also, I'm not sure what the /control/main redirect is for but keep in > >> mind > >>>>> that the framework shouldn't really know anything about URIs like > that > >> and > >>>>> depending on them decreases flexibility. "control" is just a url > >> pattern > >>>>> defined in each webapp's web.xml and can be changed to anything and > >> there is > >>>>> no requirement for each application to have a "main" request. The > only > >>>>> reason "main" is the default page is because each webapp's index.jsp > >>>>> redirects to it. > >>>>> > >>>>> Regards > >>>>> Scott > >>>>> > >>>>> > >>>> > >> > >> > >