- 浏览: 364306 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- java (89)
- flex (7)
- sns (3)
- jquery mobile gwt html5 (1)
- VirtualBox Centos 安装 (2)
- tomcat (1)
- nginx (2)
- centOS (7)
- memcache (2)
- hadoop (3)
- hbase (3)
- install (1)
- cloudera (3)
- tools (0)
- gen code (0)
- Mysql (2)
- KinderEditor (1)
- flash chart (1)
- ntsysv (1)
- hibernate search (2)
- compass (1)
- lucence (2)
- hibernate (1)
- jboss cache (0)
- 二级缓存 (1)
- maven (1)
- debian (1)
- go (1)
- golang (2)
- html5 (1)
最新评论
-
llh1985:
wave牛人~~求联系~~~邮箱llh1985@163.com ...
GWT Wave 开源代码运行跑通分析(1) -
zhengliming123:
[img][img][*][*][/flash][*]|[/i ...
hibernate Search 学习研究 附件是maven工程 -
di1984HIT:
写得很嗯好啊。
CentOS 安装 hadoop hbase 使用 cloudera 版本。(一) -
itfanr:
楼主写的真好 本地godoc
Golang 1.0 文档使用。godoc ,go 命令 学习 ,本地运行 gotour -
phe441:
灰常感谢楼主,爱死你了
URL rewrite 3.2 jar 和 文档 pdf 下载
构建富客户端程序 GWT2.3 + Guice3.0 + hibernateJPA 程序代码。
Created Thursday 05 May 2011
gwt2.3 是开发 web2.0 的最理想的技术框架。
但只有 MVC中的 显示 和控制。 而模型这部分 没有给出 相关的实现。
用 spring + hiberante 倒是可以。但是 太过重量级的了。本来 web2.0就是应该快速的。
用上 spring 的IOC 反而感觉会慢点了。启动慢,加载慢。所以选择了一个轻量级的IOC-guice
guice 从 2.0 的版本就开始关注。2.0的版本 还是一个IOC注入 框架。通过@Inject 标记注入bean。
我从 3.0的beta版本就开始关注了。发现里面有了持久层框架的实现 JpaPersistModule
开始的并没有太明白怎么使用这个Module。经过一段学习发现其实很简单。只要在模块启动时候new JpaPersistModule("XXX_unit")
就可以了。
废话少说。启动从 web.xml 开始配置下。
<!-- guice conf begin --> <listener> <listener-class>com.freewebsys.sns.guice.GuiceListener</listener-class> </listener> <filter> <filter-name>guice</filter-name> <filter-class>com.google.inject.servlet.GuiceFilter</filter-class> </filter> <filter-mapping> <filter-name>guice</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- guice conf end →
然后是GuiceListener类的实现
import com.freewebsys.core.dao.BaseDao; import com.freewebsys.core.dao.JpaBaseDao; import com.freewebsys.sns.server.GreetingServiceImpl; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Singleton; import com.google.inject.persist.PersistFilter; import com.google.inject.persist.jpa.JpaPersistModule; import com.google.inject.servlet.GuiceServletContextListener; import com.google.inject.servlet.ServletModule; public class GuiceListener extends GuiceServletContextListener { public Injector getInjector() { return Guice.createInjector(new JpaPersistModule("jpa_unit"), new ServletModule() { protected void configureServlets() { // url重写 // bind(UrlRewriteFilter.class).in(Singleton.class); // filter("/*").through(UrlRewriteFilter.class); // 先进行事物控制 filter("/*").through(PersistFilter.class); // 不可以配置Singleton bind(BaseDao.class).to(JpaBaseDao.class); bind(GreetingServiceImpl.class).in(Singleton.class); serve("/freewebsys_gwt_sns/greet").with(GreetingServiceImpl.class); // Service End } }); } }
其中new JpaPersistModule("jpa_unit") 是加载 jpa实现的模块。配置在src/META-INF/persistence.xml
别忘记自己运行的时候修改 数据库连接用户名密码。还要创建数据库。表就不用创建了。用hibernate.hbm2ddl.auto" value="update创建。
<?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"> <!-- JPA "unit" --> <persistence-unit name="jpa_unit" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <!-- Pojo Begin --> <class>com.freewebsys.sns.pojo.UserInfo</class> <!-- pojo End --> <exclude-unlisted-classes>true</exclude-unlisted-classes> <properties> <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" /> <property name="hibernate.connection.url" value="jdbc:mysql://127.0.0.1:3306/freewebsys?autoReconnect=true&useUnicode=true&characterEncoding=utf-8" /> <property name="hibernate.connection.username" value="freewebsys" /> <property name="hibernate.connection.password" value="freewebsys" /> <property name="hibernate.connection.pool_size" value="2" /> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" /> <property name="hiberante.cache_provider" value="org.hibernate.cache.NoCacheProvider" /> <property name="hibernate.connection.autocommit" value="true" /> <property name="hibernate.cache.use_query_cache" value="false" /> <property name="hibernate.cache.use_second_level_cache" value="false" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.show_sql" value="true" /> <property name="hibernate.format_sql" value="false" /> <!-- <property name="cglib.use_reflection_optimizer" value="true"/> --> <!-- hibernate的c3p0连接池配置(需要jar包:c3p0-0.9.0.4.jar) --> <property name="hibernate.connection.provider_class" value="org.hibernate.connection.C3P0ConnectionProvider" /> <!-- 最小连接数 --> <property name="hibernate.c3p0.min_size" value="5" /> <!-- 最大连接数 --> <property name="hibernate.c3p0.max_size" value="30" /> <!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 <property name="hibernate.c3p0.maxIdleTime" value="60" /> --> <!-- 获得连接的超时时间,如果超过这个时间,会抛出异常,单位毫秒 --> <property name="hibernate.c3p0.timeout" value="1800" /> <!-- 最大的PreparedStatement的数量 --> <property name="hibernate.c3p0.max_statements" value="50" /> <!-- 每隔120秒检查连接池里的空闲连接 ,单位是秒 --> <property name="hibernate.c3p0.idle_test_period" value="120" /> <!-- 当连接池里面的连接用完的时候,C3P0一下获取的新的连接数 --> <property name="hibernate.c3p0.acquire_increment" value="1" /> <!-- 是否每次都验证连接是否可用 <property name="c3p0.validate" value="false" /> --> </properties> </persistence-unit> </persistence>
其中POJO类配置
@Entity public class UserInfo implements java.io.Serializable { public static final String USER_SESSION = "userInfoSession";// 用户session常量 @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id;// private Date createTime;// 创建时间 @Column(length = 100) private String email;// 电子邮件 @Column(length = 100) private String name;// 真实姓名 @Column(length = 100) private String passwd;// 密码 @Column(length = 1) private Integer sex;// 性别 @Column(length = 10) private String birthday;// 生日 @Column(length = 10) private String bloodType;// 血型 private Integer currentProvince;// 所在省 private Integer currentCity;// 所在城市 @Column(length = 100) private String currentArea;// 所在地区 private Integer adminLevel;// 管理员级别 private Integer active;// 是否激活 private Integer score;// 积分 .....省略get set 方法
这个是使用 hibernate JPA + c3p0 数据源的配置文件。
// 先进行事物控制
filter("/*").through(PersistFilter.class);
// 不可以配置Singleton,否则事物有问题
bind(BaseDao.class).to(JpaBaseDao.class);
配置一个通用dao的实现。
接下来就是gwt的servlet配置。在guice下面配置就不用在web.xml下面单独进行配置了。效果是一样的。
bind(GreetingServiceImpl.class).in(Singleton.class);//一定要配置成但立模式
serve("/freewebsys_gwt_sns/greet").with(GreetingServiceImpl.class);
接下来就是GreetingServiceImpl
@Inject private BaseDao baseDao; public String greetServer(String input) throws IllegalArgumentException { List<UserInfo> userList = baseDao.find("from UserInfo "); for (UserInfo userInfo : userList) { System.out.println("userInfo:getId:\t" + userInfo.getId()); } return "yes"; }
没执行复杂查询。就是将userInfo 全部查询并显示Id
gwt这里没有进行太复杂的代码就是 默认 创建的 一个 heloworld。点击一个按钮执行后台。
要运行这个程序需要 安装 google gwt 插件。并且需要修改 appengine本地运行的白名单。
在工程目录/doc/appengine-tools-api.jar下替换${appengine_home}/lib/appengine-tools-api.jar
然后就可以跑通程序了。
运行效果
代码下载地址:
http://freewebsys.googlecode.com/files/freewebsys_gwt_sns.2011.05.tar.gz
评论
发表评论
-
在CSDN上面也开通了博客
2013-02-27 22:41 828在CSDN上面也开通了博客 CSDN 现在发布文章 ... -
resin 服务器学习 配置 单点和 集群
2011-12-08 00:45 2018使用的 resin 4 服务器 ... -
CentOS 安装 Memcache 服务器. java 做客户端.
2011-11-07 18:35 36371,下载安装第三方源: CentOS 6 或 R ... -
CentOS rpm 安装 java 环境 tomcat nginx.
2011-11-03 19:17 7442首先测试更新. yum update ... -
android 源文件 zip包下载.地址
2011-06-20 15:19 1828android 源文件 zip包下载. 网络上面提供了 ... -
读取 jpa 的配置文件.添加自己的属性.
2011-06-15 16:03 1747package com.freewebsys.sns.c ... -
Guice 3.0 学习 persist jpa
2011-03-18 17:39 1491guice 3.0 的 persist 实现 使用的是 ... -
自己弄 开源 CMS 内容发布系统 主要表设计。
2011-03-10 11:34 3788--CMS栏目表 CREATE TABLE ... -
坚信 Debian是比Ubuntu更稳定的操作系统
2011-03-07 14:28 2261坚信 Debian是比Ubuntu更稳定的操作系统 自 ... -
eclipse 3.6 sp2 减肥记录
2011-03-04 09:46 1612喜欢 eclipse 但是 发现 eclipse 的功能很多 ... -
记录 2010 01 12 开始 给 自己 2 年 的时间 去弄 一个 gwt sns
2011-01-13 12:57 1272记录 2010 01 12 开始 给 自己 2 ... -
mac os x86 下 intel 无限驱动下载
2011-01-09 10:45 1371是在 googlecode 的项目 http://co ... -
Macos 下面 开源软件 下载
2011-01-06 16:06 1842macos 常用 软件 下载 macos 官方网站下载 ... -
Ubuntu 更新文件 桌面 菜单丢失, 打算 换 mac os
2011-01-04 11:32 1972ubuntu 是 2009 年 安装 ... -
做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 spring hibernate 如何 ?
2010-12-27 12:48 1413做 一个 sns 的项目 考虑 使用 GWT 做 前台 后台 ... -
Goolge appengine 又可以用了。高兴啊。。
2010-12-15 09:37 694突然想访问下自己的应用。 发现 自己的 appengi ... -
将google app engine 进行 本地化 可写文件 创建线程 去除白名单
2010-12-10 17:36 1860最近 看到 appgeng 被 ... -
设计 一个 oa 当中 的日历显示 跳转 上月 下月
2010-12-01 13:36 1310主要就是利用 java的Calendar 类 ... -
设计实现 一个 基于extjs2.0 做皮肤的 struts2 样式
2010-11-29 14:37 1777想法在 一年前 产生的。 首先使用 extjs2.0 ... -
Google wave 开源代码更新 wave-libraries-2010-11-17.zip 可以下载
2010-11-18 16:28 1292google wave 的代码更新 还是够快的。 ...
相关推荐
GSH:spring3.1.0M2+Hibernate3.5+GWT2.4+JPA+Annotation+Spring4gwt0.0.1亲手整合,也可以上新浪博客去看 http://blog.sina.com.cn/s/blog_687dfecb0100yrmf.html
gwt+spring+hibernate整合例子,导入myeclipse中(要安gwt插件)即可用,数据库自己去代码中查看。包是精简版的,去掉很多不必要的包
最新的GWT2.3的API,根据官方做的CHM,希望对大家有帮助-英文版
一个GWT+Spring2+Spring Security2+Hibernate3的实例,数据库为mssql.在/GwtWeb/WebRoot/WEB-INF/lib 目录下RequiredJar.txt有需要用到的库说明 修改一下applicationContext.xml的数据库设定就可以使用
一个简单的maven项目,演示 smartgwt + spring + hibernate 整合框架
完整代码,绝对能用:Spring和Hibernate部分实现了一个权限管理系统。GWT部分集成了Spring的Service(网上的例子很少,要不代码不全,要不不能使用,这个保证完全可以使用)。请注意各个配置文件,程序所用的包都在...
smartGWT3.0smartGWT3.0smartGWT3.0
GWT 2.3 api ,chm GWT 2.3 api ,chm GWT 2.3 api ,chm
NULL 博文链接:https://musicmmm.iteye.com/blog/751262
(JDK1.6, Maven 3.0, GWT2.1.1, SmartGwt 2.3) gwt maven plugin 创建的 SmartGwt 项目,实现中文、英文国际化。 相关介绍在:http://blog.csdn.net/usedtolove/archive/2011/02/23/6201391.aspx 请选择作为 Maven ...
1:资源是ppt 演示文稿,详细的讲解了基于富客户端的工作流程, 2:图片效果讲解,对于新手来说是非常容易理解和学习的。
整合 GWT EXT STRUTS2 Eclipse 范例
上次上传的没有包含数据库表这次补上;smartGwt、spring和Mybatis的整合
gwt_boot GWT 2.6.1 + 弹簧靴
GWT+开发和部署.docGWT+开发和部署.docGWT+开发和部署.docGWT+开发和部署.docGWT+开发和部署.docGWT+开发和部署.doc
EXT-GWT2.0.1+API+DOC gwtdesigner Gwt-Ext基础-中级-进阶 GWT快速开发 GWT入门 GWT中文教程
GWT+spring的一个实例 需要插件apache 的maven
gxt-2.2.4 EXT GWT Note : Ext GWT 2.X requires GWT 1.7+ or GWT 2.0+ (any build ending in "-gwt2.zip").
Ext + Gwt + Struts2.0 介绍完了各自技术的实现,使用 google plugin 创建一个与struts2.0互通的实例。
Ext + Gwt + Struts2.0 介绍完了各自技术的实现,使用 google plugin 创建一个与struts2.0互通的实例。