2017-07-26 39 views
0

您好我正在使用注释来映射servlet而不是web.xml,我试图使用objectify(我正在使用java8版本的谷歌应用程序引擎)从数据存储中检索实体,并且我正在使用静态块来注册实体(类)。Objectifyfilter的注释

I got this error:

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. 
    at com.googlecode.objectify.ObjectifyService.ofy(ObjectifyService.java:44) 

我知道这一点,需要有物化在web.xml过滤器:在我的情况,我不使用(如下面的代码)的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> 

Question:

我如何在注释中实现这种对象化过滤器?

回答

1

这需要将代码更改为ObjectifyFilter,以便获得@WebFilter注释。当你为自己的Servlet /相关代码使用注释时,你仍然可以创建一个web.xml来定义Objectify过滤器,这应该可以解决问题。

+0

在'web.xml'指定(下面的代码)客观化过滤器后' \t \t ObjectifyFilter \t <滤波器级> com.googlecode.objectify.ObjectifyFilter <器/过滤器级> \t \t <滤波器映射> \t ObjectifyFilter \t /* \t \t'我不能能开索引页(我得到'错误404' errror)@Sai Pullabhotla – Prakash

+0

'Error'-com.google.appengine.tools.development.jetty9 .LocalResourceFileServlet的doGet 警告:/指数 – Prakash

+0

是否有误迎宾文件列表:未找到文件?在添加web.xml之前它工作吗? webapp中是否有资源“/ index”? –

1

我通过创建扩展ObjectifyFilter

@WebFilter(urlPatterns = {"/*"}) 
public class ObjectifyFilterServlet extends ObjectifyFilter { 
} 

这样一类解决了这个问题,它的做工精细,但是当我使用的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> 

我得到第一个请求为Error 404。所以我创建了一个扩展ObjectifyFilter的简单类,我解决了这个问题。如果有其他解决方案,也分享这些信息。谢谢