问题描述
我有一个调用 MMQ 侦听器的 Java Servlet。 我正在 Tomcat 服务器中部署应用程序
应用程序小程序
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);
}
}
主应用程序
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 基本上调用MainApp
的init
方法,该方法启动Listener
。
但是当我直接调用init
方法时,日志记录不起作用。
当我直接从AppServlet
调用main
方法时,Tomcat 服务器没有启动。
请让我知道这里出了什么问题。
网页.xml
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>com.cisco.cstg.platform.AppServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/eman</url-pattern>
</servlet-mapping>
卡特琳娜.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 [main] 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 主页:
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 信息 [主要] 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 31-Jul-2015 09:13:40.825 INFO [main] 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
31-Jul-2015 09:13:40.826 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.base=C:\\apache-tomcat-8.0.24 31-Jul-2015 09 :13:40.827 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Dcatalina.home=C:\\apache-tomcat-8.0.24 31-Jul-2015 09:13:40.828 INFO [ main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数:-Djava.io.tmpdir=C:\\apache-tomcat-8.0.24\\temp 31-Jul-2015 09:13:40.828 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 使用 APR 版本 1.5.1 加载基于 APR 的 Apache Tomcat 本机库 1.1.33。 2015 年 7 月 31 日 09:13:40.829 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR 功能:IPv6 [true]、sendfile [true]、接受过滤器 [false]、随机 [true]。 31-Jul-2015 09:13:41.537 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL 成功初始化(OpenSSL 1.0.1m 2015 年 3 月 19 日)31-Jul-2015 09:13:41.686 INFO ] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["http-apr-8080"] 31-Jul-2015 09:13:41.695 INFO [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["ajp- apr-8009"] 31-Jul-2015 09:13:41.697 INFO [main] org.apache.catalina.startup.Catalina.load 初始化处理时间为 1342 ms 31-Jul-2015 09:13:41.726 org INFO [main] .apache.catalina.core.StandardService.startInternal 启动服务 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 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR 部署 Web 应用程序存档 C:\\apache-tomcat-8.0.24\\webapps\\CSPC_greenfield.war 31-Jul -2015 09:13:43.653 信息 [本地 lhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少对一个 JAR 进行了 TLD 扫描,但不包含 TLD。 为该记录器启用调试日志记录以获取已扫描但未在其中找到 TLD 的完整 JAR 列表。 在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 2015 年 7 月 31 日 09:13:43.907 信息 [localhost-startStop-1] org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 使用 [SHA1PRNG] 创建用于会话 ID 生成的 SecureRandom 实例花费了 [222] 毫秒。
1楼
当我在 MainApp.init() 方法中调用 MainApp 中的调试和其他方法时,问题解决了。