我正在努力制定与ADF应用程序相关的部署计划,由于不同的名称冲突,要求为不同的环境(WLS)使用不同的数据源名称,
ADF和WLS版本:12.2.1.3
在使部署计划生效之前,我需要找到一种方法,可以在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)
关于如何解决这个问题的任何指针? 如果可以通过其他方法完成,请指导我。
关于, 席德