我需要在运行时读取standalone.xml中定义的所有数据源数据,我需要服务器,用户,传递等(所有数据)以手动(通过jdbc或其他)连接到每个数据源。
例如,如果我有一个文件:standalone.xml,如下所示:(有2个数据源def ...)
1)
<xa-datasource jndi-name="java:jboss/datasources/MyDS1" pool-name="MyDSPool1" enabled="true">
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/mydb
</xa-datasource-property>
<driver>mysql</driver>
<security>
<user-name>myuser</user-name>
<password>mypass</password>
</security>
</xa-datasource>
<xa-datasource jndi-name="java:jboss/datasources/MyDS2" pool-name="MyDSPool2" enabled="true">
2)
<xa-datasource-property name="URL">
jdbc:mysql://localhost:3306/mydb
</xa-datasource-property>
<driver>mysql</driver>
<security>
<user-name>root</user-name>
<password>root</password>
</security>
</xa-datasource>
然后..在我的EAP应用程序中,在我的servlet(我的EAP应用程序的入口点)中,我需要读取standalone.xml(物理文件),然后获取每个数据源信息并连接到每个数据库。 (我不需要在任何EJB模块的EJB类中注入数据源,我只需要通过dinamically(在运行时)读取standalone.xml并通过jdbc连接到每个数据源。 我需要读取/循环standalone.xml中定义的所有数据源,并在那时通过jdbc连接到每个数据源(在servlet中) 我知道如何通过ejb类中的注释或jndi使用数据源,但我真的需要首先打开/读取standalone.xml(使用getResourceAsStream?或类似的东西)并连接到其中定义的每个数据源(所有可能的数据源,应用程序可以使用),例如通过jdbc连接到每个)并做一些检查!。
基本上我需要的是:在servlet中以dinamically方式访问/读取StandAlone.xml(所有数据源数据)。解析它或者什么,获取所有数据源定义,使用从standalone.xml获取的数据通过jdbc连接到每个数据源,进行一些检查,仅此而已。那可能吗?我正在使用Jboss EAP 6.2。
由于
答案 0 :(得分:0)
如果要读取文件,则可以使用系统属性来读取它,例如:
Properties properties = new Properties();
String file = System.getProperty("jboss.server.config.dir")+"\\standalone.xml"; //change the slash according to your OS
try(FileInputStream fis = new FileInputStream(fileName)) {
properties.load(fis);
}