2010-07-12 82 views
0

7.2如何設定jdni.properties與EJBQL連接我的問題是,當我測試連接,失敗,因爲無法找到數據源,在日誌中說:上iREPORT分享到人人

造成的:org.hibernate.HibernateException:莫非找不到數據源

產生的原因:javax.naming.NoInitialContextException:需要在環境或系統屬性中指定的類名,或者作爲一個小程序參數,或在應用程序的資源文件:java.naming.factory.initial的

我guees可以是jndi.properties,在錯誤的目錄中,我嘗試將其放入java_home/lib中,但沒有w ork

回答

2

最後經過很多工作,我用ireport做了ejbql連接。按照這個步驟來做到這一點!

1)我是使用JBoss 4.2.3,因此,如果您使用glashfish或其他服務器上,找到了JBoss匹配的圖書館,我使用

2)你需要在你的JBoss找到目錄服務器/缺省的/ lib中的後續庫:

  • hibernate3.jar裏
  • 休眠-entitymanager.jar
  • 的jboss-common.jar
  • 冬眠,annotations.jar
  • EJB3-persistence.jar
  • jboss.jar

3)複製先前名爲庫和在這個路徑\的JasperSoft \的iReport-3.7.2 \ iREPORT分享到人人\模塊\分機複製你的iREPORT分享到人人安裝目錄並替換它,請注意,庫調用hibernate-common-annotation和jpa.jar需要從該路徑中擦除。您需要這樣做,因爲此庫會與hibernate-annotations和ejb3-persistence.jar產生衝突。

4)獲得項目的罐子,它在你在這個例子中複製,讓我們稱爲例如-core.jar添加到安裝目錄路徑\的JasperSoft \的iReport-3.7.2 \ iREPORT分享到人人\庫

5)修改罐子項目的persistence.xml中(在我們的例子「example.jar」),並設置與此下一個特性,

<?xml version="1.0" encoding="UTF-8"?>
<persistence 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_1_0.xsd"
version="1.0">
<persistence-unit name="example" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<non-jta-data-source>/jdbc/example</non-jta-data-source>
<properties>
<property name="hibernate.connection.driver_class" value="oracle.jdbc.OracleDriver"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle9Dialect"/>
</properties>
</persistence-unit>
</persistence>

6)到iReport的,並添加庫到類路徑,在工具中,類路徑選項卡中的選項

7)轉到Jasperoft \ iReport3.7.2 \ ireport \ modules目錄下的ireport安裝目錄,用winrar或其他工具打開名爲com-jaspersoft-ireport的jar,並轉到META-INF/MANIFEST.INF 8)轉到Jboss_home/server/default/classpath,修改庫的名稱「hibernate-common-annotation.jar」(刪除這個庫)部署和修改你的項目的datasource xml,並把這個配置,(在這個例子中,項目調用「example」,數據源應該被稱爲example-ds。XML)

<datasources>
<local-tx-datasource>
<jndi-name>jdbc/example</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:oracle:thin:@localhost:1521:XE</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>example</user-name>
<password>example</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>

注意,酒店在假USA-java的上下文是讓你從iREPORT分享到人人

9訪問數據源在JBoss之外在我們的例子)轉到iREPORT分享到人人,並添加後續庫到利用iReport classpath中

  1. JNP-client.jar中
  2. 的jboss-client.jar中
  3. jbossall-client.jar中
  4. 在我的情況ojdbc.jar(甲骨文)
  5. 的jboss-ejb3x.jar

10)數據庫驅動程序設置您jndi.properties並把它放入瓦罐hibernate- entitymanager.jar

11)現在運行jboss,進入ireport並創建ejql連接,在持久化單元名中設置位於安裝目錄Jaspersoft \ iReport-3.7中jar的persistence.xml中的名稱.2 \ ireport \ libs,在這種情況下,持久性單元名稱是「示例」,不帶引號

我希望這對某人或某人jeje有幫助,我知道這很難,對不起我的英文不是我的第一語言

相關問題