2017-07-11 3 views
1

Es ist ein Webservice in zwei Systemen unter:MessageBodyWriter Fehler verursacht durch CascadeType

  1. Windows 7 x64, Apache Tomcat/8.5.16, JVM 1.8.0_65-b17
  2. Ubuntu 16.04.2 LTS, Apache Tomcat/8.5.15, JVM 1.8.0_131-8u131-b11-0ubuntu1.16.04.2-b11

Der Webservice wie folgt aussieht:

public class Order implements Serializable { 

    @OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.DETACH}, mappedBy = "orderId") 
    private List<Item> itemList; 

    // getters and setters 

} 

... 

public class Item implements Serializable { 

    @JoinColumn(name = "order_id", referencedColumnName = "id") 
    @ManyToOne(optional = false) 
    @XmlJavaTypeAdapter(OrderAdapter.class) 
    private Order orderId; 

    // getters and setters 
} 

... 

@GET 
@Produces({"application/xml", "application/json"}) 
public List<Order> findAll(@HeaderParam("authorization") String authString) throws Exception { 

    Query q = em.createNativeQuery("SELECT * FROM order", Order.class); 
    return q.getResultList(); 

} 

Problem: Der Webservice läuft auf dem ersten Server einwandfrei, keine Fehler. Im zweiten Server erhielt ich den Fehler:

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/xml, type=class java.util.Vector, genericType=java.util.List

Der Webservice nur auf dem zweiten Server funktioniert, wenn ich die Zeile:

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.REFRESH, CascadeType.MERGE, CascadeType.DETACH}, mappedBy = "orderId") 

An:

@OneToMany(cascade = CascadeType.ALL, mappedBy = "orderId") 

Also, warum die gleiche webservice läuft ok im ersten Server und verursacht Fehler in der Sekunde? Und was ist eine Beziehung mit MessageBodyWriter und CascadeType?

Antwort

0

Nachdem Probleme mit Cache hat, wurde mir klar, 2 Persistenz Libs in Projekt waren:

  • Persistenz-api-1.0.jar
  • javax.persistence_2.1.0.v201304241213.jar

Also ich denke, es funktioniert in einem Server wegen der Ladereihenfolge. Entfernen eines ersten gelösten Problems.

Verwandte Themen