HTTPクライアントのサンプルプログラム

HTTPサンプルプログラムを実行するには、まず、ORBのHTTPトンネルサーブレットをインストールする必要があります。このサンプルは、次の2つのセクションに分かれています。

HTTPトンネルのインストール

クライアントの実行

サーブレットコンテナにトンネルがインストールされている場合、最初の手順を飛ばしても構いません。

1 HTTPトンネルのインストール

ORBのHTTPトンネルは、任意のサーブレットコンテナにインストールできる標準サーブレットです。このトンネルは、たとえば、Novell eXtend Application ServerやTomcatにインストールできます。システムにおけるORBのインストールに応じて、適切なインストール方法を選択する必要があります。

  1. ORBがサーブレットコンテナにより使用されるJREにJava 2拡張としてインストールされている場合、非常に簡単なweb.xmlファイルを作成して、小さなWARファイルをパッケージ化する必要があります。Java 2拡張で、拡張にあるクラスだけをロードできる場合、servlet.jarファイルをその拡張(通常はjre/lib/extディレクトリ)にもコピーする必要があります。
  2. ORBがJava 2拡張としてインストールされていない場合、mp-orb.jarファイルとORBライセンスファイルを含むWARファイルを作成する必要があります。アーカイブの構造は次のようになります。
    WEB-INF
          |
    +--- web.xml
          |
    +--- lib
                |
                +--- mp-orb.jar
                |
    +--- license.jar
    
    このWARの作成例については、build.{sh,bat}を参照してください。

WARファイルを作成したら、サーブレットコンテナにインストールする必要があります。SilverCmdユーティリティについては、Novell eXtend Application Serverのマニュアルを参照してください。Novell eXtend Application Serverに配備する場合、jb_tunnel_deploy_plan.xml配備プランを使用できます。Tomcatでは、WARをwebappsディレクトリにコピーして、Tomcatを再起動する必要があります。

2 クライアントの実行

クライアント側では、IIOPまたはHTTPのいずれを使用して実行しても大きな違いはありません(パフォーマンスは除く)。ただし、クライアントは、トンネルが使用されるランタイムを指示するには、ORBHttpTunnelURLコマンドラインプロパティを指定する必要があります。 このプロパティの値は、ORBのHTTPトンネルサーブレットが実行されているURLです。

Clientクラスのソースは、次のとおりです。

package http;
                                                                           
import javax.naming.InitialContext;
                                                                           
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.QueueReceiver;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
                                                                           
/**
   This client should be run with the ORBHttpTunnelURL property.たとえば、次のように入力します。
 
   
      jmqrun -J-DORBHttpTunnelURL=http://titus:80/tunnel http.Client
   
*/ public class Client { public static void main(String[] args) throws Exception { | // get the initial context | InitialContext ctx = new InitialContext(); | | // lookup the queue object | Queue queue = (Queue) ctx.lookup("queue/queue0"); | | // lookup the queue connection factory | QueueConnectionFactory connFactory = (QueueConnectionFactory) ctx. | lookup("queue/connectionFactory"); | | // create a queue connection | QueueConnection queueConn = connFactory.createQueueConnection(); | | // start the connection | queueConn.start(); | | // create a queue session | QueueSession queueSession = queueConn.createQueueSession(false, | Session.AUTO_ACKNOWLEDGE); | | if (args.length > 0 && args[0].equals("-receive")) | { | | // create a queue receiver | | QueueReceiver queueReceiver = queueSession.createReceiver(queue); | | | | // receive a message | | TextMessage message = (TextMessage) queueReceiver.receive(); | | | | // print the message | | System.out.println("received: " + message.getText()); | } | else | { | | // create a queue sender | | QueueSender queueSender = queueSession.createSender(queue); | | | | // create a simple message to say "Hello" | | TextMessage message = queueSession.createTextMessage("Hello"); | | | | // send the message | | queueSender.send(message); | } | | // close the queue connection | queueConn.close(); } }

これは普通のキュー送信者および受信者で、デフォルトではメッセージをキューに送信し、-receiveフラグ付きで実行されるとキューからメッセージを受信します。 jmqrunクライアント実行側で-Jフラグを使用して、トンネルプロパティを指定できます。

jmqrun -J-DORBHttpTunnelURL=http://titus:80/tunnel http.Client
ブラウザでトンネルURLを開いて、トンネルが正常に実行されているか確認してください。トンネルは、HTTP GETを理解できないことを示すエラーメッセージを表示します。 また、JMSサーバが、サーブレットコンテナからアクセスできるホストで実行されているか確認する必要もあります。

トップに戻る


Copyright © 2000-2003, Novell, Inc.All rights reserved.