2017-03-10 3 views
3

Ich erhalte die folgenden Fehler, obwohl die Resteasy JAXB jar finden - Resteasy-jaxb-provider.jar in der Datei IST gebündeltNoMessageBodyWriterFoundFailure: Kann nicht MessageBodyWriter für Response-Objekt vom Typ

04:52:54,461 ERROR [org.jboss.resteasy.core.SynchronousDispatcher] (default task-1) Failed executing GET /editor/getMetadata/com.karthik.editor.model.EditorAuditEditor: o 
rg.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: com.karthik.SerializedStatusTO of media type: app 
lication/xml 
     at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:166) 
     at org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:485) 
     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:422) 
     at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:111) 
     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:217) 
     at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:159) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
     at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) 
     at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) 

Ich habe auch eingeschlossen in meinem WAR jboss-Entfaltungs structure.xml-Modul/Dosen JBoss bereitgestellt

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2"> 
    <deployment> 
     <exclude-subsystems> 
      <subsystem name="resteasy" /> 
     </exclude-subsystems> 
     <exclusions> 
      <module name="javaee.api" /> 
      <module name="javax.ws.rs.api"/> 
      <module name="org.jboss.resteasy.resteasy-jaxrs" /> 
     </exclusions> 
     <local-last value="true" /> 
    </deployment> 
</jboss-deployment-structure> 

I der Krieg auf JBoss 7 EAP bereitgestellt haben auszuschließen. Ich arbeite gerade daran, meine Apps von JBoss 5 auf JBoss 7 zu migrieren. Es gibt keine Codeänderung und funktioniert auf JBoss5 einwandfrei. Können Sie bitte helfen, dieses Problem auf JBOSS 7 zu beheben.

+0

JBoss 5 bringt keine JAX-RS Umsetzung mit ihm, so dass Sie es bündeln müssen. Auf der anderen Seite enthält JBoss 7 eine Implementierung. Wenn Sie Maven verwenden, könnten Sie versuchen, JAX-RS als bereitgestellt zu definieren. – beat

+0

Ich habe die resteasy-jaxb-provider.jar im WAR – Karthik

+0

gebündelt Ja, ich vermute, dass das Problem ist. In JBoss 7 ist es schon da. Siehe das Dokument: https://docs.jboss.org/resteasy/docs/3.0.2.Final/userguide/html_single/#d4e40 Oder gibt es einen Grund, warum Sie die mitgelieferten Versionen nicht verwenden möchten? – beat

Antwort

2

Schließlich fand ich die Lösung.
Das Problem war der Name des Subsystems. Es gibt kein Subsystem namens "Resteasy", das Subsystem heißt eigentlich "Jaxrs".
ich die Subsystemnamen in dem Jboss-Deployment-structure.xml aktualisiert, wie unten dargestellt:

<exclude-subsystems> 
    <subsystem name="jaxrs" /> 
</exclude-subsystems> 
0

Im Wesentlichen haben Sie Ihren Server angewiesen, ein SerializedStatusTO-Objekt als Antwort an den Client zu senden, aber es nicht wissen, wie Sie das in eine Zeichenfolge umwandeln. Sie müssen ein JAR einschließen, das über einen MessageBodyWriter für die Klasse com.karthik.SerializedStatusTO verfügt. Wenn es sich um eine Klasse handelt, die Sie erstellt haben, müssen Sie eine selbst erstellen und einschließen.

https://jersey.java.net/documentation/latest/message-body-workers.html#d0e6952

IIRC, wenn Ihr Bean ist JAXB kommentierte es keinen benutzerdefinierten Schriftsteller allerdings benötigen sollte. Können Sie den Code für die Bean und die Methode angeben, die die Serverantwort sendet?

+0

Die Bohne ist mit JAXB annotiert. Ich habe Resteasy-Jaxb-provider.jar zum Marshaling und Unmarshalling von Java-Objekt zu XML enthalten. Derselbe Code funktioniert in JBoss 5. Ich vermute, dass das Problem in JBoss7 mit dem Laden von Klassen/JAR-Versionen auftritt. – Karthik

+0

aus Neugier, was passiert, wenn Sie die jackson jaxrs Anbieter hinzufügen? https://mvnrepository.com/artifact/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider ich dachte, Resteasy hatte Jaxb-Provider von defaut aber meybe sie werden irgendwie unterdrückt? – mike

+0

oder tatsächlich versuchen Sie mit diesem Jaxb-Anbieter https://mvnrepository.com/artifact/org.jboss.resteasy/restasy-jaxb-provider – mike

Verwandte Themen