在自动配置时自定义Bluemix的jndiName

时间:2016-06-22 19:12:15

标签: ibm-cloud websphere-liberty

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。它看起来像这样:

<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上的设置

  • 我们有一个包含DB2的空间
  • 我们有一个测试空间
  • 在测试空间中,我们有两个应用程序app1和app2
  • 在测试空间中,我们创建两个用户提供的服务实例,并将DB2凭据传递给它们。我们将它们命名为DB1和DB2
  • 我们将DB1绑定到app1,将DB2绑定到app2
  • 当我们推送代码时,jdndiName会自动配置为jdbc / DB1和jdbc / DB2
  • 我们想在persistence.xml中引用该名称,并希望控制该名称。或以某种方式读取persistence.xml中的服务名称

1 个答案:

答案 0 :(得分:2)

您不一定需要知道JNDI名称才能使用应用程序中的资源。 Liberty buildpack正在进行自动配置,但是还有一个Liberty功能cloudAutowiring-1.0,如果只有一个相应的服务实例绑定到应用程序,它将帮助您查找资源。

查看以下两个示例应用: