指定的Oracle URL无效:Arquillian ITest中的OracleDataSource.makeURL

时间:2013-08-16 08:28:41

标签: oracle11g persistence jboss-arquillian

我坚持每一次被抛出的错误,并且总是能够解决问题。我找到一个很好的散步帮助。但这个让我难过,我整天都在盯着同样的错误。就像Invalid Oracle URL specified: OracleDataSource.makeURL中的Ticcie所暗示的那样,错误信息无助于理解错误。

SEVERE: Exception during lifecycle processing
org.glassfish.deployment.common.DeploymentException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Error in allocating a connection. Cause: Connection could not be allocated because: Invalid Oracle URL specified: OracleDataSource.makeURL
Error Code: 0
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:762)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)

我正在为Java EE 7 EAR应用程序进行Arquillian集成测试。使用JPA和DerbyDb一直很顺利,但我现在需要测试Native Oracle DB(11g)SQL。所以我设置了一个新的测试项目,使用EclipseLink连接到OracleDB。

我可以通过Eclipse IDE DataSource资源管理器连接到数据库并ping它没有问题。

我连接到Glassfish独立的姐妹Oracle数据库并且没有问题ping。

但Arquillian测试无法通过上述模糊错误连接到它。如果错误说明究竟是什么问题,那就太好了。

我使用与Eclipse IDE DataSource资源管理器完全相同的URL:

jdbc:oracle:thin:@marina.work.com:1521:orcl

Arquillian设置与我对DerbyDb(与http://arquillian.org/guides/testing_java_persistence/非常相同)的设置相同,具有OracleDB的这些变体:

src/main/resources-glassfish-embedded/sun-resources.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
<resources>
    <jdbc-resource pool-name="ArquillianOraclePool" jndi-name="jdbc/arquillian" />
    <jdbc-connection-pool name="ArquillianOraclePool" res-type="javax.sql.DataSource" datasource-classname="oracle.jdbc.pool.OracleDataSource" 
        is-isolation-level-guaranteed="false" >
    </jdbc-connection-pool>
</resources>

src/main/resources-glassfish-embedded/test-persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      http://java.sun.com/xml/ns/persistence
      http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="esaarch01-pu" transaction-type="JTA">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
        <jta-data-source>jdbc/arquillian</jta-data-source>
        <jar-file>test.jar</jar-file>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties>
            <property name="javax.persistence.jdbc.Url" value="jdbc:oracle:thin:@marina.work.com:1521:orcl" />
            <property name="javax.persistence.jdbc.Password" value="demo" />
            <property name="javax.persistence.jdbc.User" value="test" />
            <property name="javax.persistence.jdbc.driver" value="oracle.jdbc.OracleDriver" />  <!-- driver. -->
            <property name="javax.persistence.jdbc.platform" value="org.eclipse.persistence.platform.database.oracle.OraclePlatform" />
            <property name="eclipselink.ddl-generation" value="drop-and-create-tables" />
            <property name="eclipselink.logging.level" value="FINE" />
            <property name="eclipselink.logging.level.sql" value="FINE" />
        </properties>
    </persistence-unit>
</persistence>

我在properties元素中引入了XML格式错误,例如文本,并收到以下错误。这表明正在为正确的目的选择此文件:

java.io.IOException: org.xml.sax.SAXParseException; lineNumber: 21; columnNumber: 16; Deployment descriptor file META-INF/persistence.xml in archive [test.jar].  cvc-complex-type.2.3: Element 'properties' cannot have character [children], because the ...

我尝试了不同的属性名称但没有更改错误消息。这让我觉得URL属性根本没有被提取。

我尝试了不同的URL变体(名称和密码匹配mod):

javax.persistence.jdbc.url URL Url (three variations)
eclipselink.jdbc.url URL Url (three variations)

没有变化有效。同样的错误。

如果异常可以更具体地说明它能够找到什么,那将是非常好的。

我的问题是,任何人都可以告诉我解决方案或建议我可以尝试找出错误或找出问题的方法吗?

更新

我在Oracle论坛上发布了这个问题,包括整个堆栈跟踪和示例最小代码以及一些说明。如果有人热衷于看待它,我将不胜感激。

https://forums.oracle.com/message/11152777#11152777

1 个答案:

答案 0 :(得分:0)

没有提供驱动程序类型,对于我的情况,我使用&#34; thin&#34; xaProperties.driverType =&#34; thin&#34;,请为您的案例找到类似的配置。