2012-04-27 1 views
2

ソケット通信に関するWebプロジェクトを作成しようとしましたが、tomcatがint.inをスタックしていました。プロジェクトが開始されるときに開始するリスナークラス。しかし、私はそれがバネのconfig xmlが始まらなかったと思われる問題に会う。
私は、サーバークラスが実行中のTomcatをブロックしているすべての時間を聴いていると思います。
どうすればこの問題を解決できますか?
web.xmlのリスナークラスでソケットサーバーを設定しています。実行中のTomcatをブロックします

<listener> 
    <listener-class>socket.ServerListener</listener-class> 
</listener> 
<servlet> 
    <servlet-name>context</servlet-name> 
    <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<context-param> 
<param-name>contextConfigLocation</param-name> 
<param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 
+0

「在庫」/「在庫あり」とはどういう意味ですか?何が起こっているか(または起こっていないか)少し正確に説明できますか? – Mat

+0

私はTomcatがつまらない、ひどいために申し訳ありません。 – Dumlys

+0

あなたの投稿を修正して修正することができます。タグのすぐ下に「編集」リンクがあります。しかし、詳細を追加してください。 "つまらない"は実際には何も記述していません – Mat

答えて

1

あなたはリスナーと呼ばれる同じスレッドにaccept()を呼び出している場合の主なコードは、もちろんTomcatはブロックされます。 Tomcatは、リスナメソッドが返るまで続行できません。

モラル:しないでください。別のスレッドを使用します。

+0

これは正しい方法であるようです。それを行う方法の詳細を教えてください。サーバースレッドをしばらく停止する必要がある場合は、 – Dumlys

+0

@Dumlysあなたはサーバスレッド*を一切停止してはいけません。*それは私があなたに伝えていることです。 'accept()'を実行するために別のスレッドを開始し、受け入れられたソケットごとに別のスレッドを開始します。 – EJP

+0

ありがとう!私は試してみるよ。 – Dumlys

関連する問題