https://issues.apache.org/bugzilla/show_bug.cgi?id=47799

           Summary: Domain does not work in Membership and
                    DomainFilterInterceptor.
           Product: Tomcat 6
           Version: 6.0.20
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Cluster
        AssignedTo: dev@tomcat.apache.org
        ReportedBy: fujino.keii...@oss.ntt.co.jp


--- Comment #0 from Keiichi Fujino <fujino.keii...@oss.ntt.co.jp> 2009-09-08 
02:39:42 PDT ---
I used domain ="{1,2,3,4}" as follows by the Cluster configuration. 
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
    channelSendOptions="6">
...
<Membership className="org.apache.catalina.tribes.membership.McastService"
    address="228.0.0.4" port="45564" frequency="500" dropTime="3000"
    domain="{1,2,3,4}"/>
...
<Interceptor
className="org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor"
 
    domain="{1,2,3,4}"/>
...
</Cluster>

However, domain does not work in Membership and DomainFilterInterceptor.

The type of instance variable domain of
org.apache.catalina.tribes.membership.McastService
and org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor is
byte array.

org.apache.tomcat.util.IntrospectionUtils#setProperty is invoked 
in org.apache.tomcat.util.digester.SetPropertyRule#begin. 
However, 

Because byte array property is not supported in
org.apache.tomcat.util.IntrospectionUtils#setProperty, 
McastService#setDomain(byte array) and DomainFilterInterceptor#setDomain(byte
array) is never invoked. 

As a result, domain can not set, and domain is always null.

There are two workarounds as follows.
1:org.apache.tomcat.util.IntrospectionUtils#setProperty supports byte array
property.

2:Prepares setDomain(String) method for McastService and
DomainFilterInterceptor.
  Invoke setDomain(byte array) from setDomain(String).
  This is the same way as org.apache.catalina.tribes.membership.StaticMember. 

I think that it is easy to prepare setDomain(String) method.
I made the patch. 

McastService's patch against tomcat_trunk.
[start.]
Index: java/org/apache/catalina/tribes/membership/McastService.java
===================================================================
--- java/org/apache/catalina/tribes/membership/McastService.java    (revision
787304)
+++ java/org/apache/catalina/tribes/membership/McastService.java    (working
copy)
@@ -30,6 +30,7 @@
 import org.apache.catalina.tribes.MessageListener;
 import org.apache.catalina.tribes.io.ChannelData;
 import org.apache.catalina.tribes.io.XByteBuffer;
+import org.apache.catalina.tribes.util.Arrays;
 import org.apache.catalina.tribes.util.StringManager;
 import org.apache.catalina.tribes.util.UUIDGenerator;

@@ -607,6 +608,12 @@
         }
     }

+    public void setDomain(String domain) {
+        if ( domain == null ) return;
+        if ( domain.startsWith("{") ) setDomain(Arrays.fromString(domain));
+        else setDomain(Arrays.convert(domain));
+    }
+
     /**
      * Simple test program
      * @param args Command-line arguments

[end.]

DomainFilterInterceptor's patch against tomcat_trunk.
[start.]
Index:
java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java
===================================================================
---
java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java
   (revision 763870)
+++
java/org/apache/catalina/tribes/group/interceptors/DomainFilterInterceptor.java
   (working copy)
@@ -97,4 +97,13 @@
     public void setDomain(byte[] domain) {
         this.domain = domain;
     }
+
+    public void setDomain(String domain) {
+        if ( domain == null ) return;
+        if (domain.startsWith("{"))
+           
setDomain(org.apache.catalina.tribes.util.Arrays.fromString(domain));
+        else
+            setDomain(org.apache.catalina.tribes.util.Arrays.convert(domain));
+    }
+
 }

[end.]


Best regards.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to