细说如何把spring+Hibernate +jsf项目从tomcat移植到jboss上

本文详细介绍了如何将基于Spring、Hibernate和JSF的技术栈从Tomcat移植到JBoss应用服务器的过程。重点讲解了配置数据源、整合Spring与Hibernate,以及调整项目配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

细说如何把spring+Hibernate +jsf

项目从tomcat移植到jboss

 

作者:黄颢鹏

 

  要:把spring+Hibernate +jsf项目从tomcat移植到jboss

关键字:spring+Hibernate +jsfTomcatJBOSS

 

 

网上参考文献来源:

1.http://www.javaeye.com/topic/68868 (JBoss Hibernate  配置与应用   作者:萧红叶  200744)

2.http://tech.ddvip.com/2008-10/122431116379445.html (jboss下配置jndi利用springIOC来获得 作者不详)

 

 

一、细说如何在在jboss上使用Hibernate

1.hibernate相关的类包和mysql数据库驱动类包全部放到F:/jboss-4.2.2.GA/server/default/lib下(注意的是:你项目中hibernate3 .jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。)

2.为你的项目配置数据源

 

F:/jboss-4.2.2.GA/server/default/deploy下新建文件为mysql-ds.xmlxml文件

 <?xml version="1.0" encoding="UTF-8"?>   

<datasources>  

  <local-tx-datasource>  

    <jndi-name>MysqlDataSoure</jndi-name>  

    <use-java-context>false</use-java-context>  

    <connection-url>jdbc:mysql://127.0.0.1:3306/myblog</connection-url>  

    <driver-class>com.mysql.jdbc.Driver</driver-class>  

    <user-name>root</user-name>

    <password>sa</password>

    <exception-sorter-class-name>  

       org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter  

    </exception-sorter-class-name>  

    <metadata>  

       <type-mapping>mySQL</type-mapping>  

    </metadata>  

  </local-tx-datasource>  

</datasources> 

 

3.建立存放hibernate代码的目录(既是hibernateO/R数据库映射代码)

 

F:/jboss-4.2.2.GA/server/default/deploy下建立jboss_hibernate.har目录,然后在jboss_hibernate.har目录下新建立META-INF目录,在META-INF目录下新建立jboss-service.xml文件,输入

 

<?xml version="1.0" encoding="UTF-8"?>  

<server>   

<mbean code="org.jboss.hibernate.jmx.Hibernate"   name="jboss.har:service=Hibernate"> 

<!-- MysqlDataSoure 就是上面配置数据源的名字-->   

         <attribute name="DatasourceName"> MysqlDataSoure </attribute>  

         <attribute name="Dialect">org.hibernate.dialect.MySQLDialect</attribute>  

         <attribute name="SessionFactoryName">java:/hibernate/SessionFactory</attribute>     

         <attribute name="ShowSqlEnabled">true</attribute> 

         <attribute name="ScanForMappingsEnabled">true</attribute> 

    </mbean>     

</server>

 

如果有多个数据库,你可以建多个数据源,然后在jboss-service.xml文件里写上多个mbean

 

4.编写代码测试

接着我们来写我们的hibernate 文件

4.1 
F:/jboss-4.2.2.GA/server/default/deploy目录下新建JAVA 类包,目录名为com.myhibernate,我们写一个对应数据库的User.java文件:

代码如下

package com.myhibernate  

 

import java.io.Serializable;  

 

public class myuser implements Serializable  

{  

    private String uid;  

    private String uname;  

 

    public myuser (){  

 

    }  

    public void setUId(String uid){  

        this.uid=uid;  

    }  

    public String getUId(){  

        return uid;   

    }  

    public void setUname(String uname){  

        this.uname=uname;  

    }  

    public String getUname(){  

        return uname;  

    }  

 

} 

 

package org.xredleaf;

 

import java.io.Serializable;

 

public class User implements Serializable

{

    private String id;

  private String name;

  private int    age;

  public User(){

 

  }

  public void setId(String id){

        this.id=id;

  }

  public String getId(){

        return id;

  }

  public void setName(String name){

        this.name=name;

  }

  public String getName(){

        return name;

  }

    public void setAge(int age){

        this.age=age;

  }

  public int getAge(){

        return age;

  }

}

写完代码写将它编译成 myuser.class文件
接着我们写XML映射文件myuser.hbm.xml 文件:

代码如下

<?xml version='1.0' encoding='utf-8'?>  

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  

<hibernate-mapping>   

    <class name=" com.myhibernate.myuser " table="myuser" >  

      <id name="uid" column="uid" type="java.lang.String" >  

          <generator class="uuid.hex"/>  

      </id>  

      <property name="uname" column="uname" type="java.lang.String" />   

   </class>  

</hibernate-mapping> 

<?xml version='1.0' encoding='utf-8'?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

  <class name="org.xredleaf.User" table="user" >

      <id name="id" column="id" type="java.lang.String" >

          <generator class="uuid.hex"/>

      </id>

      <property name="name" column="name" type="java.lang.String" />

      <property name="age" column="age" type="java.lang.Integer" />

   </class>

</hibernate-mapping>


二、继续细说如何把spring+Hibernate +jsf项目从tomcat移植到jboss上(上面所说的是下面项目移植的必要步骤)

 


    4.2
、编写一个jsp代码测试一下,在F:/jboss-4.2.2.GA/server/default/deploy目录下新建test.war目录,新建一个进入到F:/jboss-4.2.2.GA/server/default/deploy/test.war目录下,新建一个login.jsp,文件如下:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

<%  

javax.naming.InitialContext ctx = new javax.naming.InitialContext();  

try{

org.hibernate.SessionFactory factory = (org.hibernate.SessionFactory)ctx.lookup("java:/hibernate/SessionFactory"); //之前配置的sessionFactory的名字  

org.hibernate.Session se = factory.openSession();  

org.hibernate.Query query=se.createQuery("from com.myhibernate. myuser u where u.uid='1231568' ");   

java.util.List results=query.list();  

java.util.ListIterator iterator=results.listIterator();  

if(iterator.hasNext()){   

    com.myhibernate.myuser u=(com.myhibernate. myuser)iterator.next();   

    session.setAttribute("myuser",u);  

out.println("的确有这个用户");  

com.myhibernate.myuser u1=(com.myhibernate. myuser) session.getAttribute("myuser");

out.println(u1. getUname()) ; 

}  

}catch(Exception ex){

out.println("错误:"+ex.getMessage());

}

%>

4.3spring+ hibernate+jsf的类包全部放到F:/jboss-4.2.2.GA/server/default/lib下(既是hibernate3.jarjsf-impl.jarspring.jarspring-hibernate3.jar类包全部剪切到F:/jboss-4.2.2.GA/server/default/lib目录下,注意的是:你项目中hibernate3 .jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。)

<%@page contentType="text/html;charset=GB2312" %>

<%

javax.naming.InitialContext ctx = new javax.naming.InitialContext();

org.hibernate.SessionFactory factory = (org.hibernate.SessionFactory)ctx.lookup("java:/hibernate/SessionFactory"); //之前配置的sessionFactory的名字

org.hibernate.Session se = factory.openSession();

org.hibernate.Query query=se.createQuery("from org.xredleaf.User user  where user.id='111' ");

java.util.List results=query.list();

java.util.ListIterator iterator=results.listIterator();

if(iterator.hasNext()){

  org.xredleaf.User user=(org.xredleaf.User)iterator.next();

  session.setAttribute("user",user);

  out.print("Login success");  

}

 

%>

现在启动jboss,运行run.bat
打开
http://localhost:8080/test/login.jsp查看一下,理论上成功了

 

5.现在我们把spring+ hibernate+jsf的项目从tomcat上移植到jboss

 

5.1首先把hibernate的类和类包文件(我hibernate的类和类包,一般都放在一起,都放到com.myhibernate类包里面),全部剪切到jboss_hibernate.har目录里面,而原网站文件夹.war/WEB-INF/classes下不能存放hibernate的类和类包文件,否则会出现的异常。第二把spring+ hibernate+jsf的类包全部放到F:/jboss-4.2.2.GA/server/default/lib下(既是hibernate3.jarjsf-impl.jarspring.jarspring-hibernate3.jar类包全部剪切到F:/jboss-4.2.2.GA/server/default/lib目录下,注意的是:你项目中hibernate3 .jar包不能包含在项目的Classpath中,否则会出现hibernate not bound的异常。)

 

然后把springbeans配置文件中的springhibernate整合配置代码

 

       <!--springhibernate整合的首要条件,设定sessionFactory,这是tomcat里面的配置-->

       <bean id="sessionFactory"

              class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

              <property name="configLocation"

                     value="classpath:hibernate.cfg.xml">

              </property>

              <property name="hibernateProperties">

                     <props>

                            <prop key="hibernate.dialect">

                                   org.hibernate.dialect.SQLServerDialect

                            </prop>

                            <prop key="hibernate.format_sql">true</prop>

                            <prop key="hibernate.show_sql">true</prop>

                     </props>

              </property>

       </bean>

 

改成

<!--springhibernate整合的首要条件,设定sessionFactory,这是jboss里面的配置-->

       <bean id="sessionFactory"

              class="org.springframework.jndi.JndiObjectFactoryBean">

              <property name="jndiName">

                     <value>java:/hibernate/SessionFactory</value>

              </property>

       </bean>

启动JBOSS,然后就可以看到整个项目就移植成功了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值