我堅持每次出現的錯誤,大多數時候總是找出解決方案。我發現一個好的散步有幫助。但是這一個讓我難住,我一整天都在盯着這個同樣的錯誤。像Ticcie在Invalid Oracle URL specified: OracleDataSource.makeURL中建議的那樣,錯誤信息沒有幫助理解錯誤。指定的Oracle URL無效:Arquillian ITest中的OracleDataSource.makeURL
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 Integration測試。它一直使用JPA和DerbyDb,但我現在需要測試Native Oracle DB(11g)SQL。所以我設置了一個新的測試項目,使用EclipseLink連接到OracleDB。
我可以通過Eclipse IDE的DataSource瀏覽器連接到數據庫,並ping它沒有問題。
我會連接到Glassfish獨立的姊妹Oracle數據庫,並ping它沒有問題。
但Arquillian測試無法連接到它與上面的模糊錯誤。如果錯誤表明問題到底是什麼,那將會很好。
我使用完全相同的網址,因爲我有Eclipse IDE的數據源資源管理器:
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的不同變化(相匹配的名稱,密碼MODS):
javax.persistence.jdbc.url URL Url (three variations)
eclipselink.jdbc.url URL Url (three variations)
沒有變化的作品。同樣的錯誤。
如果異常可以更詳細地說明它可以找到和找不到,那將會非常好。
我的問題是,任何人都可以告訴我的解決方案或建議什麼是錯誤的或我可以嘗試解決什麼問題?
UPDATE
我已經張貼在Oracle論壇這個問題,包括整個堆棧跟蹤和樣品最少的代碼加上一些說明。如果有人熱衷於看它,我會很感激。不提供
https://forums.oracle.com/message/11152777#11152777
謝謝傑森可能是這樣。對我來說,這個問題早已過去 - 我已經走了!你的建議可能會幫助其他人。 – HankCa