Не доводилось использовать XMLSocket, но если он работает по тому же принципу, что и Socket, то использование сервлета в качестве серверного решения не кажется верным. Сервлеты работают по принципу "запрос-ответ", логичнее было бы использовать URLLoader и на сервере - какой-то фреймворк для реализации REST API, построенный на сервлетах(в целях экономии времени, хотя никто не запрещает создать свою реализацию серверного API). Либо использовать ServerSocket на серверной стороне и работать в режиме постоянного подключения, если это требуется спецификой приложения, конечно. Да, в таком случае желательно использовать не XML(порядочное количество избыточных данных), а, скажем, AMF - он понятен Flash-у, и существуют готовые решения на Java для декодировании и сериализации. Например, можно использовать
BlazeDS(нужны библиотеки flex-messaging-common.jar и flex-messaging-core.jar). Читаем:

Код:
Amf3Input in = new Amf3Input(SerializationContext.getSerializationContext());
in.setInputStream(clientSocket.getInputStream());
Object message = in.readObject();
Пишем:

Код:
AmfObject message = new AmfObject();
Amf3Output out = new Amf3Output(SerializationContext.getSerializationContext());
out.setOutputStream(clientSocket.getOutputStream());
out.writeObject(message);
out.writeObjectEnd();
out.flush();
В клиенте читаем данные при помощи socket.readObject()...есть еще проблема с буферизацией больших сообщений, но до неё еще добраться нужно, решается чтением в промежуточный ByteArray для буферизации собщений.
Ну и еще нужно создать класс-модель для сериализации.