tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
1026
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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)
     

  2. #2
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    kann es sein, dass hier ein Fehler wegen des Namespaces auftritt? Jemand eine Idee wie ich das umgehen kann?
     

  3. #3
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    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

  1. Unbekanntes XML-Element mit JAXB serialisieren
    Von Buschiii im Forum XML Technologien
    Antworten: 0
    Letzter Beitrag: 08.10.10, 13:40
  2. Antworten: 0
    Letzter Beitrag: 23.02.10, 15:42
  3. Jaxb Annotationen, Wert als XML Element
    Von manu_l im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 06.10.08, 23:15
  4. Jaxb Exception beim unmarshaller
    Von Jamous im Forum Java
    Antworten: 5
    Letzter Beitrag: 21.04.08, 00:42
  5. UnmarshalException | RMI
    Von _Truck_ im Forum Java
    Antworten: 6
    Letzter Beitrag: 22.08.07, 15:53