可能是Servlet not loading on startup的副本,但是我还没有发表评论,所以我必须为此开始一个新的问题......
相同的设置,使用Jersey和Tomcat的servlet,使用load-on-startup来加载容器。 但是,由于上面提到的线程,我知道这只加载Jersey容器,但不加载我为servlet设置的类。
因此,与上述线程的答案中隐含的内容相关,如何完成不仅包含在启动时加载,还包括使用@Path注释的类(例如,它将从数据库加载数据)在记忆中。)
@Singleton
@Path( "156846986" )
public class SearchEngine {
@Inject
private DatabaseService dbService;
@Inject
private PatriciaTrieEngine trieEngine;
}
,例如:
@Singleton
@Path( "3455470640" )
public class PatriciaTrieEngine {
@Inject
DatabaseService dbService;
private PatriciaTrie< Object > patriciaTrie;
@PostConstruct
public void init( ) throws SQLException {
...some code initializing the trie by loading data from a database u using dbService
}
}
最后,像SearchService
这样的一些类具有请求的端点:
@Path( "/search" )
@Produces( "application/json" )
public class SearchService {
@Inject
private DatabaseService dbService;
@Inject
private SearchEngine engine;
@GET
@Path( "/candidates" )
public Response getCandidates(@QueryParam( "query" ) final String input) throws UnsupportedEncodingException {
use Patricia trie via SearchEngine in order to find candidates for given query
return Response.ok().entity( candidates ).build();
}
}
最终应该在启动时加载PatriciaTrie,因为需要几分钟才能将数据加载到trie中。
答案 0 :(得分:2)