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 > >>> > >>> > >> > >