Я использую JBoss AS 7.1.0.CR1b. У меня есть несколько источников данных, определенных в моем standalone.xml, например
<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 из объекта Connection из этого источника данных также не содержат таких гранулярных свойств JBoss.
Мой код будет работать внутри контейнера с указанным источником данных, поэтому все должно быть доступно. Я посмотрел на интерфейс IronJacamar org.jboss.jca.common.api.metadata.ds.DataSource
и его реализующий класс, и у них, кажется, есть доступные перехватчики необходимой мне информации, но я не могу найти информацию о том, как создавать такие объекты с этими уже развернутыми ресурсами в контейнер (только конструктор в impl включает в себя ввод всех свойств вручную).
Интерфейс командной строки JBoss AS 7 позволяет вам перемещаться и перечислять источники данных как систему каталогов. http://www.paykin.info/java/add-datasource-programaticaly-cli-jboss-7/ предоставляет отличный пост о том, как использовать то, что я считаю API управления Java, для взаимодействия с подсистемой, но, похоже, это связано с подключением к целевому серверу JBoss. Мой код уже работает на этом сервере, поэтому наверняка должен быть более простой способ сделать это?
Надеюсь, кто-нибудь может помочь. Большое спасибо.