2017-07-05 11 views
0

これはan answer hereへのフォローアップの質問です。ObjectifyがcreateThreadForCurrentRequest()内で動作しない

私は、サーブレットで次のコードがあります。

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を実行するにはどうすればよいですか?

EDIT 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> 

EDIT 2:

私は新しい(現在はベータ版)のJava 8ランタイムを使用しています。

+0

あなたのweb.xmlを投稿してください –

答えて

0

あなたはこのように、作業単位(フィルタがありませんまったく同じ方法)を作成することができます。

ObjectifyService.run(() -> { 
    ofy().load()...etc 
}); 

はまた、(あなたが使用することができますしてみてください、とほとんど同じことであるbegin()方法を参照してくださいクロージャを渡す代わりに-resources)。

関連する問題