6

context.xmlTomcatには次のコードがあります。

<Resource name="ds/OracleDS" auth="Container" type="javax.sql.DataSource"
maxActive="1" maxIdle="2" maxWait="2"
username="demo" password="demo"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>

私はこのコードを持っていますweb.xml:

<resource-ref>
 <description>Oracle Datasource example</description>
 <res-ref-name>ds/OracleDS</res-ref-name>
 <res-type>javax.sql.DataSource</res-type>
 <res-auth>Container</res-auth>
</resource-ref>

私は次のようなコードを書きましたpersistence.xml:

<persistence-unit name="ReceivablesPU"  transaction-type="RESOURCE_LOCAL">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <non-jta-data-source>java:ds/OracleDS</non-jta-data-source>

わからないjava:ds/OracleDS, <Resource name="ds/OracleDS", <res-ref-name>ds/OracleDS</res-ref-name>. エラーは次のとおりです。

javax.persistence.PersistenceException: Exception [TOPLINK-7060] (Oracle TopLink Essentials - 2.0 (Build b40-rc (03/21/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: Cannot acquire data source [java:ds/OracleDS].
Internal Exception: javax.naming.NamingException: This context must be accessed through a java: URL
4

3 に答える 3

2

ではpersistence.xml、3行目は次のようになります。

        <non-jta-data-source>java:comp/env/ds/OracleDS</non-jta-data-source>
于 2013-03-14T15:31:56.810 に答える
1

contex.xmlを変更します:

<Resource name="OracleDS" auth="Container" type="javax.sql.DataSource"
    maxActive="1" maxIdle="2" maxWait="2"
    username="demo" password="demo"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    url="jdbc:oracle:thin:@localhost:1521:orcl"/>

web.xmlを変更します:

<resource-ref>
     <description>Oracle Datasource example</description>
     <res-ref-name>OracleDS</res-ref-name>
     <res-type>javax.sql.DataSource</res-type>
     <res-auth>Container</res-auth>
    </resource-ref>

私はpersistence.xmlを変更します

<persistence-unit name="ReceivablesPU"  transaction-type="RESOURCE_LOCAL">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <non-jta-data-source>java:comp/env/OracleDS</non-jta-data-source>

それから私は出力を得ました...

于 2013-03-16T05:24:38.937 に答える
0

同様の(ただし重複しない質問)に対するこの回答を参照してください。

Jettyデータソース、Hibernate、データソースが見つかりません

Java EE Web Appコンテナによっては、「ds / OracleDS」という名前のデータソースの場合、アドレス指定するときに(persistence.xmlファイルなどで)JNDIコンテキストの前に「java:comp/env」を付ける必要があります。仕事。

Tomcatの特定のケースでは、次のことを試してみます。

<Resource name="ds/OracleDS" auth="Container" type="javax.sql.DataSource"
maxActive="1" maxIdle="2" maxWait="2"
username="demo" password="demo"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"/>

web.xmlには実際には何も必要ありません。上記のcontext.xmlの設定により、TomcatはデータソースをJNDIリソースとして公開します。

最後に、persistence.xmlに次のように記述します。

<persistence-unit name="ReceivablesPU"  transaction-type="RESOURCE_LOCAL">
        <provider>oracle.toplink.essentials.PersistenceProvider</provider>
        <non-jta-data-source>java:comp/env/ds/OracleDS</non-jta-data-source>
于 2013-03-22T15:52:04.377 に答える