Java 在WAR项目中分离应用程序逻辑线程和servlet线程

Java 在WAR项目中分离应用程序逻辑线程和servlet线程,java,multithreading,rest,servlets,jersey,Java,Multithreading,Rest,Servlets,Jersey,我已经创建了一个正常工作的RESTful jersey应用程序,构建为一个JAR,它有一个本地类模块,其中包含一个主类转换器,该转换器包含类似于DNAtorna的公共静态管道(String chr,int start,int end,Strand str),并具有公共静态void main(String[]args)运行Converter.register(),使用远程存储库初始化本地对象;以及在端口8080上创建jetty服务器的Converter.runJettyServer() REST接

我已经创建了一个正常工作的RESTful jersey应用程序,构建为一个JAR,它有一个本地类模块,其中包含一个主类
转换器
,该转换器包含类似于DNAtorna的
公共静态管道(String chr,int start,int end,Strand str)
,并具有
公共静态void main(String[]args)运行
Converter.register()
,使用远程存储库初始化本地对象;以及在端口8080上创建jetty服务器的
Converter.runJettyServer()

REST接口在类
RestfulConverter
中,它只是对
Converter
的功能进行了某种包装。以下是一个示例:

@GET
@Path("/from/dna/chr/{chr-num}/strand/{str-type}/{start}..{end}/to/rna")
@Produces("application/javascript")
public String doDNA2RNA(@PathParam("chr-num") String chr,
        @PathParam("str-type") int str, @PathParam("start") int start,
        @PathParam("end") int end, @QueryParam("callback") String callback) {
    Pipe ans = null;
    try {
        switch (str) {
        case 1:
            ans = Converter
                    .fromDNAtoRNA(chr, start, end, Converter.FORWARD); ... }
现在我需要应用程序是一个WAR文件,根据我的经验,程序员通常不会定义
main
方法

我使用
org.glassfish.jersey.servlet.ServletContainer
作为唯一的servlet。在任何人都可以使用REST接口之前,我应该如何使用
Converter.register()
初始化我的对象

我试图用
RESTServlet
类扩展
org.glassfish.jersey.servlet.ServletContainer
,并像这样重写
init()
方法(snippet-1):

但这会抛出
java.lang.NoClassDefFoundError:org/eclipse/jetty/server/Handler

我应该如何处理这个问题
如果我想在某个时间间隔内更新我的对象(比如每4小时使用
Converter.register()
,而不中断REST接口cilents),该怎么办
如何使用不同的线程将servlet/REST逻辑从应用程序逻辑的分区中分离出来
我应该定义一个新的类加载器吗

我没有定义类加载器和多线程的经验,我曾尝试寻找教程,但没有找到任何对我的特殊情况有帮助的东西

编辑
以下是关于snippet-1的完整错误日志:

编辑2:
Converter
类上取消了以前的jetty server导入之后,snippet-1工作得很好。

请特别查看启动servlet时的位

@启动Servlet

老式的方式。你可以做任何符合逻辑的事情 在启动servlet中需要。这是一个简单的servlet
获取加载的
>的常规-startup@Deepika:您在错误日志中查找的确切信息是什么?@DeepikaRajani我添加了日志
public void init() throws ServletException {
    super.init();
    try {
        Converter.main(null);
    } catch (DAOException e) {
        e.printStackTrace();
    }
}
May 06, 2015 1:15:36 PM org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Handler
    at il.ac.ariel.concord.service.RESTServlet.init(RESTServlet.java:16)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.server.Handler
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    ... 22 more

May 06, 2015 1:15:36 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet Extended Jersey
java.lang.ClassNotFoundException: org.eclipse.jetty.server.Handler
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    at il.ac.ariel.concord.service.RESTServlet.init(RESTServlet.java:16)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1231)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:817)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
    at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)