3 つのアプリケーションをビルドします。各アプリケーションの評価には 20 分以上かかります。次のディレクトリに 3 つのファイルを配置しました。
ProjectcContextPath/WEB-INF/classes/PackageName/ExternalFileProcess.class
ProjectcContextPath/JSPFiles/index.jsp
ProjectcContextPath/WEB-INF/classes/AnotherFile.class
Java
これらの 3 つのアプリケーションを、メッセージ ヘッドに基づいて という別のファイル名から呼び出したいと思います。これらのMessageConsumer.java
メッセージは からフェッチされActivemq
ます。
一度にすべてのメッセージを取得したくありません。前の処理が完了すると、MessageConsumer.java
から別のメッセージをフェッチするだけActivemq
です。
理解を深めるために、いくつかのモックアップを作成しました。それらを確認してください。確認後、皆さんが明確に理解できるようになります。
ワークフロー:
Xml データ構造。
私がしたこと:
最終的な 3 つのアプリケーションをビルドしましたが、正常に動作しています。
xmlfilepath と Message-head の値をパラメーターとして渡すと、対応する
ApplicationRealPath
タグの値を返す関数を作成しました。
私がしたいこと:
メッセージを取得したい
Activemq
メッセージからメッセージヘッドを見つける
メッセージ ヘッドと xml ファイル パスを別の関数に渡します。対応する
ApplicationRealPath
値を取得します。そのアプリケーションをトリガーします。
Activemq
以前にトリガーされたアプリケーション プロセスが完了したら、からもう 1 つのメッセージを取得します
本当に私はこれを3日から試していますが、それでもわかりませんでした。次のコードを試しましたが、機能していません
package PackageName;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageConsumer extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
//creating connectionfactory object for way
ConnectionFactory connectionFactory=new
ActiveMQConnectionFactory("admin","admin","tcp://localhost:61617");
//establishing the connection b/w this Application and Activemq
Connection connection=connectionFactory.createConnection();
QueueSession session=(QueueSession) connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
Queue queue=session.createQueue("MessageTesing");
final QueueReceiver queueReceiver =session.createReceiver(queue);
connection.start();
while (true) {
Message message = queueReceiver.receive();
message.acknowledge();
TextMessage textmsg=(TextMessage) message;
if (textmsg.getText()=="TestMessage35") {
RequestDispatcher rd=request.getRequestDispatcher("servletName");
rd.forward(request, response ) ;
System.out.println(textmsg.getJMSDestination());
}
}
}
catch (Exception e) {
// TODO: handle exception
}
}
}
私はJavaが初めてです。コードで明確に説明できますか。
ありがとう。