Chris
--
You received this message because you are subscribed to the Google Groups "Hazelcast" group.
To post to this group, send email to haze...@googlegroups.com.
To unsubscribe from this group, send email to hazelcast+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/hazelcast?hl=en.
Hello,
I've experienced the same issue, but maybe i've got a different setup:
I use hazelcast both to achieve Jetty session clustering (map: sessionMap) and to store two different maps: users and emailTokens.
I separately launch an hazelcast server, then I launch jetty and I connect to hazelcast as a client both from web.xml (for Session Clustering)
<init-param>
<param-name>use-client</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>client-config-location</param-name>
<param-value>/WEB-INF/hazelcast-client.properties</param-value>
</init-param>
hazelcast.client.addresses= 127.0.0.1
hazelcast.client.connection.attempts.limit = 3
hazelcast.client.connection.timeout = 30000
hazelcast.client.group.name = dev
hazelcast.client.group.pass = dev-pass
hazelcast.client.reconnection.attempts.limit = 5
hazelcast.client.reconnection.timeout = 5000
hazelcast.client.shuffle.addresses = false
hazelcast.client.update.automatic = true
and from java logic (to manage users and emailTokens maps):
public HazelcastInstance getConnection() {
ClientConfig clientConfig = new ClientConfig();
clientConfig.addAddress("127.0.0.1:5701");
clientConfig.getGroupConfig().setName("dev").setPassword("dev-pass");
HazelcastInstance client = HazelcastClient.newHazelcastClient(clientConfig);
return client;
}
When a user logs in, an HazelcastUser object is put in the Hazelcast map <Integer, HazelcastUser> users (it works); after login, when a user connects to the system its status is set Online.
public HazelcastUser setIsOnline(Integer idUser, boolean online){
HazelcastInstance hz = dataSource.getConnection();
Map<Integer, HazelcastUser> users = hz.getMap("users");
HazelcastUser currentUser = users.get(idUser);
currentUser.setOnline(online);
users.put(idUser, currentUser);
return currentUser;
}
but when this method is called i get:
com.hazelcast.nio.HazelcastSerializationException: Problem when serializing type 1
at com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:128)
at com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:156)
at com.hazelcast.client.ClientThreadContext.toObject(ClientThreadContext.java:72)
at com.hazelcast.client.IOUtil.toObject(IOUtil.java:34)
at com.hazelcast.client.ProxyHelper.getValue(ProxyHelper.java:186)
at com.hazelcast.client.ProxyHelper.doOp(ProxyHelper.java:146)
at com.hazelcast.client.ProxyHelper.doOp(ProxyHelper.java:140)
at com.hazelcast.client.MapClientProxy.get0(MapClientProxy.java:267)
at com.hazelcast.client.MapClientProxy.get(MapClientProxy.java:262)
at persistence.HazelcastController.setIsOnline(HazelcastController.java:37) ------------------>>>>> WHICH IS: HazelcastUser currentUser = users.get(idUser);
at control.chat.HazelcastChatController.connectChat(HazelcastChatController.java:12)
at action.ConnectChatAction.doAction(ConnectChatAction.java:30)
at action.controller.ActionController.executeAction(ActionController.java:47)
at handler.CChatHandler.serviceDoPost(CChatHandler.java:82)
at handler.CChatHandler.onRequest(CChatHandler.java:40)
at org.atmosphere.cpr.AsynchronousProcessor.action(AsynchronousProcessor.java:254)
at org.atmosphere.cpr.AsynchronousProcessor.suspended(AsynchronousProcessor.java:164)
at org.atmosphere.container.Jetty9AsyncSupportWithWebSocket.service(Jetty9AsyncSupportWithWebSocket.java:127)
at org.atmosphere.cpr.AtmosphereFramework.doCometSupport(AtmosphereFramework.java:1335)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:259)
at org.atmosphere.websocket.DefaultWebSocketProcessor$2.run(DefaultWebSocketProcessor.java:209)
at org.atmosphere.util.VoidExecutorService.execute(VoidExecutorService.java:101)
at org.atmosphere.websocket.DefaultWebSocketProcessor.dispatch(DefaultWebSocketProcessor.java:204)
at org.atmosphere.websocket.DefaultWebSocketProcessor.invokeWebSocketProtocol(DefaultWebSocketProcessor.java:180)
at org.atmosphere.container.Jetty9WebSocketHandler.onWebSocketText(Jetty9WebSocketHandler.java:74)
at org.eclipse.jetty.websocket.core.io.event.ListenerEventDriver.onTextMessage(ListenerEventDriver.java:117)
at org.eclipse.jetty.websocket.core.io.message.SimpleTextMessage.messageComplete(SimpleTextMessage.java:69)
at org.eclipse.jetty.websocket.core.io.event.ListenerEventDriver.onTextFrame(ListenerEventDriver.java:109)
at org.eclipse.jetty.websocket.core.io.event.EventDriver.incoming(EventDriver.java:147)
at org.eclipse.jetty.websocket.core.io.WebSocketSession.incoming(WebSocketSession.java:124)
at org.eclipse.jetty.websocket.core.protocol.Parser.notifyFrame(Parser.java:189)
at org.eclipse.jetty.websocket.core.protocol.Parser.parse(Parser.java:224)
at org.eclipse.jetty.websocket.core.io.AbstractWebSocketConnection.read(AbstractWebSocketConnection.java:377)
at org.eclipse.jetty.websocket.core.io.AbstractWebSocketConnection.onFillable(AbstractWebSocketConnection.java:287)
at org.eclipse.jetty.io.AbstractConnection$1.onCompleted(AbstractConnection.java:80)
at org.eclipse.jetty.io.AbstractConnection$1.onCompleted(AbstractConnection.java:63)
at org.eclipse.jetty.util.ExecutorCallback$1.run(ExecutorCallback.java:32)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:595)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:526)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.ClassNotFoundException: model.HazelcastUser
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at com.hazelcast.nio.AbstractSerializer.loadClass(AbstractSerializer.java:81)
at com.hazelcast.nio.AbstractSerializer.loadClass(AbstractSerializer.java:56)
at com.hazelcast.nio.AbstractSerializer$1.resolveClass(AbstractSerializer.java:91)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1593)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1514)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1750)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1347)
at java.io.ObjectInputStream.readUnshared(ObjectInputStream.java:459)
at com.hazelcast.nio.DefaultSerializer$ObjectSerializer.readNormal(DefaultSerializer.java:410)
at com.hazelcast.nio.DefaultSerializer$ObjectSerializer.read(DefaultSerializer.java:380)
at com.hazelcast.nio.DefaultSerializer.read(DefaultSerializer.java:138)
at com.hazelcast.nio.CustomSerializerAdapter.read(CustomSerializerAdapter.java:32)
at com.hazelcast.nio.AbstractSerializer.toObject(AbstractSerializer.java:121)
What should I do?
Thank you in advance for your reply!
Andrea
Hi, sorry I've been out for work last week.
Anyway I use java default serialization and not DataSerializable.
I found out that I get the error only for the requests handled by the Atmosphere framework: the same code if trigged from a regular servlet doesn't result in any problem.
These are the objects I'm trying to put on the map:
public class HazelcastUser implements Serializable {
private boolean online;
private String nickname;
private Map<Integer, Friend> friends;
private Map<Integer, Integer> id2w4m;
}
public class Friend implements Serializable {
private Integer idUser;
private String status;
}
Thank you,
Andrea
Il giorno martedì 19 marzo 2013 17:49:41 UTC+1, jason....@gmail.com ha scritto:I don't think I am using the same hazelcast version as you. My DataSerializer.read operated on DataSerializable's and they class you posted doesn't implement that. So... I am a little confused. Anyhow... typically when you get that exception it means you need a default constructor.