当前位置: 首页 > 知识库问答 >
问题:

在Jboss7中配置hibernate 3

翟宏放
2023-03-14

我正在尝试设置一个SpringMVC Hibernate WAR,用于部署到Jboss 7.1.1Final。我的应用程序使用Hibernate 3.6.1

我遵循了在JBoss中设置Hibernate 3所需的所有步骤。

>

  • 转到 AS 安装并切换到模块/组织文件夹。
  • 为插槽 3 创建了用于保存Hibernate 3 的文件夹
  • 将Hibernate 3 罐子复制到这个新的 AS/模块/组织/冬眠/3 文件夹(Hibernate 3 核.jar、Hibernate 3-commons 注释.jar、Hibernate 3-实体管理器.jar、 dom4j.jar、 slf4j.jar、 slf4j-api.jar、 共享资源集合.jar、 蚁.jar、 slf4j-api.jar、 公共集合.jar、 蚁.jar以及Hibernate 3 所需的任何其他 jar)
  • 创建了 AS/模块/组织/Hibernate/3/模块.xml文件,其中包含以下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.0" name="org.hibernate" slot="3">
        <resources>
            <resource-root path="hibernate3-core.jar"/>
            <resource-root path="hibernate3-commons-annotations.jar"/>
            <resource-root path="hibernate3-entitymanager.jar"/>
            <resource-root path="javassist-3.12.0.GA.jar"/>
            <resource-root path="antlr-2.7.6.jar"/>  
            <resource-root path="commons-collections-3.1.jar"/>  
            <resource-root path="dom4j-1.6.1.jar"/>  
            <!-- Insert other Hibernate 3 jars to be used here -->
        </resources>
    
        <dependencies>
            <module name="org.jboss.as.jpa.hibernate" slot="3"/>
            <module name="asm.asm"/>
            <module name="javax.api"/>
            <module name="javax.persistence.api"/>
            <module name="javax.transaction.api"/>
            <module name="javax.validation.api"/>
            <module name="org.apache.ant"/>
            <module name="org.infinispan"/>
            <module name="org.javassist"/>
            <module name="org.slf4j"/>
        </dependencies>
    </module>
    

    我的pom.xml(部分):

        <!-- Hibernate dependencies -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>3.6.6.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions>
            <scope>compile</scope>
        </dependency>
        <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-annotations</artifactId>
        <version>3.5.6-Final</version>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0.2</version>
    </dependency>
     <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>3.0.0.ga</version>
        </dependency>
        <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>4.0.5.Final</version>
        </dependency>
    

    我的Hibernate上下文.xml(部分)

      <jpa:repositories base-package="com.gea.dvr.repository" />
       <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
                     p:dataSource-ref="dataSource"
                     p:configLocation="${hibernate.config}"
                     p:packagesToScan="com.iana.dver"/>
    
        <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"
                    p:driverClass="${app.jdbc.driverClassName}"
                    p:jdbcUrl="${app.jdbc.url}"
                    p:user="${app.jdbc.username}"
                    p:password="${app.jdbc.password}"
                    p:idleConnectionTestPeriod="30"
                    p:maxPoolSize="100"
                    p:maxStatements="50"
                    p:minPoolSize="10" 
                    p:maxIdleTime="60" />
    
        <!-- Declare a transaction manager-->
        <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
                    p:sessionFactory-ref="sessionFactory" />                    
    
      <!-- Specify our ORM vendor -->
      <bean id="hibernateVendor" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" 
                  p:showSql="false"/>
    

    我的hibernate.cfg.xml

    <hibernate-configuration>
      <session-factory name="sessionFactory">
        <!-- We're using MySQL database so the dialect needs to MySQL as well-->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Enable this to see the SQL statements in the logs-->
        <property name="show_sql">false</property>
        <!-- This will drop our existing database and re-create a new one.
                Existing data will be deleted! -->
        <!--  <property name="hbm2ddl.auto">update</property>-->
    
        <mapping class="com.gea.dvr.domain.DvrUserType"/>
        <mapping class="com.gea.dvr.domain.DvrUsers"/>
        <mapping class="com.gea.dvr.domain.DvrConfig"/>
        <mapping class="com.gea.dvr.domain.DvrDetail"/>
        <mapping class="com.gea.dvr.domain.DvrFiles"/>
        <mapping class="com.gea.dvr.domain.DvrNotif"/>
        <mapping class="com.gea.dvr.domain.UserLogin"/>
      </session-factory>
    </hibernate-configuration>
    

    我已经提供了所有需要的java,但我仍然得到以下异常,有人能帮我在JBoss中设置hibernate 3相关的更改吗?

    11:03:14,597 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-3) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateVendor' defined in ServletContext resource [/WEB-INF/hibernate-context.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence
    
  • 共有1个答案

    谢铭
    2023-03-14

    由于您得到了java.lang.NoClassDefFoundError(而不是ClassNotFoundException),这可能是某种类加载问题。

    尝试添加hibernate实体管理器依赖项,这将解决您的问题。

    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
        <exclusions>
            <exclusion>
                <groupId>cglib</groupId>
                <artifactId>cglib</artifactId>
            </exclusion>
            <exclusion>
                <groupId>dom4j</groupId>
                <artifactId>dom4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    
     类似资料:
    • 我在JBoss7.x中配置了datasource,如下所示: 然后,在我的spring应用程序中,我使用下面的代码来查找数据源: 我错过什么了吗?

    • 我需要通过命令行创建smtp邮件连接器。到目前为止,我已经在配置XML中创建了和节点: 所有这些都导致了配置文件中的以下部分: 在使用GUI管理控制台后,我发现节点应该包含子节点,但我不知道如何做到这一点,JBoss管理指南没有关于这个主题的线索。如果有人能帮上忙,我将不胜感激。

    • 问题内容: 我的目标是配置,使其仅序列化带有注释的元素。 为了做到这一点,我按照下面的说明进行了说明,该说明说明了如何配置对象映射器。 我包括自定义描述objectmapper 这里。 但是,当类被序列化时,它仍包含json中的所有属性。 有人暗示吗?提前致谢 Jackson 1.8.0 spring 3.0.5 CustomObjectMapper servlet.xml NumbersOfNe

    • 我想在发布者的AEM 6中实现CA siteminder。它的工作方式是应用程序的最终用户将使用登录表单并进入应用程序。成功申请后,用户将登陆主页,在那里她将能够看到她的个人信息,如姓名、出生日期、病史和所有类型的数据。在提供错误的密码时,用户将收到错误消息。这就像任何正常的Web应用程序一样。这里的问题是所有用户信息都将来自后端,即Web服务。CRX中不会保存任何用户或最少的信息。我在sitem

    • 我刚刚开始使用Java EE。有人知道我在这里错过了什么吗?如果你需要更多的信息请告诉我。我正在使用intelliJ和JBoss EAP。 [2016-02-21 11:57:19,930]工件HelloWorld:War:工件部署期间出错。有关详细信息,请参阅服务器日志。[2016-02-21 11:57:19,931]项目helloworld:war:java.lang.exception:{