Objeto Dozer en GAE / J
-
06-07-2019 - |
Pregunta
Estoy tratando de escribir una aplicación usando GWT y GAE / J (Google AppEngine con Java). Para mi aplicación, necesito usar DTO. Para convertir Pojo en entidades JDO, quiero usar biblioteca Dozer . Entonces, cuando intento convertir un objeto, aparece el siguiente error:
Jun 23, 2009 7:12:30 PM com.google.appengine.tools.development.ApiProxyLocalImpl log
SEVERE: [1245784350843000] javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.athena.client.entities.Person com.athena.client.GreetingService.getPerson(com.athena.client.entities.Person)' threw an unexpected exception: java.lang.NoClassDefFoundError: org/dozer/DozerBeanMapper
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:360)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:546)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
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:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Caused by: java.lang.NoClassDefFoundError: org/dozer/DozerBeanMapper
at com.athena.server.GreetingServiceImpl.getPerson(GreetingServiceImpl.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
... 25 more
Recibo un error cuando solo intento crear una instancia del objeto del mapeador dentro del servidor:
Mapper mapper = new DozerBeanMapper();
¿Cómo resuelvo este problema?
Solución
Asegúrese de que los frascos estén en su classpath y en la carpeta web-inf / lib
Otros consejos
No estoy familiarizado con GAE / J, pero el error (NoClassDefFoundError) definitivamente te dice que el cargador de clases no puede encontrar la clase dozer. ¿Estás seguro de que está en el classpath? ¿Qué sucede si intentas ejecutar la misma línea?
Mapper mapper = new DozerBeanMapper ();
fuera de su contenedor, solo desde la línea de comando simple, método estático principal
?