@ServerEndpoint
とDecoders
とを作成しますEncoders
。
サーバーでエラーが発生します:サーバーjava.lang.IllegalArgumentException: argument type mismatch
に使用してオブジェクトを送信している場合session.sendObject(message)
ゴーグルを装着していますが、問題が見つかりません。これは私のserverEndpoint
@ServerEndpoint(value="/room"
, encoders = MessageEncoder.class
, decoders = MessageDecoder.class)
public class myServerEndpoint
{
@OnMessage
public void onMessage(Message message, Session session)
{
//some code to proccess message
}
}
これは私のMessageDecoderです:
public class MessageDecoder implements Decoder.Text<Message>
{
public Message decode(String str) throws DecodeException
{
JsonObject obj = Json
.createReader(new StringReader(str)).readObject();
Message msg = new Message();
msg.setMessage(obj.getString("message"));
msg.setSender(obj.getString("sender"));
msg.setReceivedDate((Date) obj.get("receivedDate"));
return msg;
}
//... and other Methods
}
これは私のものMessage.class
です:
public class Message implements Serializable
{
private String message;
private String sender;
private Date receivedDate;
public Message() {}
//setters and getters
}
これは私のクライアントコードです:
public static void main(String[] args)
{
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
Session session = container
.connectToServer(WSClient.class,
URI.create("ws://localhost:8080/mySocket/room"));
Message msg = new Message();
msg.setMessage("msg");
msg.setSender("me");
msg.setReceivedDate(new Date());
session.getBasicRemote().sendObject(msg);
}
オブジェクトをサーバーに送信しようとしているときに問題が発生し、サーバーはjava.lang.IllegalArgumentException: argument type mismatch
.
問題は何ですか?