問題タブ [jca]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 証明書なしで Java セキュリティ プロバイダを追加する方法は?
証明書を取得するために Oracle に送信せずに、新しい Java セキュリティ プロバイダをローカル マシンに追加する方法はありますか?
問題は、私が JCA を勉強していて、独自のプロバイダーを実装するタスクがあることです (主なタスクは、いくつかのアルゴリズムを実装することです)。しかし、私のプロバイダーを実際に使用しないと、JCA の非常に重要な原則を理解することは不可能です。ドキュメントを読んだり、ソース ファイルを表示したりするだけでは十分ではありません。
jakarta-ee - JavaEEアプリを外部システムに接続する
Glassfish3.1で実行されているJavaEEアプリケーションがあり、Javaで記述されたレガシーシステムからの通知を受け入れる必要があります。このレガシーシステムは、システムの通知をサブスクライブすることを希望する外部アプリケーションが使用する必要があるJARファイルを提供します。
Java SEアプリケーションで使用する場合、ライブラリは次のように機能します。
- ライブラリは、レガシーシステムへの接続パラメータで初期化されます
- ライブラリはシステムに接続し、通知をリッスンします
- 私たちのアプリケーションは、インターフェースを実装することで通知を登録します
- 通知が来るたびに、実装クラスのメソッドが呼び出されます
システムから通知が送信されるたびにEJBメソッドが呼び出されるように、JavaEEでも同じことを再現したいと思います。
JCAは進むべき道ですか?ライブラリを初期化し、それ自体をリスナーとして登録するシングルトンEJBはどうですか?
このトピックに関する良い例を見つけるのは難しいので、何かガイダンスがあればありがたいです。
sockets - JCAインバウンド・ソケット・リソースを使用したMDBのデプロイメント後の構成
GlassFish 3.1.1 アプリケーション サーバーの JCA リソース アダプタを介して TCP ソケットで受信したデータから呼び出されるメッセージ駆動型 Bean があります。sun-ejb-jar.xml ファイルの配備記述子は、ソケットの URL とポートを指定します。MDB がデプロイされると、アプリ サーバーが MessageEndpointFactory と ActivationSpec をパラメーターとして使用して、リソース アダプターで endpointActivation() メソッドを実行することがわかります。
これは、デプロイ前に URL とポートが既知であり、XML ファイルで指定できる場合は正常に機能しますが、EJB コードで実行時に TCP ソケットを変更する機能が必要になりました。実行時にこれを行う方法について、JCA仕様に参照が見つかりませんでした。
参考までに、Oracle の Web サイトから仕様をダウンロードしました。 J2EE コネクタ アーキテクチャ仕様バージョン 1.5
基本的に、ActivationSpec を設定する次の XML コードを EJB コードに移動したいと考えています。
提案をありがとう。
jakarta-ee - GlassFish で、JCA アダプタを作成しているときに、匿名ユーザーを EIS ユーザーにマップする方法はありますか?
レガシー システム用に独自の JCA->EIS アダプタを作成しました。古いシステムへの接続中に認証に問題があります。
これを説明するのはかなり難しいです。GlassFish v3.1.1 では、独自の JCA アダプタを作成してインストールすると、「Work Security Maps」というタブが表示されます。これは、EIS システムのユーザー名/パスワードを入力する唯一の場所のようです。匿名 (認証されていない) ユーザーで EJB を実行したいのですが、EIS パスワードを入力するには、グループまたはユーザー マッピングを指定する必要があるようです。
JCAアダプタのすべての呼び出しを同じユーザー名/パスワードでEISシステムにヒットさせる方法はありますか?
望ましい動作は、JDBC の動作に似ています。データベースには 1 つのユーザー名/パスワードがあります。私のアプリケーションにはデータソースが挿入されていますが、現在のユーザーをデータベース ユーザーにマップする必要はありません。
編集: 最初の回答で説明したように、config-properties を使用してこれを実装できます。ただし、JCA 仕様によると、これが正しい方法だとは思いません。Websphere では、サブジェクトを呼び出すときに、JAAS クレデンシャルを「コンポーネント管理認証エイリアス」として割り当てることができます。
GlassFish ではこれができないようです。Subject.getPrivateCredentials(PasswordCredential.class) を呼び出すと、空の文字列を含む一連の資格情報が返されます。
java - 接続が自動的に閉じるJCAアダプターを構築することは可能ですか?
カスタムの「接続」クラスを使用してJCAアダプタを構築しています。私が見たすべての例では、接続クラスに「void close()」を配置することになっています。次に、カスタム接続クラスを使用しているときに、finallyブロックにclose()を呼び出す必要があります。
私は、開発者がfinallyブロックに近づくことを覚えているとは本当に信じていません。また、EntityManagerで「close()」を呼び出す必要はありません。コンテナは、EntityManagerの開閉を自動的に管理します。
コンテナにJCAアダプタへの接続を自動的に閉じる方法はありますか?finalize()をオーバーライドしようとしましたが、JVMが接続のクリーンアップを決定するまでに非常に長い時間がかかる可能性があります。
または、finallyブロックでclose()なしでカスタム接続クラスが使用されたすべての場所でfindbugsのプラグインを作成してIDを取得する方法を誰かが知っていれば、おそらくそれで大丈夫でしょう。
java - ObjectInputStream と CipherInputStream のフリーズ、ハング
クライアント/サーバー ベースの Java アプリケーションをプログラミングしていますが、クライアントとサーバーの両方で ObjectInputStream を構築するときにハングするため、問題が発生しました。
クライアント:
サーバ:
AES:
CipherInput/OutputStream を使用しない場合、すべて正常に動作するため、問題は何らかの形で CipherInput/OutputStream に関連しています。
sockets - Java EE アプリケーション: TCP サーバー + Web インターフェイス
管理用の Web インターフェイスを備えた TCP サーバーを実装する必要があります。
基本的に、tcp サーバーは新しい接続をリッスンし、現在の接続をアクティブに保ちますが、Web インターフェイスを使用すると、これらの接続に関する情報を確認し、それらとやり取りすることができます (メッセージの送信や受信した接続の確認など)...
私の懸念は、Web アプリケーションとの「TCP サーバー」の統合にあります。受信したメッセージについては、単純に共有 DB を使用できますが、TCP サーバーに接続されたピアにメッセージを送信する必要があります。
私の最善の策は、現在JCAです。いくつかの調査で、 http://code.google.com/p/jca-socketsという素晴らしいサンプルが見つかりました。このサンプルでは、Message Driven Bean を使用して、ポート 9000 経由で受信したメッセージを処理し、エコー サーバーとして機能します。
私は Java EE 6 の世界では初めてです。サンプルで何らかの方法で処理が行われた理由を理解しようとしています (たとえば、なぜ MDB なのか?)。
JCA の仕様はかなり複雑です。そのため、最初は上記のサンプルを適応させて、接続をアクティブにしてデータを交換しようとしています。私の次のステップは、サーブレットを介して文字列を受け入れ、特定のピアに転送するように適応させることです。
誰かがこれについて私を助けることができますか?
jms - JMS API で QueueManager を通過する
MQ では、既存のキュー マネージャーのインスタンスがある場合、アプリがアクセスできる queuemanager1 とします。queuemanager1 を介して別のキュー マネージャー queuemanager2 のキューを指すキューを作成することにより、メッセージを送信できます。これが行われるのは、アプリは queuemanager2 に直接アクセスできない可能性がありますが、queumanager1 をホストする MQ サーバーはアクセスできるためです。
コードは次のようになります。
MQQueue destQueue = queuemanager1.accessQueue("queFromAnotherMngr",CMQC.MQOO_OUTPUT | CMQC.MQOO_FAIL_IF_QUIESCING,"queuemanager2", null, null);
JBoss AS 6 用の IBM MQ JCA アダプターを使用するようにコードをリファクタリングしています。そのため、接続を JBoss で管理するには、通常の JMS API (InitialContext JNDI ルックアップ、プロデューサーなどを使用) に固執する必要があると考えています。
しかし、通常の JMS で、受信側の MQ サーバーがメッセージを別のキューマネージャー (queuemanager2) の別のキューに転送できるようにする方法がわかりません。
これまで調べたところ、MQ に送信されるオブジェクトには Message Queueing Message Descriptor (MQMD) と呼ばれるものがあり、「ReplyToQMgr」と「ReplyToQ」というフィールドがあります。JCA アダプターで JMS API を使用してこれらのフィールドを更新する方法を見つけたら、解決策があると思います。何かご意見は?アイデア?提案?ソリューション?ありがとう!
soa - 複数の BPEL/Mediator ペイロードを DB アダプターを使用して DB に格納する方法
XSD 定義の巨大な XML があり、XML 全体を格納するために約 50 を超える DB テーブルを必要とする複雑な型があります。子テーブルへの参照 ID を持つ 1 つの親テーブルがあります。
まず、親テーブルを保存してIDを取得し、同じIDを使用して子テーブルを保存します(最大5または6レベルの親子関係があります)BPELプロセスを定義/使用するにはどうすればよいですか。
ファイル アダプタを使用して XML ファイルを読み込もうとしています。また、必要に応じてメディエーターを使用して BPEL プロセスを定義する必要がありますか? また、DB アダプターを使用してデータを格納します。
私の質問は、複数の要素を持つ巨大な XSD を使用して BPEL プロセスを定義するにはどうすればよいですか? db アダプターを使用して 50 を超えるテーブルを格納し、子テーブルの親 ID を取得するにはどうすればよいですか?
どんな助けでも大歓迎です。
jndi - jboss7.1でのリソースアダプターのJNDIルックアップの例外
jboss 7.1.0.finalにリソースアダプター(XADisk)をデプロイしましたが、JNDIルックアップで例外が発生します。
ra.xmlを構成し、XADisk.rarをデプロイしました。次に、standalone.xmlに以下を追加しました。
今、私は単純なサーブレットからそれを使おうとしました:
サーブレットを呼び出すと、次のようになります。
jndiとjbossをよく理解している人が私を助けてくれることを願っています。