- 浏览: 40624 次
- 性别:
文章分类
最新评论
-
sunheavenvan:
我觉得不存在提炼出有所谓的本质,提炼的目的是获取较为准确的心智 ...
Jdon007四象图坐标表示 -
yangyi:
好像没有提及Seam给测试和OO设计上带来的便宜,不好意思,还 ...
Seam生命周期 -
buptwhisper:
性能一直是个问题
Seam生命周期 -
sulong:
<div class="quote_title ...
Seam生命周期 -
may_cauc:
扬长避短吧,任何一种技术的出现都有其初衷。不要轻易否定,在否定 ...
Seam生命周期
Seam,Gavin King发明的JavaEE框架,Gavin King何许人?Hibernate的父亲,一个做强悍ORM的人实现的JavaEE框架又会有什么特点?这个框架对关系数据库做了什么手脚了吗?我们讨论过的贫模型,富模型,DDD和这个框架有点关系吗?在Gavin King眼中,Spring是个什么东西?JCP是个什么东西?Hibernate的代码,Spring的代码,Seam的代码,有何风格?为什么这些牛人不但写程序牛,写书也很牛?
这一串问号是我在用JavaEE堆栈技术编程时从脑袋里冒出来的,今天不写那么多,先写一下Seam的生命周期吧!首先提到的必须是JSF,在JavaEye里似乎被骂惨了,没有包打天下的框架,也许只有菜鸟才希望自己掌握的是一个包打天下的框架,JSF也只是web开发中n种模式中的一种,Sun的工程师都是模式专家,所以也把OO铺到了web框架的铁轨上,他们把html表示的界面全部抽象为对象,组件,然后用这些组件去和后台交互,向程序员屏蔽掉了底层的http。
JSF现在到了2.0了,以前被人骂的缺点很多似乎在2.0中已经修复和增强,但是Seam2目前还是建立在JSF1.2上的,所以还必须得说一下JSF1.2,JSF一向别人的批评的地方有下面几个:
1,自定义组件太难开发
2,第一次请求的虚弱
3,一切皆POST
4,导航太简单
5,生命周期复杂
关于这些缺点,Seam都用自己的方式做了修正和增强。Seam之所能够通过自己的手段弥补JSF的缺点,JSF生命周期设计帮了大忙,其实每个web框架都有自己的请求生命周期,只是JSF把这一笔加重了,留下了截面让开发者介入,这个界面就是请求周期中的阶段监听器,Seam利用这个阶段监听器做了大量的工作,看下面这个图吧,Seam把JSF简单的6个阶段扩展到了22个
Seam的生命周期就在JSF的阶段监听器的使唤下步步前进。
让我们来看看Seam的启动过程的真实面目,要在应用服务器中使用Seam,必须让Seam钩进Servlet容器的生命周期,当应用程序启动的时候就必须启动Seam,然后Seam开始初始化,Seam一个最大特点就是有状态,所以Servlet容器也要通知Seam Http会话的生命周期,Seam利用过滤器,Servlet和JSF阶段监听器参与一次Servlet请求,同时增强了JSF的生命周期。
Seam的开关是一个注册在web.xml中的SeamListener,通过这个监听器,Seam开始初始化,它会扫描路径中所有它认识的组件,然后放进容器中,刚才说了,Seam依赖JSF的阶段监听器,所以必须配置JSF的Servlet和相关JSF配置,当请求到来,先被JSF拦截,然后进入6个生命阶段,Seam随之开始介入,由于JSF规范并没有指示如何支持浏览器请求静态文件,比如CSS,JS,所以Seam提供了自己的Servlet来处理这种资源请求,所以web.xml还得配置这个Servlet,Seam除了再JSF的阶段监听器中做事情之外还对非JSF的请求感兴趣,所以为了拦截非JSF请求,Seam又有自己的过滤器,所以中和起来,Seam应用的web.xml配置如下
<!-- Seam --> <listener> <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> </listener> <filter> <filter-name>Seam Filter</filter-name> <filter-class>org.jboss.seam.servlet.SeamFilter</filter-class> </filter> <filter-mapping> <filter-name>Seam Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>Seam Resource Servlet</servlet-name> <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Seam Resource Servlet</servlet-name> <url-pattern>/seam/resource/*</url-pattern> </servlet-mapping> <!-- Faces Servlet --> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.seam</url-pattern> </servlet-mapping> <!-- JSF parameters --> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <session-config> <session-timeout>10</session-timeout> </session-config>
再贴出Seam的日志以便配合分析
信息: Initializing Mojarra (1.2_12-b01-FCS) for context '/jboss-seam-hibernate' 2011-02-12 13:52:27,529 INFO [javax.servlet.ServletContextListener] - Welcome to Seam 2.2.0.GA 2011-02-12 13:52:27,529 DEBUG [org.jboss.seam.contexts.ServletLifecycle] - Cached the context classloader in servletContext as 'seam.context.classLoader' 2011-02-12 13:52:29,310 DEBUG [org.jboss.seam.deployment.ClassDescriptor] - could not load class (missing dependency): org.jboss.seam.transaction.EjbSynchronizations 2011-02-12 13:52:29,310 DEBUG [org.jboss.seam.deployment.Scanner] - skipping class org/jboss/seam/transaction/EjbSynchronizations.class because it cannot be loaded (may reference a type which is not available on the classpath) 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/async, package: org.jboss.seam.async, prefix: org.jboss.seam.async 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/framework, package: org.jboss.seam.framework, prefix: org.jboss.seam.core.framework 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/theme, package: org.jboss.seam.theme, prefix: org.jboss.seam.theme 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/security, package: org.jboss.seam.security.management, prefix: org.jboss.seam.security 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/bpm, package: org.jboss.seam.bpm, prefix: org.jboss.seam.bpm 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/mail, package: org.jboss.seam.mail, prefix: org.jboss.seam.mail 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/security, package: org.jboss.seam.security, prefix: org.jboss.seam.security 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/web, package: org.jboss.seam.web, prefix: org.jboss.seam.web 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/captcha, package: org.jboss.seam.captcha, prefix: org.jboss.seam.captcha 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/navigation, package: org.jboss.seam.navigation, prefix: org.jboss.seam.navigation 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/international, package: org.jboss.seam.international, prefix: org.jboss.seam.international 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/core, package: org.jboss.seam.core, prefix: org.jboss.seam.core 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/cache, package: org.jboss.seam.cache, prefix: org.jboss.seam.cache 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/jms, package: org.jboss.seam.jms, prefix: org.jboss.seam.jms 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/ui, package: org.jboss.seam.ui, prefix: org.jboss.seam.ui 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/transaction, package: org.jboss.seam.transaction, prefix: org.jboss.seam.transaction 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/security, package: org.jboss.seam.security.permission, prefix: org.jboss.seam.security 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/drools, package: org.jboss.seam.drools, prefix: org.jboss.seam.drools 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/document, package: org.jboss.seam.document, prefix: org.jboss.seam.document 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.init.Initialization] - Namespace: http://jboss.com/products/seam/persistence, package: org.jboss.seam.persistence, prefix: org.jboss.seam.persistence 2011-02-12 13:52:30,045 DEBUG [org.jboss.seam.util.Resources] - Loaded resource from servlet context: /WEB-INF/components.xml 2011-02-12 13:52:30,045 INFO [org.jboss.seam.init.Initialization] - reading /WEB-INF/components.xml 2011-02-12 13:52:30,185 DEBUG [org.jboss.seam.init.Initialization] - reading jar:file:/C:/Documents%20and%20Settings/xiez/Workspaces/MyEclipse%208.5/.metadata/.me_tcat/webapps/jboss-seam-hibernate/WEB-INF/lib/jboss-seam-ui.jar!/META-INF/components.xml 2011-02-12 13:52:30,185 DEBUG [org.jboss.seam.init.Initialization] - reading jar:file:/C:/Documents%20and%20Settings/xiez/Workspaces/MyEclipse%208.5/.metadata/.me_tcat/webapps/jboss-seam-hibernate/WEB-INF/lib/jboss-seam.jar!/META-INF/components.xml 2011-02-12 13:52:30,201 DEBUG [org.jboss.seam.util.Resources] - Loaded resource from context classloader: seam.properties 2011-02-12 13:52:30,201 INFO [org.jboss.seam.init.Initialization] - reading properties from: /seam.properties 2011-02-12 13:52:30,201 DEBUG [org.jboss.seam.init.Initialization] - not found: /jndi.properties 2011-02-12 13:52:30,201 DEBUG [org.jboss.seam.init.Initialization] - not found: /seam-jndi.properties 2011-02-12 13:52:30,201 DEBUG [org.jboss.seam.init.Initialization] - initializing Seam 2011-02-12 13:52:30,201 DEBUG [org.jboss.seam.contexts.ServletLifecycle] - >>> Begin initialization 2011-02-12 13:52:30,295 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.core.locale 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.core.locale 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.core.resourceLoader 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.web.userPrincipal 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.web.isUserInRole 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.transaction.transaction 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.core.expressions 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.web.parameters 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.persistence.persistenceProvider 2011-02-12 13:52:30,326 INFO [org.jboss.seam.init.Initialization] - two components with same name, higher precedence wins: org.jboss.seam.core.manager 2011-02-12 13:52:30,342 DEBUG [org.jboss.seam.util.Resources] - Loaded resource from servlet context: jndi:/localhost/jboss-seam-hibernate/WEB-INF/pages.xml 2011-02-12 13:52:30,342 DEBUG [org.jboss.seam.init.Initialization] - Using Java hot deploy 2011-02-12 13:52:30,342 DEBUG [org.jboss.seam.init.Initialization] - Installing components... 2011-02-12 13:52:30,701 INFO [org.jboss.seam.Component] - Component: authenticator, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.AuthenticatorAction 2011-02-12 13:52:30,748 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,795 INFO [org.jboss.seam.Component] - Component: booking, scope: CONVERSATION, type: ENTITY_BEAN, class: org.jboss.seam.example.hibernate.Booking 2011-02-12 13:52:30,810 INFO [org.jboss.seam.Component] - Component: bookingDatabase, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.ManagedHibernateSession 2011-02-12 13:52:30,810 DEBUG [org.jboss.seam.Component] - bookingDatabase.sessionFactory=#{hibernateSessionFactory} 2011-02-12 13:52:30,857 INFO [org.jboss.seam.Component] - Component: bookingList, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.BookingListAction 2011-02-12 13:52:30,873 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.TransactionInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,873 INFO [org.jboss.seam.Component] - Component: changePassword, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.ChangePasswordAction 2011-02-12 13:52:30,888 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,888 INFO [org.jboss.seam.Component] - Component: hibernateSessionFactory, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.HibernateSessionFactory 2011-02-12 13:52:30,888 INFO [org.jboss.seam.Component] - Component: hotel, scope: CONVERSATION, type: ENTITY_BEAN, class: org.jboss.seam.example.hibernate.Hotel 2011-02-12 13:52:30,888 INFO [org.jboss.seam.Component] - Component: hotelBooking, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.HotelBookingAction 2011-02-12 13:52:30,904 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.ConversationInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,904 INFO [org.jboss.seam.Component] - Component: hotelSearch, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.HotelSearchingAction 2011-02-12 13:52:30,904 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,904 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.async.asynchronousExceptionHandler, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.async.AsynchronousExceptionHandler 2011-02-12 13:52:30,904 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.async.dispatcher, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.async.ThreadPoolDispatcher 2011-02-12 13:52:30,920 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.captcha.captcha, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.captcha.Captcha 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.captcha.captchaImage, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.captcha.CaptchaImage 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.ConversationIdGenerator, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationIdGenerator 2011-02-12 13:52:30,935 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.contexts, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Contexts 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.conversation, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Conversation 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.conversationEntries, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationEntries 2011-02-12 13:52:30,935 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.conversationListFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationList 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.conversationPropagation, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationPropagation 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.conversationStackFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationStack 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.events, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Events 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.expressions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesExpressions 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.interpolator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Interpolator 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.locale, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.Locale 2011-02-12 13:52:30,951 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.manager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesManager 2011-02-12 13:52:30,951 DEBUG [org.jboss.seam.Component] - org.jboss.seam.core.manager.concurrentRequestTimeout=500 2011-02-12 13:52:30,967 DEBUG [org.jboss.seam.Component] - org.jboss.seam.core.manager.conversationTimeout=120000 2011-02-12 13:52:30,967 DEBUG [org.jboss.seam.Component] - org.jboss.seam.core.manager.conversationIdParameter=cid 2011-02-12 13:52:30,967 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.resourceBundle, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ResourceBundle 2011-02-12 13:52:30,967 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.resourceLoader, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.ResourceLoader 2011-02-12 13:52:30,967 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.core.validators, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Validators 2011-02-12 13:52:30,967 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.document.documentStore, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.document.DocumentStore 2011-02-12 13:52:30,967 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,967 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.el.referenceCache, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.el.JBossELReferenceCache 2011-02-12 13:52:30,967 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:30,982 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.exception.exceptions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.exception.Exceptions 2011-02-12 13:52:30,998 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.dataModels, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.DataModels 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.dateConverter, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.DateConverter 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.facesContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesContext 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.facesPage, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesPage 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.httpError, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.HttpError 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.redirect, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.faces.Redirect 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.renderer, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.FaceletsRenderer 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.switcher, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.faces.Switcher 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.uiComponent, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.UiComponent 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.faces.validation, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.Validation 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.framework.currentDate, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDate 2011-02-12 13:52:31,013 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.framework.currentDatetime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDatetime 2011-02-12 13:52:31,013 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.framework.currentTime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentTime 2011-02-12 13:52:31,013 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.graphicImage.image, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.Image 2011-02-12 13:52:31,013 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.localeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.international.LocaleSelector 2011-02-12 13:52:31,029 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.messagesFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.Messages 2011-02-12 13:52:31,029 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.statusMessages, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesMessages 2011-02-12 13:52:31,029 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.timeZone, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZone 2011-02-12 13:52:31,029 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.timeZoneSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZoneSelector 2011-02-12 13:52:31,029 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.international.timeZones, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZones 2011-02-12 13:52:31,045 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,045 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.mail.mailSession, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.mail.MailSession 2011-02-12 13:52:31,060 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.navigation.pages, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.navigation.Pages 2011-02-12 13:52:31,076 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.navigation.safeActions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.navigation.SafeActions 2011-02-12 13:52:31,076 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.persistence.persistenceContexts, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.PersistenceContexts 2011-02-12 13:52:31,092 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.persistence.persistenceProvider, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.persistence.HibernatePersistenceProvider 2011-02-12 13:52:31,576 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.configurationFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.security.Configuration 2011-02-12 13:52:31,576 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.credentials, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.Credentials 2011-02-12 13:52:31,576 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.entityPermissionChecker, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.EntityPermissionChecker 2011-02-12 13:52:31,576 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.facesSecurityEvents, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.FacesSecurityEvents 2011-02-12 13:52:31,576 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.identifierPolicy, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.IdentifierPolicy 2011-02-12 13:52:31,592 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.identity, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.Identity 2011-02-12 13:52:31,592 DEBUG [org.jboss.seam.Component] - org.jboss.seam.security.identity.authenticateMethod=#{authenticator.authenticate} 2011-02-12 13:52:31,592 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.identityManager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.security.management.IdentityManager 2011-02-12 13:52:31,592 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.management.roleAction, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.RoleAction 2011-02-12 13:52:31,592 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.ConversationInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,592 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.management.roleSearch, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.RoleSearch 2011-02-12 13:52:31,592 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,592 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.management.userAction, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.UserAction 2011-02-12 13:52:31,607 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.ConversationInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.management.userSearch, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.UserSearch 2011-02-12 13:52:31,607 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.passwordHash, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.security.management.PasswordHash 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.permission.permissionSearch, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.action.PermissionSearch 2011-02-12 13:52:31,607 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.ConversationInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.permissionManager, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PermissionManager 2011-02-12 13:52:31,607 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.permissionMapper, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PermissionMapper 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.persistentPermissionResolver, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PersistentPermissionResolver 2011-02-12 13:52:31,607 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.security.rememberMe, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.RememberMe 2011-02-12 13:52:31,623 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.theme.themeFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.theme.Theme 2011-02-12 13:52:31,623 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.theme.themeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.theme.ThemeSelector 2011-02-12 13:52:31,623 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.transaction.facesTransactionEvents, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.transaction.FacesTransactionEvents 2011-02-12 13:52:31,623 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.transaction.synchronizations, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.transaction.SeSynchronizations 2011-02-12 13:52:31,623 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.transaction.transaction, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.transaction.HibernateTransaction 2011-02-12 13:52:31,623 DEBUG [org.jboss.seam.Component] - org.jboss.seam.transaction.transaction.session=#{bookingDatabase} 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.EntityConverter, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.ui.EntityConverter 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.clientUidSelector, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.ui.ClientUidSelector 2011-02-12 13:52:31,638 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.entityIdentifierStore, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.ui.EntityIdentifierStore 2011-02-12 13:52:31,638 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.entityLoader, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.JpaEntityLoader 2011-02-12 13:52:31,638 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.transaction.TransactionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.facelet.faceletCompiler, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.FaceletCompiler 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.facelet.facesContextFactory, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.RendererFacesContextFactory 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.facelet.mockHttpSession, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.HttpSessionManager 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.facelet.mockServletContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.ServletContextManager 2011-02-12 13:52:31,638 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.graphicImage.graphicImageResource, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.GraphicImageResource 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.graphicImage.graphicImageStore, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.GraphicImageStore 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.ui.resource.webResource, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.resource.WebResource 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.ajax4jsfFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.Ajax4jsfFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.ajax4jsfFilterInstantiator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.filter.Ajax4jsfFilterInstantiator 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.exceptionFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.ExceptionFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.identityFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.IdentityFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.isUserInRole, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.IsUserInRole 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.loggingFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.LoggingFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.multipartFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.MultipartFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.parameters, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.Parameters 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.redirectFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.RedirectFilter 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.servletContexts, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.web.ServletContexts 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.session, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.web.Session 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: org.jboss.seam.web.userPrincipal, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.UserPrincipal 2011-02-12 13:52:31,654 INFO [org.jboss.seam.Component] - Component: register, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.example.hibernate.RegisterAction 2011-02-12 13:52:31,654 DEBUG [org.jboss.seam.Component] - interceptor stack: [Interceptor(org.jboss.seam.core.MethodContextInterceptor), Interceptor(org.jboss.seam.core.BijectionInterceptor), Interceptor(org.jboss.seam.transaction.RollbackInterceptor)] 2011-02-12 13:52:31,670 INFO [org.jboss.seam.Component] - Component: user, scope: SESSION, type: ENTITY_BEAN, class: org.jboss.seam.example.hibernate.User 2011-02-12 13:52:31,670 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.security.persistentPermissionResolver 2011-02-12 13:52:31,670 WARN [org.jboss.seam.security.permission.PersistentPermissionResolver] - no permission store available - please install a PermissionStore with the name 'org.jboss.seam.security.jpaPermissionStore' if persistent permissions are required. 2011-02-12 13:52:31,670 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.security.permissionMapper 2011-02-12 13:52:31,670 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.navigation.pages 2011-02-12 13:52:31,670 DEBUG [org.jboss.seam.util.Resources] - Loaded resource from servlet context: /WEB-INF/pages.xml 2011-02-12 13:52:31,670 DEBUG [org.jboss.seam.navigation.Pages] - reading pages.xml file: /WEB-INF/pages.xml 2011-02-12 13:52:31,763 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.el.referenceCache 2011-02-12 13:52:31,842 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: hibernateSessionFactory 2011-02-12 13:52:31,904 INFO [org.hibernate.cfg.annotations.Version] - Hibernate Annotations 3.4.0.GA 2011-02-12 13:52:31,935 INFO [org.hibernate.cfg.Environment] - Hibernate 3.3.1.GA 2011-02-12 13:52:31,935 INFO [org.hibernate.cfg.Environment] - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.format_sql=true} 2011-02-12 13:52:31,935 INFO [org.hibernate.cfg.Environment] - Bytecode provider name : javassist 2011-02-12 13:52:32,013 INFO [org.hibernate.cfg.Environment] - using JDK 1.4 java.sql.Timestamp handling 2011-02-12 13:52:32,185 INFO [org.hibernate.annotations.common.Version] - Hibernate Commons Annotations 3.1.0.GA 2011-02-12 13:52:32,185 INFO [org.hibernate.cfg.Configuration] - configuring from resource: /hibernate.cfg.xml 2011-02-12 13:52:32,185 INFO [org.hibernate.cfg.Configuration] - Configuration resource: /hibernate.cfg.xml 2011-02-12 13:52:32,248 INFO [org.hibernate.cfg.Configuration] - Configured SessionFactory: null 2011-02-12 13:52:32,263 INFO [org.hibernate.cfg.search.HibernateSearchEventListenerRegister] - Unable to find org.hibernate.search.event.FullTextIndexEventListener on the classpath. Hibernate Search is not enabled. 2011-02-12 13:52:32,373 INFO [org.hibernate.cfg.AnnotationBinder] - Binding entity from annotated class: org.jboss.seam.example.hibernate.Hotel 2011-02-12 13:52:32,467 INFO [org.hibernate.cfg.annotations.EntityBinder] - Bind entity org.jboss.seam.example.hibernate.Hotel on table Hotel 2011-02-12 13:52:32,576 INFO [org.hibernate.cfg.AnnotationBinder] - Binding entity from annotated class: org.jboss.seam.example.hibernate.User 2011-02-12 13:52:32,576 INFO [org.hibernate.cfg.annotations.EntityBinder] - Bind entity org.jboss.seam.example.hibernate.User on table Customer 2011-02-12 13:52:32,592 INFO [org.hibernate.cfg.AnnotationBinder] - Binding entity from annotated class: org.jboss.seam.example.hibernate.Booking 2011-02-12 13:52:32,592 INFO [org.hibernate.cfg.annotations.EntityBinder] - Bind entity org.jboss.seam.example.hibernate.Booking on table Booking 2011-02-12 13:52:32,795 INFO [org.hibernate.validator.Version] - Hibernate Validator 3.1.0.GA 2011-02-12 13:52:32,842 INFO [org.hibernate.connection.DriverManagerConnectionProvider] - Using Hibernate built-in connection pool (not for production use!) 2011-02-12 13:52:32,842 INFO [org.hibernate.connection.DriverManagerConnectionProvider] - Hibernate connection pool size: 20 2011-02-12 13:52:32,842 INFO [org.hibernate.connection.DriverManagerConnectionProvider] - autocommit mode: false 2011-02-12 13:52:32,842 INFO [org.hibernate.connection.DriverManagerConnectionProvider] - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:mem:seambooking 2011-02-12 13:52:32,842 INFO [org.hibernate.connection.DriverManagerConnectionProvider] - connection properties: {user=sa, password=****} 2011-02-12 13:52:33,107 INFO [org.hibernate.cfg.SettingsFactory] - RDBMS: HSQL Database Engine, version: 1.8.0 2011-02-12 13:52:33,107 INFO [org.hibernate.cfg.SettingsFactory] - JDBC driver: HSQL Database Engine Driver, version: 1.8.0 2011-02-12 13:52:33,154 INFO [org.hibernate.dialect.Dialect] - Using dialect: org.hibernate.dialect.HSQLDialect 2011-02-12 13:52:33,170 INFO [org.hibernate.transaction.TransactionFactoryFactory] - Transaction strategy: org.hibernate.transaction.JDBCTransactionFactory 2011-02-12 13:52:33,170 INFO [org.hibernate.transaction.TransactionManagerLookupFactory] - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Automatic flush during beforeCompletion(): enabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Automatic session close at end of transaction: disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - JDBC batch size: 15 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - JDBC batch updates for versioned data: disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Scrollable result sets: enabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - JDBC3 getGeneratedKeys(): disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Connection release mode: auto 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Default batch fetch size: 1 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Generate SQL with comments: disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Order SQL updates by primary key: disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Order SQL inserts for batching: disabled 2011-02-12 13:52:33,170 INFO [org.hibernate.cfg.SettingsFactory] - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 2011-02-12 13:52:33,185 INFO [org.hibernate.hql.ast.ASTQueryTranslatorFactory] - Using ASTQueryTranslatorFactory 2011-02-12 13:52:33,185 INFO [org.hibernate.cfg.SettingsFactory] - Query language substitutions: {} 2011-02-12 13:52:33,185 INFO [org.hibernate.cfg.SettingsFactory] - JPA-QL strict compliance: disabled 2011-02-12 13:52:33,185 INFO [org.hibernate.cfg.SettingsFactory] - Second-level cache: enabled 2011-02-12 13:52:33,185 INFO [org.hibernate.cfg.SettingsFactory] - Query cache: disabled 2011-02-12 13:52:33,201 INFO [org.hibernate.cfg.SettingsFactory] - Cache region factory : org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge 2011-02-12 13:52:33,201 INFO [org.hibernate.cache.impl.bridge.RegionFactoryCacheProviderBridge] - Cache provider: org.hibernate.cache.HashtableCacheProvider 2011-02-12 13:52:33,201 INFO [org.hibernate.cfg.SettingsFactory] - Optimize cache for minimal puts: disabled 2011-02-12 13:52:33,201 INFO [org.hibernate.cfg.SettingsFactory] - Structured second-level cache entries: disabled 2011-02-12 13:52:33,217 INFO [org.hibernate.cfg.SettingsFactory] - Echoing all SQL to stdout 2011-02-12 13:52:33,217 INFO [org.hibernate.cfg.SettingsFactory] - Statistics: disabled 2011-02-12 13:52:33,217 INFO [org.hibernate.cfg.SettingsFactory] - Deleted entity synthetic identifier rollback: disabled 2011-02-12 13:52:33,217 INFO [org.hibernate.cfg.SettingsFactory] - Default entity-mode: pojo 2011-02-12 13:52:33,217 INFO [org.hibernate.cfg.SettingsFactory] - Named query checking : enabled 2011-02-12 13:52:33,326 INFO [org.hibernate.impl.SessionFactoryImpl] - building session factory 2011-02-12 13:52:33,873 INFO [org.hibernate.impl.SessionFactoryObjectFactory] - Not binding factory to JNDI, no JNDI name configured 2011-02-12 13:52:33,904 INFO [org.hibernate.tool.hbm2ddl.SchemaExport] - Running hbm2ddl schema export 2011-02-12 13:52:33,904 INFO [org.hibernate.tool.hbm2ddl.SchemaExport] - exporting generated schema to database 2011-02-12 13:52:33,920 INFO [org.hibernate.tool.hbm2ddl.SchemaExport] - Executing import script: /import.sql 2011-02-12 13:52:33,920 INFO [org.hibernate.tool.hbm2ddl.SchemaExport] - schema export complete 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.security.entityPermissionChecker 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.transaction.facesTransactionEvents 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - starting up: org.jboss.seam.security.facesSecurityEvents 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - destroying: warRootDeploymentStrategy 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - destroying: deploymentStrategy 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - destroying: hotDeploymentStrategy 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.Contexts] - destroying: org.jboss.seam.core.events 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.contexts.ServletLifecycle] - <<< End initialization 2011-02-12 13:52:33,951 DEBUG [org.jboss.seam.init.Initialization] - done initializing Seam 2011-02-12 13:52:33,967 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.loggingFilter 2011-02-12 13:52:33,967 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.ajax4jsfFilter 2011-02-12 13:52:33,998 INFO [org.ajax4jsf.cache.CacheManager] - Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory 2011-02-12 13:52:34,014 INFO [org.ajax4jsf.cache.LRUMapCacheFactory] - Creating LRUMap cache instance using parameters: {facelets.DEVELOPMENT=true, javax.faces.DEFAULT_SUFFIX=.xhtml} 2011-02-12 13:52:34,014 INFO [org.ajax4jsf.cache.LRUMapCacheFactory] - Creating LRUMap cache instance of default capacity 2011-02-12 13:52:34,045 INFO [org.ajax4jsf.cache.CacheManager] - Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory 2011-02-12 13:52:34,045 INFO [org.ajax4jsf.cache.LRUMapCacheFactory] - Creating LRUMap cache instance using parameters: {facelets.DEVELOPMENT=true, javax.faces.DEFAULT_SUFFIX=.xhtml} 2011-02-12 13:52:34,045 INFO [org.ajax4jsf.cache.LRUMapCacheFactory] - Creating LRUMap cache instance of default capacity 2011-02-12 13:52:34,045 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.redirectFilter 2011-02-12 13:52:34,045 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.exceptionFilter 2011-02-12 13:52:34,045 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.multipartFilter 2011-02-12 13:52:34,045 INFO [org.jboss.seam.servlet.SeamFilter] - Initializing filter: org.jboss.seam.web.identityFilter
评论
总的来说,感觉Seam从纯粹技术角度来说,方便了开发和使用,基于标准和OO,代价就是复杂的实现原理和性能,这个应该和EJB是一个意思
目前没有太多接触,发言可能有误,希望楼上各位指正
你是指Gavin King想要做一个web框架,来真正的发挥hibernate的能力吗?
话不投机,说不下去了。你要是有兴趣我们可以单独聊呀。
seam的好处,坏处我都说,而且我也说清楚了。richfaces的性能是问题,conversation长对话的性能是问题,jsf 的生命周期是问题,其他不一一列举。
seam的好处呢,正式集成诸多组件,让开发更容易。
楼上一个劲说seam2不要用,你倒是说出个1,2,3.bug 多,你举一个没解决的瞅瞅,对待技术不要武断。
有一句话是爱之深,责之切。seam我的最久,感情也更深,他的缺点我从来都不回避,我有时候做梦都想梦到一个效率奇高,使用简单的ajax 前端,可惜我没那本事,也没那精力。利用好技术的长处,做好手头的工作,足矣。如果有空闲的时间,多和seam,或者其他自己喜爱的技术社区互动,对自己的提高也不无裨益。
你爱也好,恨也好,是你个人感情的事,我尊重你的感情,就算你为了seam献身,我也只会送去尊重的目光,但是当我们谈论这个技术本身,当我们的评价会影响到别人的决策时,我不仅要尊重你的感情,还要尊重别人的利益。因此,正如我尊重你对seam的爱一样,你也应当尊重我对seam的恨。把我们的爱恨都展现,让每个决策者自己去评判。
从来都是业务复杂,需求变更,软件质量管理,测试等耗费更多的精力。
我承认业务,需求等等很多时候比具体实现技术重要,但这并不代表我们不需要对实现技术进行挑选和改进。特别对于一个多人协作的,长期运行维护的项目,实现技术的选择并不可忽视。
只能说你在瞎扯了。seam3 经过实践检验了么?seam2 经过那么实践检验,怎么说。
结论过于武断。技术的高低不是决定项目的成功与否,使用技术的人才是关键。
我们讨论seam什么的不是很好吗?为什么要搞人身攻击呢?你说我瞎扯,我说你胡扯,那这样的讨论还有存在的意义吗?请注意你的态度。
seam2这个开源项目已经停止更新了,都转到新的seam3上了,如果现在有新项目,何必非要搭这个明日黄花样的老车呢?seam2经过实践检验了,但至少在我们这里没有通过检验,我个人的观点,就算乘老车,也不要乘seam2这样的破车。seam3到底在实践中会表现如何我不知道,但是从它的设计来看,至少它模块化了,你可以只要jsf2 + weld,而不选择使用其它模块,集成的东西少了,自然出问题的机率也会变低。再者seam3也符合java ee 6标准了,这样你可以保留选择标准的哪种实现的权力,这不是很好吗?就凭这两点seam3也是可以尝试的。
我觉得与seam2 seam3相比,以spring为核心的基础架构这些年来不仅使用的人多,而且口碑也好,并且还在持续的更新中,所以我才觉得保守一点还是使用以spring为核心的基础架构好了,不要轻易尝试seam。
有一句话是爱之深,责之切。seam我的最久,感情也更深,他的缺点我从来都不回避,我有时候做梦都想梦到一个效率奇高,使用简单的ajax 前端,可惜我没那本事,也没那精力。利用好技术的长处,做好手头的工作,足矣。如果有空闲的时间,多和seam,或者其他自己喜爱的技术社区互动,对自己的提高也不无裨益。
从来都是业务复杂,需求变更,软件质量管理,测试等耗费更多的精力。
只能说你在瞎扯了。seam3 经过实践检验了么?seam2 经过那么实践检验,怎么说。
结论过于武断。技术的高低不是决定项目的成功与否,使用技术的人才是关键。
倒不是偏见,确实是在实践中发现的。当然,要用它做互联网应用也可以,但是“可以”不代表适合。如果你有什么成功案例,欢迎拿出来说说。
您可以说说您在实践中发现了它的哪些不足呢!?
我只用过seam2,seam3没有使用过,不做评论。
1. seam太复杂,学习困难,难以使用,不好招聘。网站大了,需要程序员多了,招个人都难
2. seam在运行时占用的内存太多,浪费硬件资源
3. seam里集成的richfaces什么的,生成的页面太大,很慢,不适合用来做互联网应用。如果不用的话,还要手写html,那还不如不用seam,有个freemarker,velocity或jsp什么的得了
4. seam服务端效率也低,看看它的那个生命周期图就知道了,显示一个表单,提交一个表单这么简单的事,它做出了那么多的事
5. seam不成熟,bug很多,经常出错。
不知道我说的这几点,你同不同意
我也发表一下我的看法:
1、seam 复杂也是因为集成了很多组件显得复杂,但是当你掌握了以后他的编程模型也很简单,核心IOC这一块谁都这么用,复杂的东西你可以选择不用。
2、seam 启动慢,占用内存多,spring 未尝不是这样?
3、richfaces平心而论,用起来简单,优化起来真难。我在项目中用richfaces也是最多,都是企业项目,如果是展现性能要求比较高,我肯定不会用richfaces。
4、seam服务器端的效率限制也是conversation会话周期效率会受影响,但你有没有想过,真是这个会话周期给你省了多少的事?
5、完全没感觉到,做了很多项目,很多时候都是用的问题。
倒不是偏见,确实是在实践中发现的。当然,要用它做互联网应用也可以,但是“可以”不代表适合。如果你有什么成功案例,欢迎拿出来说说。
您可以说说您在实践中发现了它的哪些不足呢!?
我只用过seam2,seam3没有使用过,不做评论。
1. seam太复杂,学习困难,难以使用,不好招聘。网站大了,需要程序员多了,招个人都难
2. seam在运行时占用的内存太多,浪费硬件资源
3. seam里集成的richfaces什么的,生成的页面太大,很慢,不适合用来做互联网应用。如果不用的话,还要手写html,那还不如不用seam,有个freemarker,velocity或jsp什么的得了
4. seam服务端效率也低,看看它的那个生命周期图就知道了,显示一个表单,提交一个表单这么简单的事,它做出了那么多的事
5. seam不成熟,bug很多,经常出错。
不知道我说的这几点,你同不同意
1.这个我同意,但是关键还是要看您公司舍不舍得成本问题了
2.我想您指的应该是jboss as在运行时占用的内存吧!
3.我觉得web开发这块,前台确实是个挺恶心的东西,这东西大家都要面对的,你用或者不用rf,需求就在那里,不增不减.谁都没招
4.这点我觉着是这样的,首先jsf是事件驱动的,有它自己的生命周期,而seam是把ejb3.0或者是pojo直接绑定到jsf页面了,那么依照jsf的生命周期来说,它必然会在其生命周期过程中进行拦截.
5.seam我用的时候是2.0,没有发现经常出错,现今,它已经有了2.2.1final了.
我觉得整体来说,性能上不是seam的问题,而是因为它集成的东西较多,例如像hibernate或者jsf这类咱们没有用好而导致看上去seam性能很差的样子.
集成太多,但是又没有模块化,好让人选择集成哪些功能,就是一很大的问题。seam3好像是模块化了,但是受过伤之后已经不想再搞seam了。我们以后会逐步把所有seam应用全都替换掉。争论这种过去的东西已经没有多大意义了,它出来这么多年,就没有被多少人采用,本身就说明了这种技术真的是有问题的。
嗨,在中国,国外的新技术出来N年之后,中国才掀起浪潮是很正常的事情.
倒不是偏见,确实是在实践中发现的。当然,要用它做互联网应用也可以,但是“可以”不代表适合。如果你有什么成功案例,欢迎拿出来说说。
您可以说说您在实践中发现了它的哪些不足呢!?
我只用过seam2,seam3没有使用过,不做评论。
1. seam太复杂,学习困难,难以使用,不好招聘。网站大了,需要程序员多了,招个人都难
2. seam在运行时占用的内存太多,浪费硬件资源
3. seam里集成的richfaces什么的,生成的页面太大,很慢,不适合用来做互联网应用。如果不用的话,还要手写html,那还不如不用seam,有个freemarker,velocity或jsp什么的得了
4. seam服务端效率也低,看看它的那个生命周期图就知道了,显示一个表单,提交一个表单这么简单的事,它做出了那么多的事
5. seam不成熟,bug很多,经常出错。
不知道我说的这几点,你同不同意
1.这个我同意,但是关键还是要看您公司舍不舍得成本问题了
2.我想您指的应该是jboss as在运行时占用的内存吧!
3.我觉得web开发这块,前台确实是个挺恶心的东西,这东西大家都要面对的,你用或者不用rf,需求就在那里,不增不减.谁都没招
4.这点我觉着是这样的,首先jsf是事件驱动的,有它自己的生命周期,而seam是把ejb3.0或者是pojo直接绑定到jsf页面了,那么依照jsf的生命周期来说,它必然会在其生命周期过程中进行拦截.
5.seam我用的时候是2.0,没有发现经常出错,现今,它已经有了2.2.1final了.
我觉得整体来说,性能上不是seam的问题,而是因为它集成的东西较多,例如像hibernate或者jsf这类咱们没有用好而导致看上去seam性能很差的样子.
集成太多,但是又没有模块化,好让人选择集成哪些功能,就是一很大的问题。seam3好像是模块化了,但是受过伤之后已经不想再搞seam了。我们以后会逐步把所有seam应用全都替换掉。争论这种过去的东西已经没有多大意义了,它出来这么多年,就没有被多少人采用,本身就说明了这种技术真的是有问题的。
倒不是偏见,确实是在实践中发现的。当然,要用它做互联网应用也可以,但是“可以”不代表适合。如果你有什么成功案例,欢迎拿出来说说。
您可以说说您在实践中发现了它的哪些不足呢!?
我只用过seam2,seam3没有使用过,不做评论。
1. seam太复杂,学习困难,难以使用,不好招聘。网站大了,需要程序员多了,招个人都难
2. seam在运行时占用的内存太多,浪费硬件资源
3. seam里集成的richfaces什么的,生成的页面太大,很慢,不适合用来做互联网应用。如果不用的话,还要手写html,那还不如不用seam,有个freemarker,velocity或jsp什么的得了
4. seam服务端效率也低,看看它的那个生命周期图就知道了,显示一个表单,提交一个表单这么简单的事,它做出了那么多的事
5. seam不成熟,bug很多,经常出错。
不知道我说的这几点,你同不同意
1.这个我同意,但是关键还是要看您公司舍不舍得成本问题了
2.我想您指的应该是jboss as在运行时占用的内存吧!
3.我觉得web开发这块,前台确实是个挺恶心的东西,这东西大家都要面对的,你用或者不用rf,需求就在那里,不增不减.谁都没招
4.这点我觉着是这样的,首先jsf是事件驱动的,有它自己的生命周期,而seam是把ejb3.0或者是pojo直接绑定到jsf页面了,那么依照jsf的生命周期来说,它必然会在其生命周期过程中进行拦截.
5.seam我用的时候是2.0,没有发现经常出错,现今,它已经有了2.2.1final了.
我觉得整体来说,性能上不是seam的问题,而是因为它集成的东西较多,例如像hibernate或者jsf这类咱们没有用好而导致看上去seam性能很差的样子.
发表评论
-
Java 嵌套类(Nested Classes)
2011-09-06 00:08 212官方定义: A class defined within a ... -
Java Primitive Types
2011-08-24 13:10 1031Introduction Not everythi ... -
性能遭遇可伸缩性 多线程
2011-02-26 16:34 1065记住一句名言:出 ... -
并发编程的JAVA抽象
2011-02-26 11:14 932各种程序员都工作在各自的程序抽象维度,如果我们发现解 ... -
高级数据结构
2011-02-14 22:10 128关于高级数据结构的一个英文文档 -
Actor并发
2011-02-14 22:07 78基于Action并发模型相关英文文档 -
The Problem with Threads
2011-02-14 22:04 51线程存在的问题 -
Akka
2011-02-14 22:00 79Akka框架的PPT介绍 -
Software Transactional Memory
2011-02-14 21:57 43软件事务内存相关的英文文档 -
Abstract Queued Synchronizer
2011-02-14 21:55 48The java.util.concurrent Synchr ... -
Seam的事务管理
2011-02-12 20:16 1207分析Seam的事务管理之前 ... -
Java.util.concurrent 包
2011-02-11 12:49 237java.util.concurrent这个包是在jdk1.5 ... -
正则表达式
2011-02-11 00:32 675用一张图片来概括一下正则表达式的各个元素 例如锚点,量词,捕 ... -
JMM和Happen Before
2011-02-11 00:20 1097线程是操作系统的最小调度单位,也是执行单位,为了追求高性 ... -
借形解数
2011-02-10 23:51 280看到论坛上有一个余弦定理的威力的帖子,所以也有此感想,所以作一 ... -
各种排序算法之Java实现
2011-02-10 21:55 125排序算法有一个基本的 ... -
算法之数学
2011-02-10 21:33 622算法的分析是我们计算 ... -
再读数据结构教材的绪论
2011-02-10 12:45 149泡BBS,争论,纠结,顿悟,糊涂等,这些感受应该很多人都有过, ... -
类加载器
2011-02-09 20:49 857Java是程序设计语言 java也是一个shell命令,我们 ... -
Java Concurrency In Practice 小小笔记
2011-02-09 20:10 840可伸缩性:指的是一个应用程序在工作负载和可用处理资源 ...
相关推荐
- **第3章:Seam生命周期**:深入探讨 Seam 生命周期的概念及其对应用程序的影响。 - **第4章:组件和上下文**:讲解 Seam 中组件和上下文的基本概念,以及它们如何协作来实现业务逻辑。 - **第5章:Seam组件描述符*...
- **概念介绍**:Seam生命周期是指Seam组件从创建到销毁的过程。 - **重要性分析**:理解Seam的生命周期对于正确地实现组件的行为至关重要,例如在合适的时机执行特定逻辑或清理资源。 - **阶段划分**:主要包括...
- **第3章:Seam生命周期**(P83) - 解释Seam组件的生命周期模型。 - 分析组件在不同阶段的行为。 - **第4章:组件和上下文**(P130) - 探讨Seam中的组件是如何组织和管理的。 - 讲解上下文的概念及其在Seam...
- **Seam生命周期**:Seam定义了一套独特的生命周期模型,该模型基于组件和上下文的概念,使得开发人员能够更好地理解和控制应用程序的执行流程。 - **组件与上下文**:Seam中的组件是应用程序的基本构建单元,而上...
- **生命周期概念**:Seam 定义了一个清晰的应用程序生命周期,包括多个阶段,每个阶段都有特定的目的和操作。 - **关键阶段**:Seam 生命周期包括但不限于初始化、渲染、事件处理等阶段。通过理解这些阶段,...
Seam引入了一种声明式的会话管理机制,支持多种生命周期,如页面生命周期、对话生命周期等。这种机制可以帮助开发者更容易地管理Web应用的状态。 ##### 5. 使用注解配置而非XML Seam鼓励使用注解来进行配置,而...
- **组件生命周期管理**:Seam提供了丰富的组件生命周期管理机制,能够帮助开发者更好地控制组件的创建、销毁等过程。 - **面向业务的编程**:Seam强调以业务为中心进行开发,而非仅仅关注技术细节,有助于提高开发...
JSF是一种MVC(Model-View-Controller)框架,了解其组件模型和生命周期对于使用Seam至关重要。 3. **Java Persistence API (JPA)**:JPA是Java EE中的ORM(对象关系映射)标准,允许开发者用面向对象的方式操作...
Seam自动管理组件的生命周期,包括创建、初始化、销毁等过程。 2. **事件(Events)**: 事件模型是Seam的一大特色,允许组件之间通过发布和监听事件进行通信,增强了组件间的解耦合。 3. **注入(Injection)**: ...
其次,CDI是Java EE 6引入的一项服务,用于管理对象的生命周期和依赖关系。Seam充分利用了CDI,使得组件注入变得更加简单和灵活。压缩包中的`cdi-api.jar`和`weld-servlet.jar`等文件,代表了CDI的API和Weld实现,...
Seam 2.0引入了CDI,这是Java EE 6中的一个重要组成部分,它提供了一种统一的依赖注入机制,简化了对象的生命周期管理和依赖管理。 2.4 JPA集成 Seam 2.0与JPA的集成使得数据库操作变得更加简单,支持实体管理和...
Seam中的组件系统基于CDI(Contexts and Dependency Injection),这是一个Java EE规范,负责管理对象的生命周期和依赖注入。CDI允许开发者声明依赖关系,而无需手动创建和管理对象。通过注解,你可以告诉Seam何时、...
这是Seam启动的基础,监听器会在JSF的生命周期中插入Seam特有的行为,比如对话管理。Seam通过这个监听器能够增强JSF的各个阶段,并引入CONVERSATION生命周期,这是Seam的一个核心特性。 ```xml ...
CDI(Contexts and Dependency Injection)是Java EE 6引入的一项重要特性,用于管理对象的生命周期和依赖关系。Seam扩展了CDI,增加了更多的上下文和事件支持,使得组件之间的协作更加灵活。 除了上述核心功能,...
这包括设置`filter-class`为`org.jboss.seam.servlet.SeamFilter`,并配置`<listener>`来启动Seam的生命周期管理。 3. **数据库连接**:由于没有内置的EJB容器,你需要自己处理JNDI查找和数据库连接。这可能意味着...
5. **生命周期方法**:介绍了组件在不同阶段触发的回调方法,帮助开发者更好地控制组件的行为。 6. **条件安装**:允许根据特定条件决定是否安装某个组件。 7. **日志**:提供了Seam的日志记录机制,帮助开发者诊断...
- Seam引入了会话模型,支持对话(Conversation)的生命周期管理。 - Seam集成了一系列Java EE技术,包括EJB3、JSF、JPA等,实现了一个统一的应用栈。 2. JBoss Seam3特性: - Seam3的构建工具主要使用Maven。 ...