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