MyEclipse+Flex+BlazeDS+Spring+Hibernate简单实例的部署过程

本文系转载,转载了下面这篇文章,但是修改了其中一处错误,我会在最下面指明:

 

转载文章的URL:http://bbs.airia.cn/home-space-uid-76976-do-blog-id-2710.html

 

1、 新建Web Project

新建web project

Project name命名自定,这里设定为:FlexProjectJ2EE级别选择1.5,因为之后要跟Flex集成,所以source folder最好更改一下,这里改为:java_src,如图2

                                

 

2 web project设定

2、 项目上右键,在MyEclipse的子菜单,选择增加Spring特性。

选择增加Spring特性

   

选择必要的Spring库,并选中:Copy checked Library contents to project folder(TLDs aways copied),会自动将需要的jar包都复制到/WEB-INF/lib文件夹下,方便单独发布。

新增Spring特性第一步

点击Next后,在默认选项下,根据自己的习惯,选择放置applicationContext.xml的位置,如需更改,点击Browse,如图5、图6所示。

增加Spring特性第二步

选择放置applicationContext.xml的位置

3、 部署BlazeDS服务,下载BlazeDS文件后,解压缩blazeds.war,得到一个文件夹

7 BlazeDS部署第一步

blaze文件夹下的两个目录拷贝到\FlexProject\WebRoot,覆盖同名目录。

8 BlazeDS部署第二步

4、在MyEclipse中配置数据库源,选择MyEclipse Database Explorer,如果不能在快速切换栏里找到,可以进Windos-Open Perspective-Other中找到如图9所示。

选择MyEclipse Database Explorer透视图

在右侧的DB Browse里右键,新建一个数据库连接。

10 新建数据库连接。

Driver template中选择你的数据库类型,Driver name自定,Connection URL

需要使用正确的路径,如现在的程序里是:jdbc:mysql://localhost:3306/apress,所以要将<hostname><dbname>替换为正确的名称,填写好User name Password,这里的用户名和密码指的是数据库的登录名与密码,点击Add JARS,选择已经下载到本地的数据库连接jar包,这里是mysql-connector-java-5.1.10-bin.jar

11 配置数据库连接参数

 

点击Test Driver,测试是否接通。

12 数据库连接成功

 

点击Next,接受默认选项,点击finish,完成配置。

13 数据库连接配置完成

5、 refresh项目,右键MyEclipse选择子菜单,增加Hibernate特性。

14 增加Hibernate特性第一步

    之前选择了Spring2.5,这里会提示需要Spring-Hibernate包支持,选中需要的库,选择Enable Hibernate Annotations Support,方便以后使用到,同时选中Copy checked Library Jars to project folder and add to build-path,点击Next

15 增加Hibernate特性第二步

   这里可以选择使用单独的Hibernate cfg文件进行Hibernate的管理,或者直接集成SpringapplicationContext.xml中,这里使用后者。

16 增加Hibernate特性第三步

    选择Existing Spring configuration fileSessionFactory ID可以随意。

17 增加Hibernate特性第四步

点击下一步,这里选择需要的DB Driver,选中Enable dynamic DB table creation。点击next

18 增加Hibernate特性第五步

    配置HibernateSessionFactory类放置路径,可以点击new,使用Spring情况下不用Create SessionFactoryclass,所以可以吧勾选去掉,如果需要创建,可以新建一个包,这里新建包com.coarrow.hibernate.sessionFactory

 

19 增加Hibernate特性第六步

   

确定后finish,可能会提示jar包重复,点击replace即可。

20 jar包的重复提示

6、 部署web服务,点击MyEclipse的部署按钮。

21 部署web服务第一步

    Project选择当前的项目:FlexProject,点击Add

22 部署web服务第二步

选择需要的Server,这个Server可以在Window-preferences中配置,也可以直接点击Edit server connectors进行配置。

23 部署web服务第三步

点击finishi,完成部署。

24 完成web服务的部署

7、 先启动Tomcat服务,然后右键项目,选择Flex Project Nature子菜单,增加Flex特性。

25 增加Flex特性第一步

Server选择J2EE,点击Next

26 增加Flex特性第二步

修正Root folderRoot URLContext root属性,与项目名一直即可,然后点击Validate Configuration,会提示是否合法。接着修正Output folder,自定,这里定义为Client,点击finish即可。

 

27 增加Flex特性第三步

这时候检查Problem监视框,是否有Error级别的提示:

28 error提示

如果出现Cannot create HTML wrapper. Right-click here to recreate folder html-template.这样的错误,右键点击错误,选择Recreate HTML Template即可。

29 消除错误

这时右键项目,Run as – Flex Application,如果出现空白屏,说明Flex配置成功。

8,关闭Tomcat服务,编写登录范例。

第一步:数据库创建user表,包含idusernamepassword等字段。

第二步:在MyEclipse Database Exploring中打开数据库连接,在user表上右键,选择

Hibernate Reverse Engineering

30 利用工具自动生成映射文件

这里使用传统的方式进行配置,具体见图31.

31 Hibernate生成映射文件

点击NextId Generator 选择 increment

32 选择Id生成方式

    点击Next,设定Class Name,将Id Generator设为increment,点击finish

33 生成数据库映射文件最后一步

 

如果发现User.java以及User.hbm.xml文件不在你想要放置的包下,可以将这两个文件移入想要放置的包内,如com.coarrow.model,然后修改User.hbm.xml文件中的:

 

 

<hibernate-mapping package="com.coarrow.model">

 

 

并修改applicationContext.xml文件中:

 

<property name="mappingResources">
      <list>
           <value>./com/coarrow/model/User.hbm.xml</value>
      </list>
</property>

 

 同时将UserDAO.java放置在com.coarrow.dao包下,修改applicationContext.xml文件中的对应位置为:

 

<bean id="UserDAO" class="com.coarrow.dao.UserDAO">
       <property name="sessionFactory">
           <ref bean="sessionFactory"/>
       </property>
</bean>

第三步:编写登录验证程序

 

新建com.coarrow.service包,在包下新建类LoginProxy,代码如下:

 

package com.coarrow.service;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import com.coarrow.dao.UserDAO;

public class LoginProxy {
    public String Login(String name, String pass) {
       //连接数据库检索用户名和密码是否正确,如果正确返回“success”,否则返回错误信息
       BeanFactory bf=new XmlBeanFactory(new FileSystemResource("D:/Program Files/Apache Software Foundation/Tomcat 6.0/webapps/FlexProject/applicationContext.xml"));
       UserDAO us = (UserDAO) bf.getBean("UserDAO");
       if (us.findByUsername(name).size() != 0)
           return "success";
       else
           return "faild";
    }
}

 

 新增com.coarrow.factory包,在包下新建类SpringFactory,代码如下:

 

package com.coarrow.factory;
 
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
 
import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;
 
public class SpringFactory implements FlexFactory {
    private static final String SOURCE = "source";
 
    public void initialize(String id, ConfigMap configMap) {
    }
 
    public FactoryInstance createFactoryInstance(String id, ConfigMap properties) {
       SpringFactoryInstance instance = new SpringFactoryInstance(this, id,
              properties);
       instance.setSource(properties.getPropertyAsString(SOURCE, instance
              .getId()));
       return instance;
    }
 
    public Object lookup(FactoryInstance inst) {
       SpringFactoryInstance factoryInstance = (SpringFactoryInstance) inst;
       return factoryInstance.lookup();
    }
 
    static class SpringFactoryInstance extends FactoryInstance {
       SpringFactoryInstance(SpringFactory factory, String id,
              ConfigMap properties) {
           super(factory, id, properties);
       }
 
       public String toString() {
           return "SpringFactory instance for id=" + getId() + " source="
                  + getSource() + " scope=" + getScope();
       }
 
       public Object lookup() {
           ApplicationContext appContext = WebApplicationContextUtils
                  .getWebApplicationContext(flex.messaging.FlexContext
                         .getServletConfig().getServletContext());
           String beanName = getSource();
 
           try {
              return appContext.getBean(beanName);
           } catch (NoSuchBeanDefinitionException nexc) {
              ServiceException e = new ServiceException();
              String msg = "Spring service named '" + beanName
                     + "' does not exist.";
              e.setMessage(msg);
              e.setRootCause(nexc);
              e.setDetails(msg);
              e.setCode("Server.Processing");
              throw e;
           } catch (BeansException bexc) {
              ServiceException e = new ServiceException();
              String msg = "Unable to create Spring service named '"
                     + beanName + "' ";
              e.setMessage(msg);
              e.setRootCause(bexc);
              e.setDetails(msg);
              e.setCode("Server.Processing");
              throw e;
           }
       }
    }
}

 

第四步:配置SpringFlex的集成。

A配置WEB-INF/flex/service-config.xml ,添加如下代码:

 

<factories>
       <factory id="springFactory" class="com.coarrow.factory.SpringFactory"/>
</factories>

 

B配置WEB-INF/flex/remote-config.xml,添加如下代码:

 

<destination id="loginService">  
        <properties>  
            <factory>springFactory</factory>  
            <source>loginProxy</source>
        </properties>  
</destination>

 

C配置WEB-INF/applicationContext.xml,添加如下代码:

 

<bean id="loginProxy" class="com.coarrow.service.LoginProxy"/>

 

 

D、配置WEB-INF/web.xml文件,在description属性后添加如下代码:

 

<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>/applicationContext.xml</param-value>
</context-param>
<listener>
	<listener-class>
		org.springframework.web.context.ContextLoaderListener
	</listener-class>
</listener>

 

E、编写MXML文件,验证登陆程序:(RemoteObject 中的 destination="loginService" 这是原文的一处错误

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
              layout="absolute">
    <mx:RemoteObject id="loginDao" destination="loginService"/>
    <mx:Script>
       <![CDATA[
           import mx.rpc.events.FaultEvent;
           import mx.rpc.events.ResultEvent;
           import mx.controls.Alert;
 
           private function callRO(str:String, psw:String):void
           {
              if (str.length == 0 || str == "")
              {
                  errormes.text="用户名不能为空";
              }
              else if (psw.length == 0 || psw == "")
              {
                  errormes.text="密码不能为空";
              }
              else
              {
                  loginDao.Login(str, psw);
                  loginDao.addEventListener(ResultEvent.RESULT, resultHandler);
                  loginDao.addEventListener(FaultEvent.FAULT, faultHandler);
              }
           }
 
           private function resultHandler(event:ResultEvent):void
           {
              if (event.message.body.toString() == "success")
                  Alert.show("登陆成功", "成功");
              else
                  Alert.show("登陆失败", "失败");
           }
 
           private function faultHandler(event:FaultEvent):void
           {
              Alert.show(event.fault.toString(), "失败");
           }
 
           private function reset():void
           {
              username.text="";
              psw.text="";
           }
       ]]>
    </mx:Script>
    <mx:Panel title="登录"
             height="50%"
             width="80%"
             paddingTop="10"
             paddingLeft="10"
             paddingRight="10"
             paddingBottom="10"
             id="mainPanel">
       <mx:Label x="34"
                y="33"
                text="用户名:"/>
       <mx:TextInput x="77"
                    y="31"
                    id="username"/>
       <mx:Label x="34"
                y="61"
                text="密  码:"/>
       <mx:TextInput x="77"
                    y="59"
                    displayAsPassword="true"
                    id="psw"/>
       <mx:Button x="77"
                 y="90"
                 label="登录"
                 click="callRO(username.text,psw.text);"/>
       <mx:Button x="90"
                 y="90"
                 label="重置"
                 click="reset()"/>
       <mx:Label x="163"
                y="94"
                id="errormes"
                color="red"/>
    </mx:Panel>
</mx:Application>

F、检查输出目录的WEB-INF/lib目录下是否有两个asmjar包,删除asm-2.2.3.jar,启动Tomcat

在地址栏里输入:http://localhost:8080/FlexProject/Client/FlexProject.html

 

 

 

你可能感兴趣的:(spring,Hibernate,MyEclipse,Flex)