你好, 我手动的ehcache.xml 设定如下,
Code:
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
rmiUrls=//host2d:11105/userCache"/> (另一台是host2e)
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost, port=11105,
socketTimeoutMillis=2000"/>
在这个环境下, 我设计是能够将两台的cache透过程式来同步.
cache.put(new Element(userId, userName), flase);
但如果我将我的ehcache.xml 设定改为以下就不能同步了
Code:
<cacheManagerPeerProviderFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=automatic, multicastGroupAddress=239.250.81.5,
multicastGroupPort=31101, timeToLive=32"/>(其实timeToLive 我已经试了0 ,1 ,16 ,32 ,64 ,128 ,255也不行)
<cacheManagerPeerListenerFactory
class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=localhost, port=11105,
socketTimeoutMillis=2000"/>
而我也用了java写了一个multicast程式确定了239.250.81.5:31101这个multicast ip, port 是能正常运作的.
Code:
package web.util;
import java.io.*;
import java.net.*;
public class MulticastListener {
public void main() {
String ip = "239.250.81.5";
String name = "1234";
int port = 31101;
try {
InetAddress group = InetAddress.getByName(ip);
MulticastSocket s = new MulticastSocket(port);
s.joinGroup(group);
String msg = name;
System.out.println("Sending out: "+msg);
DatagramPacket data = new DatagramPacket(
msg.getBytes(), msg.length(), group, port);
s.send(data);
byte[] buffer = new byte[10*1024];
data = new DatagramPacket(buffer, buffer.length);
while (true) {
s.receive(data);
System.out.println("Received: "+
(new String(buffer, 0, data.getLength())));
}
} catch (IOException e) {
System.out.println("Error: "+ e.toString());
}
}
}
可麻烦帮忙看看是否那里出了问, 谢谢
也附上整个ehcaceh.xml