2012-05-08 209 views
1

我在Mac OS X Lion 10.7.3上使用Netbeans 7.1.2。Netbeans運行 - >停止生成不會停止正在運行的java進程

我有一個簡單的java服務器(使用netty)項目,並且在構建並運行項目之後,嘗試通過運行 - >停止運行來停止運行構建它不會終止java服務器進程。

例如,我的服務器應用程序使用端口8080,甚至在我停止從netbeans運行之後,端口8080正在使用中,應用程序繼續運行。我必須手動從活動監視器中終止Java進程。

什麼是正確的程序結束由Netbeans啓動運行的應用程序?

非常感謝您的幫助。先謝謝了。

回答

0

查看文檔:http://netty.io/docs/stable/guide/html/。向下滾動至第9節。關閉應用程序。

你的主要應用AHS看起來是這樣的:

package org.jboss.netty.example.time; 
public class TimeServer { 
    static final ChannelGroup allChannels = new DefaultChannelGroup("time-server"(35)); 
    public static void main(String[] args) throws Exception { 
     ... 
     ChannelFactory factory = ...; 
     ServerBootstrap bootstrap = ...; 
     ... 
     Channel channel = bootstrap.bind(...); 
     allChannels.add(channel); 

     ... 

     // Shutdown code 
     ChannelGroupFuture future = allChannels.close(); 
     future.awaitUninterruptibly(); 
     factory.releaseExternalResources(); 
    } 
} 

您處理器需要:

public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e) { 
    TimeServer.allChannels.add(e.getChannel()); 
} 

你必須:1。 存儲所有你在ChannelGroup 2.通道關閉時關閉所有頻道並釋放資源。

希望這會有所幫助。

+0

我只是使用netty示例中給出的HttpSnoopServer(org.jboss.netty.example.http.snoop)。我在服務器處理程序中看到以下代碼。 ChannelFuture future = e.getChannel()。write(response); //寫入操作完成後關閉非保持連接。 if(!keepAlive) { future.addListener(ChannelFutureListener.CLOSE); }' 和你在那裏指定的不一樣嗎? –