0

我使用 WinRun4J 从 jar 文件创建了一个 Windows 服务,到目前为止它非常基础。

package org.boris.winrun4j.test;

import java.io.BufferedWriter;
import java.io.FileWriter;

import org.boris.winrun4j.Service;
import org.boris.winrun4j.ServiceException;

public class ServiceWrite implements Service
{   
private volatile boolean shutdown = false;

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

        }
        try {
            FileWriter fstream = new FileWriter("result.txt");
            BufferedWriter out = new BufferedWriter(fstream);
            out.write("Counts: " + count);
            out.close();
        } catch (Exception e){

        }
        count++;
    }
    return 0;
}
public int serviceRequest(int control) throws ServiceException {
    switch (control) {
    case SERVICE_CONTROL_STOP:
    case SERVICE_CONTROL_SHUTDOWN:
        shutdown = true;
        break;
    }
    return 0;
}
}

当服务启动时,它每隔几秒钟就会不断写入位于根文件夹中的 result.txt .. (仅用于尝试 WinRun4J)

现在我的问题是,我可以在服务 jar 中做一个方法吗,像这样

public void write(String s){
 //Write some string s to result.txt
}

然后从系统上不同的java文件调用这个方法,即

java WriteToFile SomeString

WriteToFile 应该使用一些参数调用 write 。

可能吗?如果是这样,怎么办?

这样做的总体目的是让服务运行,我可以通过 GUI 调用方法。

4

1 回答 1

0

“通过 GUI 调用方法”,你不能用 WinRun4J 来做。一般来说,出于安全原因,Windows 服务不能有 GUI(特殊情况除外)。

但是,还有其他工具可以从 Java 应用程序创建 Windows 服务,使用这些工具可以拥有带有 GUI 的服务并能够与桌面交互。

于 2013-04-11T19:02:37.480 回答