日期:2014-05-17  浏览次数:20778 次

求助:tomcat启动报错
本帖最后由 nuaa_meteor 于 2013-12-16 19:38:51 编辑
情况如下:
    小弟想在tomcat启动的时候,利用ServletContextListener的contextInitialized()方法去开启一个线程,用来跟客户端进行TCP/IP通信。代码很简单,如下:
	public void contextInitialized(ServletContextEvent sce) {
// TODO Auto-generated method stub
AndroidQuery.this.isQuit=false;
try {
serverSocket=new ServerSocket(12345);
new Thread(new QueryListener()).start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

System.out.println("tomcat startup*******");
}

private class QueryListener implements Runnable{

@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("服务器主线程启动");
try {
while(!AndroidQuery.this.isQuit){

Socket clientSocket=serverSocket.accept();
new HandleQuery(clientSocket).start();
System.out.println("子线程已启动");
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

tomcat启动时报错。报错内容如下:
严重: Catalina.stop: 
java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:409)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:337)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)

求各位指教,谢谢!哦,对了,我还想知道,利用tomcat初始化的的时候(即在contextInitialized方法里),启动一个服务器线程来与客户端进行TCP/IP通信,这种想法可行么?是不是这种想法不行才导致这种错误