ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
523
523
EMPFEHLEN
-
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>
-
16.08.11 16:35 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
zum Zeitpunkt des Aufrufes von EmailManager.read() ist der EntityManager em nicht initialisiert. Warum weiß ich leider auch nicht.
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
ok danke für dein feeback...ich recherchiere mal...schonmal gut wenn man in die richtige Richtung geschubst wird.
-
So jetzt habe ich meine ServiceKlasse angepasst....diese sieht jetzt wie folgt aus und ich bekomme den folgenden Fehler:
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
package uds.web.admin.server; import java.util.List; import javax.ejb.LocalBean; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; 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) private static final String PERSISTENCE_UNIT_NAME = "WebAdmin"; private static EntityManagerFactory factory; @POST @Consumes(MediaType.APPLICATION_XML) public void create(DEmail email) { factory = Persistence.createEntityManagerFactory( PERSISTENCE_UNIT_NAME ); EntityManager em = factory.createEntityManager(); em.persist(email); } @GET @Produces(MediaType.APPLICATION_XML) @Path("{id}") public DEmail read(@PathParam("id") long id) { factory = Persistence.createEntityManagerFactory( PERSISTENCE_UNIT_NAME ); EntityManager em = factory.createEntityManager(); return em.find(DEmail.class, id); } @GET @Produces(MediaType.APPLICATION_XML) @Path("readAll") public List<DEmail> readAll(){ factory = Persistence.createEntityManagerFactory( PERSISTENCE_UNIT_NAME ); EntityManager em = factory.createEntityManager(); Query query = em.createNamedQuery("findEmails"); List<DEmail> email = query.getResultList(); System.out.println("email : "+email); return email; } }
Fehlermeldung:
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
Aug 16, 2011 4:57:46 PM 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 4:57:47 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses Information: Root resource classes found: class uds.web.admin.server.EmailService Aug 16, 2011 4:57:47 PM com.sun.jersey.api.core.ScanningResourceConfig logClasses Information: Provider classes found: class org.codehaus.jackson.jaxrs.JsonParseExceptionMapper class org.codehaus.jackson.jaxrs.JacksonJsonProvider class org.codehaus.jackson.jaxrs.JacksonJaxbJsonProvider class org.codehaus.jackson.jaxrs.JsonMappingExceptionMapper Aug 16, 2011 4:57:47 PM com.sun.jersey.server.impl.application.WebApplicationImpl _initiate Information: Initiating Jersey application, version 'Jersey: 1.8 06/24/2011 12:17 PM' Aug 16, 2011 4:58:08 PM com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException Schwerwiegend: The RuntimeException could not be mapped to a response, re-throwing to the HTTP container javax.persistence.PersistenceException: No Persistence provider for EntityManager named WebAdmin at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source) at javax.persistence.Persistence.createEntityManagerFactory(Unknown Source) at uds.web.admin.server.EmailService.read(EmailService.java:59) 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)
Persistance.xml:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="WebAdmin" transaction-type="RESOURCE_LOCAL"> <class>uds.web.admin.server.DEmail</class> <class>uds.web.admin.server.DUploads</class> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:postgresql:/<ip><port>/<dbname>"/> <property name="javax.persistence.jdbc.user" value="xxxxxxxxxxx"/> <property name="javax.persistence.jdbc.password" value="xxxxxxxxx/> <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/> </properties> </persistence-unit> </persistence>
Geändert von Andyx1975 (16.08.11 um 17:05 Uhr)
Ähnliche Themen
-
Kleines Beispiel zu REST-Webservices mit JAX-RS und Jersey
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 27.06.11, 19:17 -
Jersey/JAXB: XML-Ausgaben bleiben (fast) leer
Von DeRal im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 26.04.11, 20:31 -
Restful Webservices with Jersey and Java - Tutorial
Von vogella im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 18.02.10, 04:33 -
jersey
Von Micvkey166 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 0Letzter Beitrag: 08.06.09, 09:45 -
Hellowebservice mit Jersey?
Von flashray im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 2Letzter Beitrag: 25.06.08, 11:47





Zitieren
Login





