ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
1026
1026
EMPFEHLEN
-
Hallo,
ich habe eine @post methode für einen Restful geschrieben, der einen per xml übermitteleten String in ein Objekt umwandeln soll. Hierzu verwende ich den Unmarshaller und bekomme den folgenden Fehler nicht behoben:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"dEmails"). Expected elements are <{}dEmail> at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.handleEvent(UnmarshallingContext.java:642) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:254) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportError(Loader.java:249) at com.sun.xml.bind.v2.runtime.unmarshaller.Loader.reportUnexpectedChildElement(Loader.java:116) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext$DefaultRootLoader.childElement(UnmarshallingContext.java:1049) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext._startElement(UnmarshallingContext.java:478) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallingContext.startElement(UnmarshallingContext.java:459) at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.startElement(SAXConnector.java:148) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:602) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3063) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:881) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211) at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:157) at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:214) at com.uds.webadmin.server.CRestEmails.createEmail(CRestEmails.java:100) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) Dez 02, 2011 10:50:55 AM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException Schwerwiegend: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container java.lang.UnsatisfiedLinkError: com.smartgwt.client.util.SC.say(Ljava/lang/String;)V at com.smartgwt.client.util.SC.say(Native Method) at com.uds.webadmin.server.CRestEmails.createEmail(CRestEmails.java:106) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:708) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Der XML String sieht wie folgt aus:
Code xml:1 2 3 4 5 6 7 8 9 10 11 12 13
<dEmails> <dEmail> <email_text>test 1</email_text> <email_type>Studiengangsinformation</email_type> <toRecipients>andy@web.de</toRecipients> <ccRecipients>andy@web.de</ccRecipients> <bccRecipients>andy@web.de</bccRecipients> <headline>test 1</headline> <selfCopy>true</selfCopy> <creator>Andy</creator> <creation_date>null</creation_date> </dEmail> </dEmails>
die @POST Methode sieht wie folgt aus:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
@POST @Path( "create/email" ) @Consumes(MediaType.APPLICATION_XML) @Produces( MediaType.APPLICATION_XML ) public DEmail createEmail(String xml) { System.out.println("XML: " + xml); JAXBContext jaxbContext = null; DEmail email = null; try { jaxbContext = JAXBContext.newInstance(DEmail.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); email = (DEmail) unmarshaller.unmarshal(new StringReader(xml)); } catch ( JAXBException e ) { e.printStackTrace(); SC.say( String.valueOf( e )); } return email; }
Meine Entety Klasse so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
package com.uds.webadmin.server; import java.io.Serializable; import java.lang.Boolean; import java.lang.String; import java.util.Date; import javax.persistence.*; import static javax.persistence.TemporalType.TIMESTAMP; import javax.xml.bind.annotation.XmlRootElement; /** * Entity implementation class for Entity: DEmail * */ @Entity @XmlRootElement @Table(name = "email_sended") @NamedQuery(name = "findEmails", query = "SELECT e FROM DEmail e") public class DEmail implements Serializable { @Id @GeneratedValue( strategy = GenerationType.SEQUENCE) @Column(columnDefinition="SERIAL") private long email_id; @Column private String to_recipients; @Column private String cc_recipients; @Column private String bcc_recipients; @Column private String headline; @Column(columnDefinition="TEXT") private String email_text; @Column private String email_type; @Column private Boolean self_copy; @Column private String creator; @Column @Temporal( TIMESTAMP ) private Date creation_date; private static final long serialVersionUID = 1L; public DEmail() { super(); } public long getEmail_id() { return this.email_id; } public void setEmail_id(long email_id) { this.email_id = email_id; } public String getto_recipients() { return this.to_recipients; } public void setto_recipients(String to_recipients) { this.to_recipients = to_recipients; } public String getcc_recipients() { return this.cc_recipients; } public void setcc_recipients(String cc_recipients) { this.cc_recipients = cc_recipients; } public String getbcc_recipients() { return this.bcc_recipients; } public void setbcc_recipients(String bcc_recipients) { this.bcc_recipients = bcc_recipients; } public String getHeadline() { return this.headline; } public void setHeadline(String headline) { this.headline = headline; } public String getText() { return this.email_text; } public void setText(String text) { this.email_text = text; } public String getEmail_type() { return this.email_type; } public void setEmail_type(String email_type) { this.email_type = email_type; } public Boolean getself_copy() { return this.self_copy; } public void setself_copy(Boolean self_copy) { this.self_copy = self_copy; } public String getCreator() { return this.creator; } public void setCreator(String creator) { this.creator = creator; } public Date getCreations_date() { return this.creation_date; } public void setCreations_date(Date creations_date) { this.creation_date = creations_date; } }
Geändert von Andyx1975 (02.12.11 um 10:54 Uhr)
-
kann es sein, dass hier ein Fehler wegen des Namespaces auftritt? Jemand eine Idee wie ich das umgehen kann?
-
Ok habe die Lösung gefunden. Ich musste nur das <DEmails> weglassen, weil ich damit auf eine Liste verweise, in wirklichkeit mich aber nur auf ein Objekt beziehe Wenn ich den String wie folgt anpasse funktioniert es:
Code xml:1 2 3 4 5 6 7 8 9 10 11 12
<?xml version="1.0" encoding="UTF-8"?> <dEmail> <email_text>test 1</email_text> <email_type>Studiengangsinformation</email_type> <toRecipients>andy@web.de</toRecipients> <ccRecipients>andy@web.de</ccRecipients> <bccRecipients>andy@web.de</bccRecipients> <headline>test 1</headline> <selfCopy>true</selfCopy> <creator>Andy</creator> <creation_date>null</creation_date> </dEmail>
Ähnliche Themen
-
Unbekanntes XML-Element mit JAXB serialisieren
Von Buschiii im Forum XML TechnologienAntworten: 0Letzter Beitrag: 08.10.10, 13:40 -
org.xml.sax.SAXParseException - Unexpected element: CDATA
Von nopePlan im Forum JavaAntworten: 0Letzter Beitrag: 23.02.10, 15:42 -
Jaxb Annotationen, Wert als XML Element
Von manu_l im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 06.10.08, 23:15 -
Jaxb Exception beim unmarshaller
Von Jamous im Forum JavaAntworten: 5Letzter Beitrag: 21.04.08, 00:42 -
UnmarshalException | RMI
Von _Truck_ im Forum JavaAntworten: 6Letzter Beitrag: 22.08.07, 15:53





Zitieren
Login





