ファイルをキューに入れるために、次の ActiveMq プログラムを実行しています。
public static void main(String[] args) throws JMSException, IOException {
FileInputStream in;
//Write the file from some location that is to be uploaded on ActiveMQ server
in = new FileInputStream("d:\\test-transfer-doc-1.docx");
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
"tcp://localhost:61616?jms.blobTransferPolicy.defaultUploadUrl=http://admin:admin@localhost:8161/fileserver/");
ActiveMQConnection connection = (ActiveMQConnection) connectionFactory
.createConnection();
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue destination = session.createQueue("stream.file");
OutputStream out = connection.createOutputStream(destination);
// now write the file on to ActiveMQ
byte[] buffer = new byte[1024];
for (int bytesRead=0;bytesRead!=-1;) {
bytesRead = in.read(buffer);
System.out.println("bytes read="+bytesRead);
if (bytesRead == -1) {
out.close();
System.out.println("Now existiong from prog");
//System.exit(0);
break;
}
else{
System.out.println("sender\r\n");
out.write(buffer, 0, bytesRead);
}
}
System.out.println("After for loop");
}
bytesRead == -1 の場合、タスクが完了したときにプログラムを JVM からアンロードしたいと考えています。この目的のために、最初にbreak
キーワードを使用し、Eclipse コンソールで次の出力を生成しました。
これを使用すると、コンソールの赤いボタンがまだアクティブであるため、プログラムは JVM からアンロードされません。
この目的のために System.exit(0) を使用し、JVM からプログラムを終了しました。しかし、この目的で System.exit(0) を使用したくありません。代わりに単純な voidreturn
も使用しようとしましbreak
たが、それも機能しません。
この場合、プログラムを終了するために機能しない理由と、まだ実行されている理由break
を教えてください。return
よろしく、
アルン