Я успешно внедрил успокоительный сервис, который работает с моим собственным клиентом. Теперь я хочу сделать его сервисом, с которым могут взаимодействовать и другие клиенты. Таким образом, я прихожу к следующим вопросам: (снимки моего кода идут после моих вопросов, система отлично работает с моим кодом)
1- Как выглядят данные, передаваемые между сервером и клиентом? Учтите, что я не использовал никакие другие аннотации JAXB (например, @XMLElement). Есть ли способ увидеть созданный JSON?
2- JAXB должен быть «Архитектурой Java для привязки XML», поэтому отправляет ли он данные в виде XML или JSON (учитывая, что я указал тип запроса как json)? Или он преобразует объект в XML, а затем в JSON на клиенте, а на сервере получает JSON и преобразует его в XML, а затем в объект Java?
3- Я использую JAXB в своем клиенте, но мой сервер должен получить запрос json. Означает ли это, что любой другой клиент, если он создает json с парами «ключ» и «значение», может взаимодействовать с моим сервером? Или это заставляет каждого клиента использовать JAXB (учитывая, что мой метод на сервере имеет входные аргументы конкретного объекта JAXBBean)? К сожалению, в настоящее время я не знаю, как создать и отправить json на Java без использования JAXB! Итак, я не мог проверить этот вопрос, прежде чем задать. Я собираюсь изучить его позже.
Части моего кода:
Я использовал Джерси для реализации своего спокойного сервиса. На стороне клиента я отправляю почтовое сообщение со списком объектов JAXB на сервер. Каждый объект JAXB является экземпляром bean-компонента, аннотированного следующим образом:
@XmlRootElement
public class JAXBBean {
String key;
String val;
//setters and getters (with no annotation) come here
...
}
И я отправляю список на сервер, используя:
String response = (String) publishWR.type("application/json").post(String.class, new GenericEntity<List<JAXBBean>> (reqArr){});
// publishWR is of type: com.sun.jersey.api.client.WebResource
// reArr is of type: List<JAXBBean>
На стороне сервера у меня есть метод, который отвечает на запросы публикации на этом веб-ресурсе, который написан так:
@POST
@Consumes("application/json")
public String postAnnotation(List<JAXBBean> requestArr){
String anno = "";
String user = "";
...
for(int i = 0 ; i < requestArr.size() ; i++ ){
if( requestArr.get(i).getKey().equals("annotation") )
anno = requestArr.get(i).getVal();
else if( requestArr.get(i).getKey().equals("username") )
user = requestArr.get(i).getVal();
...
}
...
}
Спасибо!