1

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 データ構造。

ここに画像の説明を入力

私がしたこと:

  1. 最終的な 3 つのアプリケーションをビルドしましたが、正常に動作しています。

  2. xmlfilepath と Message-head の値をパラメーターとして渡すと、対応するApplicationRealPathタグの値を返す関数を作成しました。

私がしたいこと:

  1. メッセージを取得したいActivemq

  2. メッセージからメッセージヘッドを見つける

  3. メッセージ ヘッドと xml ファイル パスを別の関数に渡します。対応するApplicationRealPath値を取得します。

  4. そのアプリケーションをトリガーします。

  5. 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が初めてです。コードで明確に説明できますか。

ありがとう。

4

1 に答える 1