JDeveloper 基于 DB 的 MDS 连接问题

Posted

技术标签:

【中文标题】JDeveloper 基于 DB 的 MDS 连接问题【英文标题】:JDeveloper DB-based MDS-connection issue 【发布时间】:2011-04-27 13:50:01 【问题描述】:

在 JDeveloper 中创建基于 DB 的 MDS 连接期间,分区列表为空。 我曾尝试在 Oracle 和 SQL Server 上安装 Oracle SOA Suite 11g,并在 JDeveloper 中使用不同的 jdbc 驱动程序遇到此问题。 当然,数据库中的 MDS 模式是使用 Oracle Repository Creation 实用程序创建的,并且尝试了 sys/sa 和 DEV_MDS 用户。

我查看了 JDeveloper 消息选项卡并看到这样的错误:

警告:读取连接名称 Connection1 的数据库分区时出错。原因:MDS-00003:连接数据库时出错 无法启动通用连接池:oracle.ucp.UniversalConnectionPoolException:在通用连接池管理器 MBean 中创建池期间出错:oracle.ucp.UniversalConnectionPoolException:在通用连接池管理器中创建池期间出错:java.sql.SQLException:通用连接无效池配置:java.sql.SQLException:无法使用提供的工厂类名称创建工厂类实例:java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQLServerXADataSource 在通用连接池管理器 MBean 中创建池期间出错:oracle.ucp.UniversalConnectionPoolException:在通用连接池管理器中创建池期间出错:java.sql.SQLException:通用连接池配置无效:java.sql.SQLException:无法创建工厂类具有提供的工厂类名称的实例:java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerXADataSource

这很奇怪,因为它是我指定为 JDBC-driver(Microsoft SQL Server JDBC Driver 3.0)的 sqljdbc4.jar 中的类。

所以我尝试了 jTDS SQL Server 驱动并收到这样的错误:

2011 年 4 月 26 日晚上 9:52:01 oracle.tip.tools.ide.common.resourcepalette.adapter.mds.DBConnectionInfo 警告:读取连接名称 Connection2 的数据库分区时出错。原因:

【问题讨论】:

【参考方案1】:

这个答案来得“有点”晚了,但希望它对下一个偶然发现这个问题的编码员有所帮助。

我目前正在努力尝试使用 MS SQL Server 作为包含 MDS 数据的后端数据库构建和部署一个简单的 SOA/BPM/ADF 应用程序。

我能够使用 JDeveloper 创建到 SQL Server 实例的数据库连接,但是当我尝试创建新的 MDS 连接时遇到了与 Denys 相同的问题:分区列表为空并且在几个小时后(或天)我在“消息”选项卡中发现了相同的错误消息:

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerXADataSource

即使实际的数据库连接工作正常。

此外,每当我尝试使用 JDeveloper 的构建命令或 Maven 或 Ant 任务构建我的应用程序时,我都会收到相同的错误。

所有错误都指向缺少 JDBC 驱动程序,实际上并没有丢失。

我终于能够至少部分解决这个问题,尽管我不得不使用非常肮脏的技巧。

在 JDeveloper 中创建 MDS 连接的解决方案:

为了让它工作,我必须让 MDS 模块意识到实际上存在 SQL 服务器的 JDBC 驱动程序,所以我将驱动程序的 jar 添加到模块的类路径中 $jdev.home/extensions/oracle.mds.dt.jar#META-INF/extension.xml:

<classpath>c:/dev/jdbc/mssql/sqljdbc4.jar</classpath>

在我看来,将驱动程序放在项目的库设置中就足够了,但不知何故,这并不能削减它。

使 ant scac 任务正常工作的解决方案:

通过做基本相同的事情,我使构建有点前进。我通过修改$jdev.home/bin/ant-sca-compile.xml将JDBC驱动的jar添加到scac的classpath中:

<path id="scac.tasks.class.path">
    <!-- Added this line -->
    <pathelement path="c:/dev/jdbc/mssql/sqljdbc4.jar"/>
</path>

总而言之,这些不是我所希望的解决方案,但也许其他人会从中受益。

现在我的复合.xml 验证由于 wsdl 文件丢失和/或损坏而失败:

[scac] Validating composite "C:\install\fod\CompositeServices\OrderBookingComposite\bin/..//composite.xml"
[scac] error: location /ns:composite/ns:import[@location='oramds:/apps/FusionOrderDemoShared/services/orderbooking/OrderBookingProcessor.wsdl'](15,125): Load of wsdl "oramds:/apps/FusionOrderDemoShared/services/orderbooking/OrderBookingProcessor.wsdl" failed
[scac] error: location /ns:composite/ns:import[@location='oramds:/apps/FusionOrderDemoShared/services/partnersupplier/PartnerSupplierComposite.wsdl'](25,30): Load of wsdl "oramds:/apps/FusionOrderDemoShared/services/partnersupplier/PartnerSupplierComposite.wsdl" failed
[scac] error: location /ns:composite/ns:import[@location='oramds:/apps/FusionOrderDemoShared/services/oracle/fodemo/storefront/store/service/common/serviceinterface/StoreFrontService.wsdl'](29,30): Load of wsdl "oramds:/apps/FusionOrderDemoShared/services/oracle/fodemo/storefront/store/service/common/serviceinterface/StoreFrontService.wsdl" failed
... continues with errors for everything else

在 Oracle 的 Fusion Order Demo 应用程序中尝试执行 compile-build-all 任务时会出现此错误。非常欢迎对此提出任何建议。

【讨论】:

以上是关于JDeveloper 基于 DB 的 MDS 连接问题的主要内容,如果未能解决你的问题,请参考以下文章

MS MDS系列之MDS层次结构(Hierarchy)

MDS添加别名和Zone

[读书笔记]机器学习:实用案例解析

Jdeveloper 11g 日志窗口消失

无法启动服务器实例,因为集成的 Weblogic 域没有成功构建。-jdeveloper

Hive 使用分区连接表