スプリングブートに組み込まれたTomcatが起動する直前にコンソール入力を読み取ることは可能ですか?おそらくアプリケーションフローは、ユーザーにユーザー名とパスワードを要求することであり、それはアプリケーションを起動できるようにするために使用されます。 Java -jar
コマンドを使用すると機能します。問題は、コンソール(LinuxではSSH)を閉じるとプロセスが停止することです。それについて検索してみたところ、プロセスがコンソールに関連付けられていることがわかったので、Nohup
を使用してみました。問題は、それを使用するとコンソール入力を要求できないことです。他に方法はありますか?
これはあなたを助けることができると思います。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Prompt for the user's name
System.out.print("Enter your name: ");
// get their input as a String
String username = scanner.next();
System.out.println(username);
SpringApplication.run(Application.class, args);
}
Javaプログラムを実行する前に、シェルスクリプトでユーザー名とパスワードを取得し、それらを引数としてアプリケーションに渡します。
#!/bin/bash
# Ask login details
read -p 'user: ' uservar
read -sp 'password: ' passvar
echo
これで、NohupでJavaコマンドを実行し、jvmプロパティとしてユーザーパスワードを渡すことができるユーザーとパスワードができました。他の回答で提案されているように、プログラム引数としてユーザーとパスワードを渡すこともできます。
お気に入り Nohup Java -jar abc.jar -Duser=$user -Dpassword=$password
そして、を使用してこれらのプロパティをフェッチします
String user = System.getProperty("String");
String password = System.getProperty("password");
logger + System.out.println()出力のようなコンソール入力で完全なログを記録したい場合は、
Nohup Java -jar yourJarFile.jar admin password >> fullLogOutput.log &
問題は、コンソール(LinuxではSSH)を閉じると、プロセスが停止することです。
したがって、jarファイルをバックグラウンドプロセスとして実行する必要があります。コンソールを閉じたまま停止することはできません。フルコマンドの後に&記号を追加するだけで、停止しません。次のコマンドを使用できます。
Nohup Java -jar yourJarFile.jar &
コンソール出力で完全なログを取得するため
Nohup Java -jar yourJarFile.jar >> fullLogOutput.log &
&記号は、プログラムをバックグラウンドで実行するために使用されます。
Nohupユーティリティは、ログアウトした後でも、引数として渡されたコマンドをバックグラウンドで実行します。
バックグラウンドプロセスを停止するには、ps -aux
を使用してIDを取得し、(ID番号)を強制終了します。
ps -aux | grep yourJarFile.jar
ID番号を取得します。それを殺すために
Sudo kill -9 <pid>
Nohupを使用して、パラメーターを使用してjarを開始できます。ターミナルの新しい行で、パラメーターの入力を求められることはありません。ユーザーは、jarを起動するときにそれらをパラメーターとして追加できます。以下の詳細を参照してください。
例:
メインクラス
public static void main(String[] args) {
String username = args[0];
String password = args[1];
if(username.equals("admin") && password.equals("password")) {
SpringApplication.run(NohupApplication.class, args);
} else {
System.out.println("You are not authorized to start this application.");
}
}
無効な資格情報を使用
コマンド
Nohup Java -jar example.jar user password
Nohup.out
You are not authorized to start this application.
有効な資格情報を使用
コマンド
Nohup Java -jar example.jar admin password
Nohup.out
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.2.RELEASE)