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

Oracle11g 指定的Oracle URL无效:Arquillian ITest中的OracleDataSource.makeURL,oracle11g,persistence,jboss-arquillian,Oracle11g,Persistence,Jboss Arquillian,我坚持每一个被抛出的错误,并且通常都能找到解决方案。我发现散步很有帮助。但是这个问题让我很困惑,我整天都在盯着这个错误。正如Ticcie in所建议的,错误消息无助于理解错误 SEVERE: Exception during lifecycle processing org.glassfish.deployment.common.DeploymentException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.

我坚持每一个被抛出的错误,并且通常都能找到解决方案。我发现散步很有帮助。但是这个问题让我很困惑,我整天都在盯着这个错误。正如Ticcie in所建议的,错误消息无助于理解错误

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)
我正在为一个JavaEE7EAR应用程序进行Arquillian集成测试。使用JPA和DerbyDb进展顺利,但我现在需要测试原生Oracle DB(11g)SQL。因此,我设置了一个新的测试项目,使用EclipseLink连接到OracleDB

我可以通过EclipseIDEDataSourceExplorer连接到数据库并ping它,没有问题

我确实在Glassfish standalone中连接到了一个姐妹Oracle数据库,并且ping它没有问题

但是Arquillian测试无法通过上述模糊错误连接到它。如果错误说明了问题的确切原因,那就太好了

我使用与Eclipse IDE数据源浏览器完全相同的URL:

jdbc:oracle:thin:@marina.work.com:1521:orcl
Arquillian的设置与我为DerbyDb所做的相同(几乎与相同),但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>
<?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>
我引入了XML格式良好的错误,例如
properties
元素中的文本,并收到以下错误。这表明此文件是出于正确的目的提取的:

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的不同变体(名称和密码与mods匹配):

没有变化的工作。同样的错误

如果异常可以更具体地说明它能找到什么和不能找到什么,那就太好了

我的问题是,有没有人能告诉我解决方案,或者建议出了什么问题,或者我可以试着找出出了什么问题

更新

我已经在Oracle论坛上发布了这个问题,包括整个堆栈跟踪和示例最小代码以及一些说明。如果有人想看的话,我会很感激的


没有提供驱动程序类型,对于我的案例,我使用了“thin”xaProperties.driverType=“thin”,请为您的案例找到类似的配置。

谢谢Jason,可能就是这样。对我来说,这个问题早已过去——我已经走了!你的建议很可能会帮助别人。
javax.persistence.jdbc.url URL Url (three variations)
eclipselink.jdbc.url URL Url (three variations)