开发者

Hibernate not retrieving data with JBOSS

开发者 https://www.devze.com 2023-03-13 19:26 出处:网络
I am trying to get the following configured. Spring, Hibernate, Jboss 5.1, Mysql 5.14 dispatcher-servlet.xml

I am trying to get the following configured.

Spring, Hibernate, Jboss 5.1, Mysql 5.14

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"    xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-   mvc-3.0.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring- tx-3.0.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd">

<context:annotation-config />
<context:component-scan base-package="au.com.kiche" />
<tx:annotation-driven transaction-manager="transactionManager" />

<bean
    class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
<bean
    class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean
    class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />

<!-- Most controllers will use the ControllerClassNameHandlerMapping above, 
    but for the index controller we are using ParameterizableViewController, 
    so we must define an explicit mapping for it. -->

<bean id="jspViewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"
    p:prefix=开发者_JAVA技巧"/WEB-INF/jsp/" p:suffix=".jsp" />

<!-- the following bean description should be moved to applicationContext. I'm leaving this  decision to Chief. -->
<jee:jndi-lookup id="dataSource" jndi-name="java:/MyDS"/>

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configLocation">
        <value>classpath:hibernate.cfg.xml</value>
    </property>
    <property name="configurationClass">
        <value>org.hibernate.cfg.AnnotationConfiguration</value>
    </property>
</bean>
<bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
</bean>

hibernate.cfg.xml is:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
                                     "http://hibernate.sourceforge.net/hibernate-configuration-  3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <property name="hibernate.connection.datasource">java:/MyDS</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    <property name="hibernate.show_sql">true</property>

    <mapping class="au.com.kiche.model.User"/>
  </session-factory>
</hibernate-configuration>

The data source file "kiche-ds.xml" is:

<datasources>
<local-tx-datasource>
    <jndi-name>MyDS</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/kiche</connection-url>

    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>root</user-name>
    <password>root5</password>

    <min-pool-size>5</min-pool-size>
    <max-pool-size>100</max-pool-size>

    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
    <metadata>
        <type-mapping>mySQL</type-mapping>
    </metadata>
</local-tx-datasource>
</datasources>

The followis is my class that is try to get all users from the DB:

@Repository
public class UserDAOImpl implements UserDAO{

    @Autowired
    SessionFactory sessionFactory;

    @Override
    public List<User> getUserByLogin() {
            Criteria criteria=sessionFactory.getCurrentSession().createCriteria(User.class);
        List<User> users=criteria.list();
        System.out.println("**** The size of the user is: "+users.size());
            return users;
    }
   .
   .
   .
}

The strange part is that I am able to get the data form the DB when I use Tomcat(not the one with JBOSS). But when I try to run this application in JBOSS, NO data is retrived, there are no errors or exceptions.

Any help will be highly appraciated.

Regards Adofo


You should use the Java EE convention of resource mapping. For your case:

application context:

<jee:jndi-lookup id="dataSource"
                 jndi-name="MyDS"
                 lookup-on-startup="false"
                 proxy-interface="javax.sql.DataSource"
                 resource-ref="true"
        />

WEB-INF/web.xml:

<resource-ref>
    <res-ref-name>MyDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

WEB-INF/jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
        "-//JBoss//DTD Web Application 4.2//EN"
        "http://www.jboss.org/j2ee/dtd/jboss-web_4_2.dtd">
<jboss-web>
    <resource-ref>
        <res-ref-name>MyDS</res-ref-name>
        <jndi-name>java:MyDS</jndi-name>
    </resource-ref>
</jboss-web>

This will work for both JBoss and pure Tomcat.

0

精彩评论

暂无评论...
验证码 换一张
取 消