org.openntf.xsp.jakartaee
org.openntf.xsp.jakartaee copied to clipboard
Missing MessageBodyWriter for XML
I am trying to return XML instead of the JSON from a map or a list but I get error. below is a changed version of the DominoObjectsSample class in example db
@Path("dominoObjects")
public class DominoObjectsSample {
@Inject
Database database;
@Inject
@Named("dominoSession")
Session session;
@Inject
@Named("dominoSessionAsSigner")
Session sessionAsSigner;
@Inject
@Named("dominoSessionAsSignerWithFullAccess")
Session sessionAsSignerWithFullAccess;
@Path("/json")
@GET
@Produces(MediaType.APPLICATION_JSON)
public Map<String, Object> getJson() {
Map<String, Object> result = new HashMap<>();
result.put("database", toString(database));
result.put("dominoSession", toString(session));
result.put("dominoSessionAsSigner", toString(sessionAsSigner));
result.put("dominoSessionAsSignerWithFullAccess", toString(sessionAsSignerWithFullAccess));
return result;
}
@Path("/xml")
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.TEXT_XML })
public Map<String, Object> getXml() {
Map<String, Object> result = new HashMap<>();
result.put("database", toString(database));
result.put("dominoSession", toString(session));
result.put("dominoSessionAsSigner", toString(sessionAsSigner));
result.put("dominoSessionAsSignerWithFullAccess", toString(sessionAsSignerWithFullAccess));
return result;
}
@Path("/xml2")
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.TEXT_XML })
public List<Person> getXml2() {
List<Person> personList = new ArrayList<Person>();
personList.add(new Person("A1","A2"));
personList.add(new Person("b1","b2"));
return personList;
}
private String toString(Object obj) {
if(obj == null) {
return "null";
} else {
return obj.getClass().getName() + "@" + Integer.toHexString(obj.hashCode());
}
}
public class Person{
String firstName = "";
String lastname = "";
public Person(String firstName, String lastname) {
super();
this.firstName = firstName;
this.lastname = lastname;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
}
}
{
"message": "org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: java.util.ArrayList of media type: application/xml;charset=UTF-8",
"stackTrace": [
[
"org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: java.util.ArrayList of media type: application/xml;charset=UTF-8",
" at org.jboss.resteasy.core.ServerResponseWriter.lambda$writeNomapResponse$3(ServerResponseWriter.java:125)",
" at org.jboss.resteasy.core.interception.jaxrs.ContainerResponseContextImpl.filter(ContainerResponseContextImpl.java:410)",
" at org.jboss.resteasy.core.ServerResponseWriter.executeFilters(ServerResponseWriter.java:252)",
" at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:101)",
" at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:74)",
" at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:594)",
" at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)",
" at org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:261)",
" at org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:161)",
" at org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:364)",
" at org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:164)",
" at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:247)",
" at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:249)",
" at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:60)",
" at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)",
" at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)",
" at org.openntf.xsp.jaxrs.impl.FacesJAXRSServletContainer.doService(FacesJAXRSServletContainer.java:92)",
" at org.openntf.xsp.jakartaee.AbstractXspLifecycleServlet.service(AbstractXspLifecycleServlet.java:130)",
" at org.openntf.xsp.jaxrs.impl.FacesJAXRSServletContainer.service(FacesJAXRSServletContainer.java:66)",
" at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:587)",
" at org.openntf.xsp.jakartaee.servlet.NewHttpServletWrapper.service(NewHttpServletWrapper.java:112)",
" at com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:600)",
" at com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1352)",
" at com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:877)",
" at com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:820)",
" at com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:589)",
" at com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1336)",
" at com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:725)",
" at com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:515)",
" at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:371)",
" at com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:327)",
" at com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:302)"
]
]
}
https://poe.com/s/xKDkeJ6TAP5Xo5m6vhGm