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

Reply via email to