私はJBoss AS 7.1.0.CR1bを実行しています。私は私のstandalone.xmlにいくつかのデータソースを定義しています。JavaコードでJBoss AS 7のデータソースプロパティを表示するには?
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:/MyDS" pool-name="MyDS_Pool" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>some-url</connection-url>
<driver>the-driver</driver>
[etc]
すべて正常です。
私のコードでここに含まれている情報、具体的にはconnection-url
とdriver
の情報にアクセスしようとしています。私は通常通り、JNDIからデータソースを取得しようとしましたが、これらのプロパティへのアクセスを提供するためには表示されません
:
// catches removed
InitialContext context;
DataSource dataSource = null;
context = new InitialContext();
dataSource = (DataSource) context.lookup(jndi);
CLIENTINFOとのDatabaseMetaDataこのデータソースからの接続オブジェクトからも「ドンこれらの細かいJBossプロパティも含まれています。
私のコードは、データソースが指定されたコンテナ内で実行されるため、すべてのコードを利用できるようになります。私はIronJacamarインターフェイスorg.jboss.jca.common.api.metadata.ds.DataSource
とその実装クラスを見てきましたが、これらのクラスは必要な情報にアクセス可能なフックを持っているようですが、コンテナ内に既に配置されているこれらのリソースを持つオブジェクトを作成する方法に関する情報は見つかりません(インプリメンテーションのコンストラクターでのみ、すべてのプロパティーを手動で入力する必要があります)。
JBoss AS 7のコマンドラインインターフェイスでは、データソースをディレクトリシステムとしてナビゲートして一覧表示できます。 http://www.paykin.info/java/add-datasource-programaticaly-cli-jboss-7/は、Java Management APIがサブシステムとやりとりすると思うものをどのように使用するかに関する優れた記事を提供しますが、これはターゲットJBossサーバーに接続するように見えます。私のコードはすでに内にある内にあるので、これを行うにはもっと簡単な方法が必要でしょうか?
誰かがお手伝いします。どうもありがとう。
ありがとう@ JamesR.Perkinsさん、ありがとうございます - それを書き留める時間を取ってくれてありがとう。 'InetAddress.getByName(" 127.0.0.1 ")、9999)を使用してクライアントを作成しなければならないという事実は、サーバーへの何らかの外部呼び出しを含むことを示唆しています。 *その環境で走っている*。明示的な外部呼び出しなしで、サブシステム/データソースのプロパティを取得するために、いくつかのJBossクラスのインスタンスを挿入できることを期待していました。そうでない場合は、私はあなたの提案を確かに使用します。再度、感謝します。 –
@BenKirby AFAIK注射できるものは何もありません。それは本当にクライアントとリモートスタイルの接続が必要な管理操作です。私が何か他のものを見つけるか、何かを考え出すなら、私は答えを編集します。 :-) –
JBoss CLI公開API [https://community.jboss.org/wiki/JBossAS7Command-linePublicAPI](https://community.jboss.org/wiki/JBossAS7Command-linePublicAPI)が見つかりました。必要ないリモート接続ですが、現在推奨しているJBossバージョン(「JBoss AS 7.1.1以降」)にアップグレードすることはできません。だからあなたのソリューションに行ってきました - 再び応答に感謝します。 –