使用部署计划在ADF应用程序中更改应用程序模块的数据源

时间:2018-09-25 09:23:56

标签: weblogic oracle-adf weblogic12c

我正在努力制定与ADF应用程序相关的部署计划,由于不同的名称冲突,要求为不同的环境(WLS)使用不同的数据源名称,

ADF和WLS版本:12.2.1.3

我已经介绍了thisthis

在使部署计划生效之前,我需要找到一种方法,可以在ApplicationModule中使用变量名作为数据源,并从web.xml或weblogic-application.xml中引用它。

以下标记已添加到web.xml和weblogic-application.xml

web.xml

<resource-ref>
  <res-ref-name>my-data-source</res-ref-name> 
  <res-type>javax.sql.DataSource</res-type> 
  <res-auth>Container</res-auth> 
</resource-ref>

weblogic-application.xml

<resource-description>
  <res-ref-name>my-data-source</res-ref-name>
  <jndi-name>jdbc/DMNonXAGtxDataSrc</jndi-name>
</resource-description>

数据源:jdbc / DMNonXAGtxDataSrc已在WLS中创建。

bc4j.xcfg代码:

<BC4JConfig xmlns="http://xmlns.oracle.com/bc4j/configuration" version="11.1">
  <AppModuleConfigBag ApplicationName="model.AppModule">
    <AppModuleConfig name="AppModuleLocal" jbo.project="model.Model" ApplicationName="model.AppModule"
                     DeployPlatform="LOCAL">
      <Database jbo.TypeMapEntries="OracleApps" JDBCDataSource="my-data-source"/>
      <Security AppModuleJndiName="model.AppModule"/>
    </AppModuleConfig>
    <AppModuleConfig name="AppModuleShared" jbo.project="model.Model" ApplicationName="model.AppModule"
                     DeployPlatform="LOCAL">
      <AM-Pooling jbo.ampool.maxpoolsize="1" jbo.ampool.isuseexclusive="false"/>
      <Database jbo.TypeMapEntries="OracleApps" JDBCDataSource="my-data-source"/>
      <Security AppModuleJndiName="model.AppModule"/>
    </AppModuleConfig>
  </AppModuleConfigBag>
</BC4JConfig>

由于未找到数据源“ my-data-source”,因此上面的代码在运行时出现错误。

如果我使用以下数据源

<Database jbo.TypeMapEntries="OracleApps" JDBCDataSource="java:comp/env/my-data-source"/>

我遇到错误

java.lang.ClassCastException: weblogic.jndi.factories.java.ReadOnlyContextWrapper cannot be cast to javax.sql.DataSource
    at oracle.jbo.server.DBTransactionImpl.lookupDataSource(DBTransactionImpl.java:1483)
    at oracle.jbo.server.DBTransactionImpl2.connectToDataSource(DBTransactionImpl2.java:328)
    at oracle.jbo.common.ampool.DefaultConnectionStrategy.connect(DefaultConnectionStrategy.java:203)
    at oracle.jbo.server.ApplicationPoolMessageHandler.doPoolConnect(ApplicationPoolMessageHandler.java:643)
    at oracle.jbo.server.ApplicationPoolMessageHandler.doPoolMessage(ApplicationPoolMessageHandler.java:434)
    at oracle.jbo.server.ApplicationModuleImpl.doPoolMessage(ApplicationModuleImpl.java:9958)

关于如何解决这个问题的任何指针? 如果可以通过其他方法完成,请指导我。

关于, 席德

0 个答案:

没有答案