standard languages google flexible features engine compute app google-app-engine objectify

google app engine - languages - Error de Objectify 5.1 Context Not Started debido a la falta de ObjectifyFilter



google app engine memory limit (5)

con la última versión de Objectify (5.1), obtengo el siguiente error cuando intento acceder al método ofy ()

No has iniciado un contexto Objectify. Probablemente te estás perdiendo el ObjectifyFilter. Si no se está ejecutando en el contexto de una solicitud http, consulte el método ObjectifyService.run ().

Lo estoy ejecutando desde la aplicación web de Appengine, el mismo código y la configuración funcionaron bien en versiones anteriores

A continuación se muestra mi configuración, similar al ejemplo proporcionado en la documentación de Objectify.

web.xml

<filter> <filter-name>ObjectifyFilter</filter-name> <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> </filter> <filter-mapping> <filter-name>ObjectifyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Clase de servicio

public class OfyService { static { long start = System.currentTimeMillis(); factory().register(User.class); log.info(" Entity Registration took : {} ms", (System.currentTimeMillis() - start)); } public static Objectify ofy() { return ObjectifyService.ofy(); } public static ObjectifyFactory factory() { return (ObjectifyFactory) ObjectifyService.factory(); } }

pero sí definí ObjectifyFilter, ¿alguna idea de por qué recibo este error? y como puedo arreglarlo?

¡Gracias!

ACTUALIZAR:

He actualizado la versión de Objectify a v5.1.5 pero ¿aún no se ha resuelto el problema con alguna actualización sobre esto?


Acabo de empezar a usar Objectify y tuve el mismo problema que tú. Simplemente no leo la información de configuración ... Simplemente agregue eso en mi web.xml y funcionó:

<filter> <filter-name>ObjectifyFilter</filter-name> <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> </filter> <filter-mapping> <filter-name>ObjectifyFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>


He estado teniendo el mismo problema. Encontré lo que causó el problema (para mí). He estado usando Guice y sitebricks para construir mis servicios de back-end.

Problema

Para hacer uso de Objectify tuve que enlazar ObjectifyFilter como Singleton en uno de mis módulos. El módulo en el que estaba realizando el enlace extiende un ServletModule que se instala a través de Guice en SitebricksModule donde vinculo mis servicios a las URL. El SiteBricksModule se pasa luego al inyector de Guice.

Observé que cuando instalé un módulo en otro, el problema persistía.

Soluciones que encontré

  • Separé los dos módulos y los pasé al inyector de Guices.

o

  • Separe las cosas de Objectify como atar el filtro y especificar el patrón de filtro en un módulo diferente y páselo al inyector de Guice.

¡Espero que esto ayude!


Me enfrentaba al mismo error y esta solusión me funcionó.

agregar en web.xml

<filter> <filter-name>ObjectifyFilter</filter-name> <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> </filter> <filter-mapping> <filter-name>ObjectifyFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>INCLUDE</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>


asegúrese de que su clase StartupActions se vea como:

@Start(order=100) public void generateDummyDataWhenInTest() { if (ninjaProperties.isDev()) { try (Closeable closeable = ObjectifyService.begin()) { ObjectifyProvider.setup(); } catch (IOException ex) { Logger.getLogger(StartupActions.class.getName()).log(Level.SEVERE, null, ex); } } }

Deberíamos haber corregido eso hace mucho tiempo en el arquetipo, pero no es realmente alto en la lista de prio. Sería increíble si pudieras presionar una banda de relaciones públicas :)


import static com.googlecode.objectify.ObjectifyService.ofy; import java.util.List; ... import ar.com.cra.entity.State; import com.googlecode.objectify.ObjectifyService; @Controller @RequestMapping("/state") public class StateController { @RequestMapping(value = "/addState", method = RequestMethod.GET) public String getAddState(ModelMap model) { return "state/add"; } @RequestMapping(value = "/add", method = RequestMethod.POST) public ModelAndView add(HttpServletRequest request, ModelMap model) { ObjectifyService.register(State.class); State state; try { state = new State(); state.setName(request.getParameter("name")); state.setShortName(request.getParameter("shortName")); ofy().save().entity(state).now(); } catch (Exception e) { e.printStackTrace(); } return new ModelAndView("redirect:list"); }

ACTUALIZAR

public class DatastoreService { static { factory().register(State.class); } public static Objectify ofy() { return ObjectifyService.ofy(); } }