tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
250
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 bin ziemlich neu im Bereich Webprogrammierung und ich habe ein Problem mit Restful bei dem ich nicht mehr weiter weiß und keine Lösung finde. Ich bekomme den folgenden Fehler der durch die rot markierte Zeile verursacht wird:

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("{id}")
    public DEmail read(@PathParam("id") long id) {
    return em.find(DEmail.class, id);
    }



    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
    
    Aug 16, 2011 11:07:17 AM com.sun.jersey.api.core.WebAppResourceConfig init
    Information: Scanning for root resource and provider classes in the Web app resource paths:
      /WEB-INF/lib
      /WEB-INF/classes
    Aug 16, 2011 11:07:18 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
    Information: Root resource classes found:
      class uds.web.admin.server.EmailService
    Aug 16, 2011 11:07:18 AM com.sun.jersey.api.core.ScanningResourceConfig logClasses
    Information: Provider classes found:
      class org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider
      class org.codehaus.jackson.jaxrs.JacksonJsonProvider
      class org.codehaus.jackson.jaxrs.JsonMappingExceptionMapper
      class org.codehaus.jackson.jaxrs.JsonParseExceptionMapper
    Aug 16, 2011 11:07:18 AM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
    Information: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM'
    [COLOR="red"]Aug 16, 2011 11:07:37 AM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
    Schwerwiegend: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container[/COLOR]
    java.lang.NullPointerException
        at uds.web.admin.server.EmailService.read(EmailService.java:53)
        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:699)
        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.headerComplete(HttpConnection.java:829)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513)
        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)


    Die Klasse DEmail 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
    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
    137
    138
    139
    
    package uds.web.admin.server;
     
    import java.io.Serializable;
    import java.lang.Boolean;
    import java.lang.Integer;
    import java.lang.String;
    import java.util.Date;
     
    import javax.persistence.*;
    import static javax.persistence.GenerationType.SEQUENCE;
    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 = SEQUENCE )
        @Column(columnDefinition="SERIAL")
        private Integer email_id;
        
        @Column
        private String ToRecipients;
        
        @Column
        private String CcRecipients;
        
        @Column
        private String BccRecipients;
        
        @Column
        private String headline;
        
        @Column(columnDefinition="TEXT")
        private String email_text;
        
        @Column
        private String email_type;
        
        @Column
        private Boolean selfCopy;
        
        @Column
        private String creator;
        
        @Column
        @Temporal( TIMESTAMP )
        private Date creations_date;
        
        private static final long serialVersionUID = 1L;
        
        
        
        
        
     
        public DEmail() {
            super();
        }   
        public Integer getEmail_id() {
            return this.email_id;
        }
     
        public void setEmail_id(Integer email_id) {
            this.email_id = email_id;
        }   
        public String getToRecipients() {
            return this.ToRecipients;
        }
     
        public void setToRecipients(String ToRecipients) {
            this.ToRecipients = ToRecipients;
        }   
        public String getCcRecipients() {
            return this.CcRecipients;
        }
     
        public void setCcRecipients(String CcRecipients) {
            this.CcRecipients = CcRecipients;
        }   
        public String getBccRecipients() {
            return this.BccRecipients;
        }
     
        public void setBccRecipients(String BccRecipients) {
            this.BccRecipients = BccRecipients;
        }   
        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 getSelfCopy() {
            return this.selfCopy;
        }
     
        public void setSelfCopy(Boolean selfCopy) {
            this.selfCopy = selfCopy;
        }   
        public String getCreator() {
            return this.creator;
        }
     
        public void setCreator(String creator) {
            this.creator = creator;
        }   
        public Date getCreations_date() {
            return this.creations_date;
        }
     
        public void setCreations_date(Date creations_date) {
            this.creations_date = creations_date;
        }
       
    }


    Meine Providerklasse 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
    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
    
    package uds.web.admin.server;
     
    import java.util.List;
     
    import javax.ejb.LocalBean;
    import javax.ejb.Stateless;
    import javax.persistence.EntityManager;
    import javax.persistence.PersistenceContext;
    import javax.persistence.PersistenceContextType;
    import javax.persistence.Query;
    import javax.ws.rs.Consumes;
    import javax.ws.rs.DELETE;
    import javax.ws.rs.GET;
    import javax.ws.rs.POST;
    import javax.ws.rs.PUT;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
     
     
    // [url]http://localhost:8888/rest/emails/1[/url]
     
    /**
     * Session Bean implementation class EmailService
     */
    @Stateless
    @LocalBean
    @Path("/emails")
    public class EmailService {
     
        /**
         * Default constructor. 
         */
        public EmailService() {
     
        }
        
        
        @PersistenceContext(unitName="EmailService", type=PersistenceContextType.TRANSACTION)
        EntityManager em;
     
        @POST
        @Consumes(MediaType.APPLICATION_XML)
        public void create(DEmail email) {
            em.persist(email);
        }
        
        @GET
        @Produces(MediaType.APPLICATION_XML)
        @Path("{id}")
        public DEmail read(@PathParam("id") long id) {
            return em.find(DEmail.class, id);
        }
        
        @GET
        @Produces(MediaType.APPLICATION_XML)
        @Path("readAll")
        public List<DEmail> readAll(){
     
            Query  query = em.createNamedQuery("findEmails");
            List<DEmail> email = query.getResultList();
     
            System.out.println("email : "+email);
     
            return email;
     
         }
        
       
        
     
    }


    Meine web.xml:
    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
    
    <?xml version="1.0" encoding="UTF-8"?> 
    <web-app xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
     
        <!-- Default page to serve -->
        <welcome-file-list>
            <welcome-file>GWebAdmin.html</welcome-file>
        </welcome-file-list>
        <display-name>Emails</display-name>
        <servlet>
            <servlet-name>Jersey Web Application</servlet-name>
            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Jersey Web Application</servlet-name>
            <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
        <persistence-context-ref>
            <persistence-context-ref-name>persistence/em</persistence-context-ref-name>
            <persistence-unit-name>EmailService</persistence-unit-name>
        </persistence-context-ref>
     
    </web-app>
    Geändert von Andyx1975 (16.08.11 um 14:57 Uhr)
     

  2. #2
    SE Tutorials.de Gastzugang
    Das gehört eingetlich hier rein -> http://www.tutorials.de/enterprise-j...2ee-spring-co/
    Nutze auch für reine Java-Source-Files die Java-Tags *siehe Signatur* anstatt die Code-Tags da dies die Lesbarkeit deutlich erhöt.
     

  3. #3
    Andyx1975 Andyx1975 ist offline Mitglied Silber
    Registriert seit
    Nov 2009
    Beiträge
    66
    ok vielen dank...ich habe es geändert. Kann keiner weiter helfen?
     

  4. #4
    SE Tutorials.de Gastzugang
    Das glaub ich jetzt nicht ... du hast jetzt nicht wirklich einen zweiten Thread eröffnet oder ?
    Das ist bei uns hier nicht gerne gesehen und kann mit Verwarnungen geahndet werden. Als Tipp für die Zukunft : erst überlegen welches Forum das richtige sein könnte und wenns doch falsch ist einfach auf das Verschieben durch einen Mod warten und nicht quer durchs Forum verteilt Multi-Threads eröffnen.
     

Ähnliche Themen

  1. Error in HTTP operation beim KXML parsen
    Von NR76 im Forum Handy, PDA & mobile Welt
    Antworten: 0
    Letzter Beitrag: 25.04.08, 09:41
  2. HTTP Error WebBrowser
    Von hagbard_celine im Forum .NET Web und Kommunikation
    Antworten: 0
    Letzter Beitrag: 25.10.06, 04:37
  3. Http/1.1 +500 Internal Server Error
    Von ksk im Forum .NET Café
    Antworten: 6
    Letzter Beitrag: 11.07.06, 15:39
  4. HTTP 500 error bei PHP-Scripts
    Von hans_schmid im Forum PHP
    Antworten: 5
    Letzter Beitrag: 15.05.04, 00:37
  5. Antworten: 0
    Letzter Beitrag: 10.04.03, 14:26