首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WinRun4j记录Windows服务中的异常

使用WinRun4j记录Windows服务中的异常
EN

Stack Overflow用户
提问于 2014-03-03 21:39:00
回答 1查看 522关注 0票数 1

我一直在尝试从我的JAR文件运行Windows服务。WinRun4j似乎能做这项工作,但我不能让它工作。我尤其发现它很难调试。我尝试了几种日志记录方法(写入.txt文件,WinRun4j的EventLog类),但似乎无法生成任何输出。

服务安装正常(最终..)我就可以启动它了。它应该启动一个Jetty服务器,该服务器生成一个可以通过HTTP访问的XML文件。该应用程序适用于独立版本,但不适用于该服务。该服务已启动,但只要我调用URL,它就会停止,不会生成错误。

这是我的Service类:

代码语言:javascript
复制
package com.some.package;

import org.boris.winrun4j.AbstractService;
import org.boris.winrun4j.ServiceException;

/**
* A basic service.
*/
public class StockService extends AbstractService {
   private StockServer srv;

    public int serviceMain(String[] args) throws ServiceException {
    while (!shutdown) {
        try {
        Thread.sleep(5000);
        } catch(InterruptedException e) {

        }
        if(srv == null) {
    try {
            srv = new StockServer();
        srv.start();
    } catch (Exception e) {

        }
        }
    }

    return 0;
    }
}

我发现如果我从serviceMain类启动Jetty服务器,服务就不想启动。我不得不开始一个新的线程。所以StockServer扩展了线程:

代码语言:javascript
复制
public class StockServer extends Thread {

    private Server server;

    public void run() {

        if (server == null) {
        try {
        server = new Server(8080);

        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
        context.setContextPath("/example");
        StockServlet stockServlet = new StockServlet();

        context.addServlet(new ServletHolder(stockServlet), "/stock/*");

        server.setHandler(context);
    server.setStopAtShutdown(true);
    server.start();
        server.join();
        } catch (Exception e) {
        System.out.println(e.getMessage());
        }
    }
    }
}

由于它作为Java应用程序运行得很好,我只是不知道如何调试它。我希望你们中的一个能给我指出正确的方向:)。

EN

回答 1

Stack Overflow用户

发布于 2014-03-04 18:55:46

我最终使用的是Java Service Wrapper。这看起来复杂得多,但最终却变得相当简单。默认情况下,它还提供日志记录,因此我可以轻松地修复错误。JSW无法找到正确的JDK,因为JSW是32位的,而我安装的是JDK1.7 64位(和1.6 32位)。安装JDK1.7 32位修复了这个问题。这可能也是WinRun4j的问题,但我永远不会知道:)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22148282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档