2

サーバーでアプリケーションを実行しようとすると、エラーが発生します。Eclipse と Glass Fish サーバー 4 を訴えています。glassfish-resources.xml ファイルを作成し、WEB-INF ディレクトリに配置しました。サーバーで実行しようとすると。次の例外が発生します

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.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:330)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:307)
.....

これが私のglassfish-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-connection-pool name="java:app/myOracleConnectionPool"  
                res-type="javax.sql.ConnectionPoolDataSource"  
                datasource-classname="oracle.jdbc.pool.OracleConnectionPoolDataSource">  

        <property name="User" value="system" />  
        <property name="Port" value="1521" />  
        <property name="DatabaseName" value="XE" />  
        <property name="ServerName" value="127.0.0.1" />  
        <property name="Url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />  
        <property name="URL" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" /> 
        <property name="Password" value="xxxx" />  
    </jdbc-connection-pool>  


    <jdbc-resource enabled="true"  
            jndi-name="java:app/jdbc/myOracleDatasource"  
            object-type="user"  
            pool-name="java:app/myOracleConnectionPool">  
        <description />  
    </jdbc-resource>  
</resources> 

ここに私のpersistence.xmlファイルがあります

<persistence-unit name="chapter11PU" transaction-type="JTA">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>java:app/jdbc/myOracleDatasource</jta-data-source>
    <properties>
        <property name="eclipselink.target-database" value="Oracle"/>
        <property name="javax.persistence.schema-generation-action" value="drop-and-create"/>
        <property name="javax.persistence.schema-generation-target" value="scripts"/> 
        <property name="javax.persistence.ddl-create-script-target" value="createfoo.sql"/> 
        <property name="javax.persistence.ddl-drop-script-target" value="dropfoo.sql"/> 
        <property name="eclipselink.deploy-on-startup" value="true"/>
        <property name="eclipselink.application-location" value="/tmp"/>

        <!-- To log SQL queries -->
        <property name="eclipselink.logging.level.sql" value="FINE"/>
        <property name="eclipselink.logging.parameters" value="true"/>
        <property name="eclipselink.logging.level" value="INFO"/>
    </properties>
</persistence-unit>

また、ojdbc6.jar を lib/ext フォルダーに配置しました。Oracle 11g リリース 2 を使用しています。無効な URL エラーが発生するのはなぜですか?

また、SQL Developerで接続を確認しましたが、ユーザーシステムとパスワードを使用して機能しています。

ありがとう

4

2 に答える 2

2

URL を誤って 2 回指定したようで、プロパティ名が正しくありません。

<property name="Url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />  
<property name="URL" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" /> 

そのはず

<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" /> 

また、glassfish 4.1 のドキュメントを参照して、glassfish-resources.xml で使用できる正しいプロパティ名を取得することをお勧めします。

Glassfish 3.1 の場合、ここにオプションが示されています。

于 2013-10-26T18:17:01.683 に答える