在自动配置时自定义 Bluemix 的 jndiName
Customizing Bluemix's jndiName when it is automatically configured
IBM Bluexmix 自动配置绑定服务(https://console.ng.bluemix.net/docs/runtimes/liberty/autoConfig.html)
这导致在 server.xml (https://console.ng.bluemix.net/docs/services/SQLDB/index.html#SQLDB) 中有数据源条目。它看起来像这样:
<dataSource id='db2-mydb' jdbcDriverRef='db2-driver' jndiName='jdbc/mydb'
statementCacheSize='30' transactional='true'>
<properties.db2.jcc databaseName='${cloud.services.mydb.connection.db}'
id='db2-mydb-props'
password='${cloud.services.mydb.connection.password}'
portNumber='${cloud.services.mydb.connection.port}'
serverName='${cloud.services.mydb.connection.host}'
user='${cloud.services.mydb.connection.username}'/>
</dataSource>
jndiName 是 jdbs/DBServiceName。我想自定义 jndiName 以便我可以在不知道数据库服务名称的情况下在应用程序中使用它。
同时我也想让blueMix为我创建属性,因为我在推送代码之前不知道db服务名称。
编辑
阐明 BlueMix 上的设置
- 我们有一个 space,其中包含 DB2
- 我们有一个测试space
- 在测试中 space 我们有两个应用程序 app1 和 app2
- 在测试 space 中,我们创建了两个用户提供的服务实例,并将 DB2 凭据传递给它们。我们将它们命名为 DB1 和 DB2
- 我们将 DB1 绑定到 app1,将 DB2 绑定到 app2
- 当我们推送代码时,jdndiName 会自动配置为 jdbc/DB1 和 jdbc/DB2
- 我们想在 persistence.xml 中引用那个名字,并且想控制那个名字。或者以某种方式读取 persistence.xml
中的服务名称
您不一定需要知道 JNDI 名称才能在应用程序中使用资源。 Liberty buildpack 正在执行自动配置,但还有一项 Liberty 功能 cloudAutowiring-1.0 如果只有一个相应的服务实例绑定到应用程序,它将帮助您查找资源。
查看这两个示例应用程序:
IBM Bluexmix 自动配置绑定服务(https://console.ng.bluemix.net/docs/runtimes/liberty/autoConfig.html)
这导致在 server.xml (https://console.ng.bluemix.net/docs/services/SQLDB/index.html#SQLDB) 中有数据源条目。它看起来像这样:
<dataSource id='db2-mydb' jdbcDriverRef='db2-driver' jndiName='jdbc/mydb'
statementCacheSize='30' transactional='true'>
<properties.db2.jcc databaseName='${cloud.services.mydb.connection.db}'
id='db2-mydb-props'
password='${cloud.services.mydb.connection.password}'
portNumber='${cloud.services.mydb.connection.port}'
serverName='${cloud.services.mydb.connection.host}'
user='${cloud.services.mydb.connection.username}'/>
</dataSource>
jndiName 是 jdbs/DBServiceName。我想自定义 jndiName 以便我可以在不知道数据库服务名称的情况下在应用程序中使用它。 同时我也想让blueMix为我创建属性,因为我在推送代码之前不知道db服务名称。
编辑 阐明 BlueMix 上的设置
- 我们有一个 space,其中包含 DB2
- 我们有一个测试space
- 在测试中 space 我们有两个应用程序 app1 和 app2
- 在测试 space 中,我们创建了两个用户提供的服务实例,并将 DB2 凭据传递给它们。我们将它们命名为 DB1 和 DB2
- 我们将 DB1 绑定到 app1,将 DB2 绑定到 app2
- 当我们推送代码时,jdndiName 会自动配置为 jdbc/DB1 和 jdbc/DB2
- 我们想在 persistence.xml 中引用那个名字,并且想控制那个名字。或者以某种方式读取 persistence.xml 中的服务名称
您不一定需要知道 JNDI 名称才能在应用程序中使用资源。 Liberty buildpack 正在执行自动配置,但还有一项 Liberty 功能 cloudAutowiring-1.0 如果只有一个相应的服务实例绑定到应用程序,它将帮助您查找资源。
查看这两个示例应用程序: