【发布时间】:2023-04-07 10:44:01
【问题描述】:
这是an answer here 的后续问题。
我在 servlet 中有以下代码:
createThreadForCurrentRequest(() => {
// do stuff
}).start();
但是当我在本地运行它时,我收到了这个异常:
Exception in thread "Thread-17" java.lang.IllegalStateException: You have not started an Objectify context. You are probably missing the ObjectifyFilter. If you are not running in the context of an http request, see the ObjectifyService.run() method.
我哪里做错了?
解释一下:如何在createThreadForCurrentRequest() 产生的线程内运行 Objectify?
编辑 1: 应要求,这是web.xml:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="3.0"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="true">
<absolute-ordering/>
<!-- Register Objectify model -->
<listener>
<listener-class>foo.ObjectifyListener</listener-class>
</listener>
<filter>
<filter-name>objectify</filter-name>
<filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>objectify</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>bar</servlet-name>
<servlet-class>foo.BarServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>bar</servlet-name>
<url-pattern>/foo/bar/</url-pattern>
</servlet-mapping>
</web-app>
编辑 2:
我使用新的(目前处于测试阶段)Java 8 运行时。
【问题讨论】:
-
能否请您发布您的 web.xml
标签: google-app-engine objectify