论坛首页 Java企业应用论坛

一个Java的Restful服务框架,支持JPA、JAAS、分布式资源对象

浏览 30587 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-06-28  
越来越人性化了,看来不用都不行了。
0 请登录后投票
   发表时间:2008-07-06  
厉害,关注中...
最喜欢这种简洁的东西了。可惜项目中还是用struts,唉
0 请登录后投票
   发表时间:2008-07-08  
非常感谢楼上的关注与支持,你的支持与关注是这个项目的动力,希望更多的朋友能一起参与到中国的开源事业,我们团队的力量很弱,但千千万万的中国开源人的力量就是锐不可挡的。让我们从使用开源、推广开源转到动手做开源。fighting!!!
0 请登录后投票
   发表时间:2008-07-14  
很支持楼主的这份热情,确实,现在国内对开源的使用非常普遍,大大小小的公司都不同程度的使用了许多开源的产品,形成了对国外开源的依赖,总感觉很被动,最近无法正常访问sourceforge,给我们这些使用开源项目的人带来的非常大的不便,所以突然想到,如果今后真的不能访问国外诸大开源网站了怎么办?这时,支持与发展国内的开源项目就显得非常的重要与必要,现在国内linux社区的开源项目非常活跃,真希望j2ee社区的开源也能跟上,为我们国人开发出更多优秀的开源项目,做到楼主所期望的“从使用开源、推广开源转到动手做开源”,支持楼主!
0 请登录后投票
   发表时间:2008-07-22  
能不能简单的说一说jrest4guice和jersey的异同,除了注入框架(guice vs glassfish)以外。
0 请登录后投票
   发表时间:2008-07-23  
nasvel 写道
能不能简单的说一说jrest4guice和jersey的异同,除了注入框架(guice vs glassfish)以外。

问得好,我现在将它们之间做一个简单的对比,如下:

相同点:
  • 两者都是基于Servlet API的实现
  • 都是通过注解的方式进行资源的声明
  • 都支持根据客户的请求不同返回相应的数据类型(json/xml/text等)

不同点:
  • JRest4Guice支持JAAS,通过@RolesAllowed声明资源访问所需要的角色。
  • JRest4Guice支持声明式事务,根据业务的需要声明事务为只读、读写等。
  • JRest4Guice支持分布式资源,通过@RESTful的remoteable属性来声明是否可以被远程访问,并通过@RemoteReference来引用分布式的资源对象。
  • JRest4Guice通过@PageFlow实现对MVC module2的支持,输出结果支持Velocity、Freemarker和Spry模板引擎(当返回类型是text/html时才有效)。
  • JRest4Guice支持增强过的JPA与Hibernate实现,通过BaseEntityManager实现实体的CRUD。
  • JRest4Guice比Jersey更简单、更灵活、更容易扩展。
0 请登录后投票
   发表时间:2008-07-31  
看了LZ的DEMO程序,问两个问题:
1.从下面配置来看,看起来似乎不支持内容协商以支持一种资源有多种表述的情形?
  如果支持,是如何支持的?
@PageFlow( 
     success = @PageInfo(url = "/template/contacts.vm",render=ViewRenderType.VELOCITY),  
     error = @PageInfo(url = "/template/error.vm",render=ViewRenderType.VELOCITY)) 
2.没有看到能手工控制HTTP缓存的迹象,支持否?
0 请登录后投票
   发表时间:2008-07-31  
ayufox 写道
看了LZ的DEMO程序,问两个问题:
1.从下面配置来看,看起来似乎不支持内容协商以支持一种资源有多种表述的情形?
  如果支持,是如何支持的?
@PageFlow( 
     success = @PageInfo(url = "/template/contacts.vm",render=ViewRenderType.VELOCITY),  
     error = @PageInfo(url = "/template/error.vm",render=ViewRenderType.VELOCITY)) 
2.没有看到能手工控制HTTP缓存的迹象,支持否?


[list=1]
  • 通过@ProduceMime显示声明所限定支持的内容表述方式,如果没有声明,系统会根据用户端的请求类型返回系统内置的(html/json/xml/javabean/text)表述形式,用户可以很方便的通过实现ResponseWriter接口来增加新的表述形式,并通过ResponseWriterRegister的registResponseWriter来注册。
  • 	@Get
    	@Path("/contacts")
    	@PageFlow(
    			success = @PageInfo(url = "/template/contacts.vm",render=ViewRenderType.VELOCITY), 
    			error = @PageInfo(url = "/template/error.vm",render=ViewRenderType.VELOCITY))
    	@ProduceMime({MimeType.MIME_OF_JAVABEAN,MimeType.MIME_OF_JSON,MimeType.MIME_OF_TEXT_HTML})
    	public Page<Contact> listContacts(int pageIndex, int pageSize) {
    		return this.domain.listContacts(pageIndex, pageSize);
    	}
    
  • 通过@Cache来声明需要对表述进行缓存,系统缺少提供了基于文件系统缓存的DefaultResourceCacheProvider实现,这个实现中通过监听实体的生命周期事件来维护cache的存活与清除。用户可以很方便的通过实现ResourceCacheProvider接口来自定义缓存的实现,并通过ResourceCacheManager的setResourceCacheProvider来设置系统的缓存提供者实现。 (注:@Cache只对Get类型的请求有效)
  • 	/**
    	 * 显示单个联系人的信息 
    	 * @param contactId 联系对象ID
    	 */
    	@Get
    	@PageFlow(success = @PageInfo(url = "/template/contactDetail.vm"))
    	@Cache //声明需要缓存结果,可以减少应用服务器及数据库的压力
    	public Contact getContact(@Parameter("contactId") String contactId) {
    		return this.domain.findContactById(contactId);
    	}
    

    [/list]

    0 请登录后投票
       发表时间:2008-07-31  
    cnoss 写道
  • 通过@Cache来声明需要对表述进行缓存,系统缺少提供了基于文件系统缓存的DefaultResourceCacheProvider实现,这个实现中通过监听实体的生命周期事件来维护cache的存活与清除。用户可以很方便的通过实现ResourceCacheProvider接口来自定义缓存的实现,并通过ResourceCacheManager的setResourceCacheProvider来设置系统的缓存提供者实现。 (注:@Cache只对Get类型的请求有效)
  • 	/**
    	 * 显示单个联系人的信息 
    	 * @param contactId 联系对象ID
    	 */
    	@Get
    	@PageFlow(success = @PageInfo(url = "/template/contactDetail.vm"))
    	@Cache //声明需要缓存结果,可以减少应用服务器及数据库的压力
    	public Contact getContact(@Parameter("contactId") String contactId) {
    		return this.domain.findContactById(contactId);
    	}
    




    ^_^,其实我说的并不是在应用层面上的Cache,而是通过Http协议的Cache-Control“指示”请求途经的各网关服务器(譬如反向代理服务器)和用户代理服务器缓存该表述,避免请求直接到达目标服务器
    0 请登录后投票
       发表时间:2008-07-31  
    ayufox 写道

    ^_^,其实我说的并不是在应用层面上的Cache,而是通过Http协议的Cache-Control“指示”请求途经的各网关服务器(譬如反向代理服务器)和用户代理服务器缓存该表述,避免请求直接到达目标服务器


    这是我忽略的地方,确实没有考虑到,但这却是应该要涉及到的,谢谢你的提示与建议。最近在考虑对几个网站是否使用CDN的时候也碰到这样的问题。

    0 请登录后投票
    论坛首页 Java企业应用版

    跳转论坛:
    Global site tag (gtag.js) - Google Analytics