1

特定のポートでリッスンする単純な Java アプリケーションをラップする単純な xinetd 制御スクリプトがあります。xinetd は stdin/stdout を介して通信するため、netcat を使用してトラフィックを Java アプリとの間でリダイレクトしたいと考えています。現時点では、次の構成があります。

xinetd

service my_server 
{
   type            = UNLISTED
   disable         = no
   socket_type     = stream
   protocol        = tcp
   wait            = no
   user            = root
   port            = 2177
   log_on_success += DURATION HOST USERID
   server          = /opt/stuff/my_server.sh
}

my_server.sh

port=2111

# start the java process on the given port
java -jar /opt/stuff/myserver.jar "$port" &

# redirect traffic using netcat
retry_counter=0
until nc -v 127.0.0.1 ${port}
do
  let "retry_counter++"
  echo "retrying... (${retry_counter})" >> /var/log/smpp_nc
  sleep 0.1
done

netcat はアプリにデータを送信する仕事をしているようですが、その逆ではありません...ヘルプ/ヒントをいただければ幸いです!

4

1 に答える 1

0

Java サーバー コードを制御していると仮定すると、必要のないリダイレクトのレイヤーを追加することになります。シェル スクリプトを呼び出すように xinetd を構成する代わりに、Java アプリケーションを呼び出すように構成します。次に、Java の System.in と System.out を使用するだけです。本当に簡単です。

xinetd に接続すると、サーバーは stdin/stdout を使用できるようになります。

于 2016-02-21T20:33:16.863 に答える