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

Reply via email to