2010-07-12 62 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有帮助,我知道这很难,对不起我的英文不是我的第一语言