Я новичок в веб-сервисах RESTful и пытался обновить мои отношения @OneToMany
из автономного клиентского приложения, но я не могу этого сделать. Я использую реализацию JAX-RS на Джерси, которая поставляется с Glassfish 3.1.1.
У меня есть класс A
, который имеет @OneToMany
отношение с классом B
.
MyRestClient
- мой автономный клиент, который вызывает мой веб-сервис RESTful, который был развернут на Glassfish 3.1.1.
MyRestClient.java
public class MyRestClient {
public static void main(String[] args) {
Client client = Client.create();
WebResource resource = client.resource("http://localhost:8080/myapp/rest/a/update/123");
B b1 = new B("debris");
ClientResponse response = resource.put(ClientResponse.class, b1);
System.out.println(response.getEntity(A.class).getTitle() + " has " + response.getEntity(A.class).getBList().size() + " Bs.");
}
}
AResource
- это EJB-сессионный компонент, который я использую как веб-сервис RESTful.
AResource.java
@Stateless
@Path("/a")
public class AResource {
@EJB
private AManager aManager;
@PUT
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@Path("/update/{id}")
public Response updateA(B b, @PathParam("id") int id) {
A a = aManager.findAById(id);
a.addB(b);
return Response.status(Status.OK).entity(a).build();
}
}
Когда я запускаю клиент, я получаю следующее сообщение об ошибке:
com.sun.jersey.api.client.ClientHandlerException: модуль записи тела сообщения для типа Java, класса myPackage.B и типа носителя MIME, application / octet-stream, не найден .
Ниже приведены доменные объекты в моем автономном клиентском приложении, которое выполняет вызов сессионного компонента EJB AResource
, который я использую в качестве веб-службы RESTful.
A.java
@XmlRootElement
public class A implements Serializable{
private List<B> bList = new ArrayList<B>();
public List<B> getBList() {
return bList;
}
//remaining code
}
B.java
public class B implements Serializable {
private String text;
private A a;
@XmlTransient
public A getA() {
return a;
}
public void afterUnmarshal(Unmarshaller u, Object parent) {
this.a = (A) parent;
}
//remaining code
}
Может ли кто-нибудь помочь мне понять, почему это происходит и как мне решить эту проблему?