由于Java程序

时间:2015-07-31 04:03:37

标签: java tomcat servlets listener

我有一个调用MMQ侦听器的Java Servlet。我正在Tomcat服务器中部署应用程序

AppServlet.java

package com.cisco.cstg.platform;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AppServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    MessageListenerImpl m;

    public void init(ServletConfig config) throws ServletException {
        //super.init(config);
        //MainApp.main(null);
        m = MainApp.init();
        MainApp.start(m);
    }

     public void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException {
        PrintWriter out = res.getWriter();
        boolean dbStatus = EMANApi.isDBUpAndRunning();
        if (dbStatus == true) {
            out.print("SUCCESS");
        } else {
            out.print("FAILED");
        }
    }

    public void destroy() {

        MainApp.stop(m);

    }

}

MainApp.java

package com.cisco.cstg.platform;

import com.cisco.cstg.utilities.UtilClass;

public class MainApp {

    public static final org.apache.log4j.Logger log = org.apache.log4j.Logger
            .getLogger(MainApp.class);
    // Input arguments
    public static long keepAliveMinutes = 1L;
    public static boolean debug;

    public static void main(String args[]) {
        MainApp.fetchArgs(args);

        initLogging();
        if (debug)
            log.info(UtilClass.getCurrentDate()
                    + "Run Connector Message App for reading the queue");

        MessageListenerImpl m = MainApp.init();
        MainApp.start(m);
        UtilClass.keepAlive(keepAliveMinutes);
        // MainApp.stop(m);

        if (debug)
            log.info(UtilClass.getCurrentDate()
                    + "Run Connector CSOC Message App");

    }

    private static void fetchArgs(String[] args) {
        debug = log.isDebugEnabled();
        keepAliveMinutes = Integer.MAX_VALUE; // value is 2147483647 ms

        if (debug)
            log.info(UtilClass.getCurrentDate() + "Found keepAliveMinutes: "
                    + keepAliveMinutes + " debug: " + debug);

    }

    private static void initLogging() {

        if (debug)
            log.info(UtilClass.getCurrentDate() + "::initLogging Started");

        if (debug)
            log.info(UtilClass.getCurrentDate()
                    + "::Log level set"
                    + UtilClass.getProperties().getProperty(
                            UtilClass.PropertyKeys.PROP_LOG_LEVEL));

    }

    public static MessageListenerImpl init() {

        if (debug)
            log.info(UtilClass.getCurrentDate()
                    + "::Instantiating MessageListenerImpl");

        MessageListenerImpl m = new MessageListenerImpl();

        if (debug)
            log.info(UtilClass.getCurrentDate()
                    + "::Instantiated MessageListenerImpl");

        return m;
    }

    public static void start(MessageListenerImpl m) {

        if (debug)
            log.info(UtilClass.getCurrentDate() + "::Starting instance");
        m.start();
        if (debug)
            log.info(UtilClass.getCurrentDate() + "::Started instance");
    }

    public static void stop(MessageListenerImpl m) {

        if (debug)
            log.debug(UtilClass.getCurrentDate() + "::Stopping instance");
        m.stop();
        System.exit(1); // to stop the java program
        if (debug)
            log.debug(UtilClass.getCurrentDate() + "::Stopped instance");

    }

}

servlet基本上调用启动init的{​​{1}}中的MainApp方法。但是当我直接调用Listener方法时,日志记录不起作用。当我直接从init调用main方法时,Tomcat服务器没有开始。请告诉我这里出了什么问题。

的web.xml

AppServlet

catalina.out中

  

31-Jul-2015 09:13:40.822 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log服务器版本:   Apache Tomcat / 8.0.24 31-Jul-2015 09:13:40.823 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log服务器内置:
  2015年7月1日20:19:55 UTC 31-Jul-2015 09:13:40.823 INFO [主要]   org.apache.catalina.startup.VersionLoggerListener.log服务器编号:
  8.0.24.0 31-Jul-2015 09:13:40.823 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log操作系统名称:
  Windows 7 31-Jul-2015 09:13:40.824 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log操作系统版本:
  6.1 31-Jul-2015 09:13:40.824 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log架构:
  amd64 31-Jul-2015 09:13:40.824 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log Java Home:
  C:\ Program Files \ Java \ jdk1.8.0_25 \ jre 31-Jul-2015 09:13:40.824 INFO   [main] org.apache.catalina.startup.VersionLoggerListener.log JVM   版本:1.8.0_25-b18 31-Jul-2015 09:13:40.824 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log JVM供应商:
  Oracle Corporation 31-Jul-2015 09:13:40.824 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:
  C:\ apache-tomcat-8.0.24 31-Jul-2015 09:13:40.825 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:
  C:\ apache-tomcat-8.0.24 31-Jul-2015 09:13:40.825 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:   -Djava.util.logging.config.file = C:\ Apache的Tomcat的8.0.24 \ CONF \ logging.properties   2015年7月31日09:13:40.825 INFO [主要]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:   -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager 31-Jul-2015 09:13:40.826 INFO [main]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:-Djava.endorsed.dirs = C:\ apache-tomcat-8.0.24 \ endorsed
  2015年7月31日09:13:40.826信息[主要]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:-Dcatalina.base = C:\ apache-tomcat-8.0.24 2015年7月31日   09:13:40.827 INFO [主要]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:-Dcatalina.home = C:\ apache-tomcat-8.0.24 2015年7月31日   09:13:40.828 INFO [主要]   org.apache.catalina.startup.VersionLoggerListener.log命令行   参数:-Djava.io.tmpdir = C:\ apache-tomcat-8.0.24 \ temp 2015年7月31日   09:13:40.828 INFO [主要]   org.apache.catalina.core.AprLifecycleListener.lifecycleEvent已加载   使用APR版本1.5.1的基于APR的Apache Tomcat Native库1.1.33。   2015年7月31日09:13:40.829信息[主要]   org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR   功能:IPv6 [true],sendfile [true],接受过滤器[false],   随机[true]。 2015年7月31日09:13:41.537 INFO [主要]   org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL   已成功初始化(OpenSSL 1.0.1m 2015年3月19日)2015年7月31日   09:13:41.686 INFO [main] org.apache.coyote.AbstractProtocol.init   初始化ProtocolHandler [" http-apr-8080"] 2015年7月31日   09:13:41.695 INFO [main] org.apache.coyote.AbstractProtocol.init   初始化ProtocolHandler [" ajp-apr-8009"] 2015年7月31日   09:13:41.697 INFO [main] org.apache.catalina.startup.Catalina.load   初始化处理时间为1342 ms 31-Jul-2015 09:13:41.726 INFO   [main] org.apache.catalina.core.StandardService.startInternal Starting   服务Catalina 31-Jul-2015 09:13:41.727 INFO [main]   org.apache.catalina.core.StandardEngine.startInternal启动Servlet   引擎:Apache Tomcat / 8.0.24 31-Jul-2015 09:13:41.756 INFO   [本地主机 - startStop-1]   org.apache.catalina.startup.HostConfig.deployWAR部署Web   应用档案   C:\ apache-tomcat-8.0.24 \ webapps \ CSPC_greenfield.war 2015年7月31日   09:13:43.653 INFO [localhost-startStop-1]   org.apache.jasper.servlet.TldScanner.scanJars至少有一个JAR   扫描TLD但尚未包含TLD。为此启用调试日志记录   记录器获取已扫描但没有TLD的JAR的完整列表   发现在他们身上。在扫描期间跳过不需要的JAR可以改善   启动时间和JSP编译时间。 2015年7月31日09:13:43.907 INFO   [本地主机 - startStop-1]   org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom   使用创建会话ID生成的SecureRandom实例   [SHA1PRNG]花了[222]毫秒。

1 个答案:

答案 0 :(得分:-1)

当我在MainApp.init()方法中调用MainApp中的调试和其他方法时,问题得以解决。

相关问题