2016-03-01 106 views
1

我想让一个Java应用程序监听一个端口。我从命令提示符运行所需的命令,它监听端口,我看到Server is listening on port 7070作为输出,命令行不能通过低位线。如果关闭命令提示符,则会断开连接,然后关闭该端口。不断收听端口

下面是相关代码:

import java.io.InputStream; 
import java.io.FileReader; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 
import java.io.IOException; 

import org.xml.sax.InputSource; 

import de.l3s.boilerpipe.document.TextDocument; 
import de.l3s.boilerpipe.extractors.ArticleExtractor; 
import de.l3s.boilerpipe.sax.BoilerpipeSAXInput; 


// Language detect librarys 
import com.cybozu.labs.langdetect.*; 

import net.arnx.jsonic.JSON; 
import net.arnx.jsonic.JSONException; 


import java.io.*; 
import java.net.*; 


import java.util.concurrent.Executors; 
import com.sun.net.httpserver.Headers; 
import com.sun.net.httpserver.HttpExchange; 
import com.sun.net.httpserver.HttpHandler; 
import com.sun.net.httpserver.HttpServer; 

class ExampleProgram { 

public static void main(String[] args) throws Exception { 

EveryDetector evr = new EveryDetector(); 
InetSocketAddress addr = new InetSocketAddress("localhost",7070); 
HttpServer server = HttpServer.create(addr, 0); 

MyHandler hndl = new MyHandler(); 
hndl.setDetector(evr); 

MyHandlerExtractContent hnd2 = new MyHandlerExtractContent(); 
hnd2.setDetector(evr); 

MyHandlerDetectLanguage hnd3 = new MyHandlerDetectLanguage(); 
hnd3.setDetector(evr); 

server.createContext("/",hndl); 
server.createContext("/extractcontent",hnd2); 
server.createContext("/detectlanguage",hnd3); 
server.setExecutor(Executors.newCachedThreadPool()); 
server.start(); 
System.out.println("Server is listening on port 7070"); 


} 
} 

我该怎么办?

+0

你想关闭你的shell /窗口后继续java程序吗?请编辑澄清。 –

+0

关闭shell后,Java程序不会继续。这是主要问题。 – Stewie

+0

如果你在linux下运行,你可以使用'nohup'命令。请参阅[这里](http://stackoverflow.com/questions/4797050/how-to-run-process-as-background-and-never-die) –

回答

1

这听起来像你应该运行你的程序作为守护进程。 Apache Commons Daemon有一个jsvc工具,可以为您的程序做到这一点。你的程序有

注进行修改,要么实现Daemon接口或实现的jsvc页面上列出的initstartstop,并destroy方法。

+0

好吧,但是我需要重新构造我的所有Java应用程序以将其作为守护程序运行吗? – Stewie

+0

@arkanas不,你不... – Marged