アプリケーションサーバーのEJBアプリケーションやWebサービスにアクセスするクライアントマシン上で実行されるアプリケーションのことを、Jakarta EEアプリケーションクライアントと呼びます。
本製品では、このJakarta EEアプリケーションクライアントを実行する実行環境として、アプリケーションクライアントコンテナを提供します。WebコンテナやEJBコンテナとは違い、アプリケーションクライアントコンテナは軽量のコンテナで、クライアントマシンで動作します。
Jakarta EEアプリケーションクライアントは、mainメソッドを持っているため、通常のJava SEスタンドアロンアプリケーションと同様にjavaコマンドでも実行可能です。しかし、アプリケーションクライアントコンテナ上で動作させることで以下の利点があります。
Jakarta EEアプリケーションクライアントが動作する前に、アプリケーションクライアントコンテナが自動的にクラスパスを設定します。また、アプリケーションクライアントコンテナ用のGlassFish Serverのdeployment descriptorファイル (glassfish-acc.xml)を使用して、Jakarta EEアプリケーションクライアントの動作をカスタマイズできます。
Jakarta EEアプリケーションクライアントでは、依存性の注入(Dependency Injection)を利用できます。Jakarta EEアプリケーションクライアントが動作する前に、アプリケーションクライアントコンテナはアプリケーション内のアノテーションを読み込んでオブジェクトを注入します。アノテーションの利用については、「3.1.5 クライアントアプリケーションの作成方法」を参照してください。
Jakarta EE規約では、deployment descriptorファイル (application-client.xml)にコールバックハンドラなどを指定できます。アプリケーションクライアントコンテナは定義された情報を元に、指定された処理をコールバックします。
また、deployment descriptorファイルに定義された情報を元に、JNDIのjava:comp環境ネーミングコンテキストを利用できます。
本説明では、アプリケーションクライアントコンテナ上で動作させるアプリケーションをJakarta EEアプリケーションクライアントと呼び、javaコマンドで実行するアプリケーションをJava SEスタンドアロンアプリケーションと呼びます。
注意
アプリケーションクライアントコンテナは、アプリケーションの処理に関わらずサーバーのJNDIへの接続を必要とします。ファイアーウォールを跨り、サーバー上のアプリケーションを呼び出す場合、アプリケーションクライアントコンテナからサーバーのIIOPリスナーポートへアクセスが許可されるようにファイアーウォールの設定をする必要があります。ただし、このような設定はセキュリティ上のリスクが高く推奨しません。
JDK8においてHTTPS通信でTLS1.3を使用する場合は、以下に示す2つのシステムプロパティを設定して起動します。
jdk.tls.client.protocols
https.protocols
例
TLS1.3だけを有効にする場合
-Djdk.tls.client.protocols=TLSv1.3 -Dhttps.protocols=TLSv1.3 |
例
TLS1.3とTLS1.2を有効にする場合
-Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dhttps.protocols=TLSv1.3,TLSv1.2 |
Jakarta EEアプリケーションクライアントの場合の設定方法は、「11.3 appclient」を参照してください。