Sorry, should have included that in my last post. It doesn't log the components. Using the '@Name' name works fine. It's as though the @Role annotation is being ignored. I've checked out the latest cvs version of seam.
I've had a look through the seam code it looks as though the only class that knows about roles in components is: org.jboss.seam.init.Initialization. It checks for the @Role/@Roles annotations in the compponents contained in the init context variable. When I run my example the init.getComponentClasses returns zero components. Later on in Initilization, there are another few lines that add components using a Scanner instance which does not appear to be aware of @Role/@Roles annotaions. My components are picked up here. Here is the block of code that contains the only references to the Role annotations that I could find. The body of the for loop does not get run as no component classes are returned. This is taken from org.jboss.seam.init.Initilization, line 165 onwards. | //TODO: move all this stuff into Init component? | for ( String className : init.getComponentClasses() ) | { | try | { | Class<Object> componentClass = Reflections.classForName(className); | addComponent( componentClass, context ); | if ( componentClass.isAnnotationPresent(Role.class) ) | { | | Role role = componentClass.getAnnotation(Role.class); | ScopeType scope = Seam.getComponentRoleScope(componentClass, role); | addComponent( role.name(), scope, componentClass, context ); | } | if ( componentClass.isAnnotationPresent(Roles.class) ) | { | Role[] roles =componentClass.getAnnotation(Roles.class).value(); | for (Role role: roles) | { | ScopeType scope = Seam.getComponentRoleScope(componentClass, role); | addComponent( role.name(), scope, componentClass, context ); | } | } | } | catch (ClassNotFoundException cnfe) | { | throw new IllegalArgumentException("Component class not found: " + className, cnfe); | } | } | Here is the scanner bit which appears to register components using only the @Name annotation. My component classes get picked up here, but their Role annotations are not looked at. This is taken from org.jboss.seam.init.Initilization, line 220 onwards. | if (isScannerEnabled) | { | for ( Class clazz: new Scanner().getClasses() ) | { | if ( clazz.isAnnotationPresent(Name.class) ) | { | addComponent(clazz, context); | } | } | } | I think I'm either doing something wrong which is stopping my components appearing in init.getComponentClasses() or I've found a bug. Relavent startup output: | 09:04:38,193 INFO [Scanner] scanning: /C:/Program Files/jboss-4.0.4RC1/server/default/tmp/deploy/tmp25621test.ear-contents/test.jar | 09:04:38,240 INFO [Component] Component: fooaction, scope: SESSION, type: STATELESS_SESSION_BEAN, class: uk.foo.FooAction, JNDI: test/FooAction/local | 09:04:38,271 INFO [Component] Component: test, scope: SESSION, type: JAVA_BEAN, class: uk.foo.TestBean | 09:04:38,286 INFO [Initialization] done initializing Seam | The full log: | 09:04:35,802 INFO [EARDeployer] Init J2EE application: file:/C:/Program Files/jboss-4.0.4RC1/server/default/deploy/test.ear | 09:04:36,755 INFO [Ejb3AnnotationHandler] found EJB3: ejbName=FooAction, class=uk.foo.FooAction, type=STATELESS | 09:04:36,818 FATAL [PersistenceXmlLoader] userDatabase JTA | 09:04:36,833 INFO [Ejb3Deployment] EJB3 deployment time took: 140 | 09:04:36,849 INFO [JmxKernelAbstraction] installing MBean: persistence.units:ear=test.ear.ear,jar=test.jar.jar,unitName=userDatabase with dependencies: | 09:04:36,849 INFO [JmxKernelAbstraction] jboss.jca:name=DefaultDS,service=ManagedConnectionFactory | 09:04:36,911 INFO [ConnectionProviderFactory] Initializing connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider | 09:04:36,927 INFO [InjectedDataSourceConnectionProvider] Using provided datasource | 09:04:36,927 INFO [SettingsFactory] RDBMS: HSQL Database Engine, version: 1.8.0 | 09:04:36,927 INFO [SettingsFactory] JDBC driver: HSQL Database Engine Driver, version: 1.8.0 | 09:04:36,927 INFO [Dialect] Using dialect: org.hibernate.dialect.HSQLDialect | 09:04:36,943 INFO [TransactionFactoryFactory] Using default transaction strategy (direct JDBC transactions) | 09:04:36,943 INFO [TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup | 09:04:36,943 INFO [TransactionManagerLookupFactory] instantiated TransactionManagerLookup | 09:04:36,943 INFO [SettingsFactory] Automatic flush during beforeCompletion(): enabled | 09:04:36,943 INFO [SettingsFactory] Automatic session close at end of transaction: disabled | 09:04:36,943 INFO [SettingsFactory] JDBC batch size: 15 | 09:04:36,943 INFO [SettingsFactory] JDBC batch updates for versioned data: disabled | 09:04:36,943 INFO [SettingsFactory] Scrollable result sets: enabled | 09:04:36,943 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled | 09:04:36,943 INFO [SettingsFactory] Connection release mode: after_statement | 09:04:36,943 INFO [SettingsFactory] Default batch fetch size: 1 | 09:04:36,943 INFO [SettingsFactory] Generate SQL with comments: disabled | 09:04:36,943 INFO [SettingsFactory] Order SQL updates by primary key: disabled | 09:04:36,943 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory | 09:04:36,943 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory | 09:04:36,943 INFO [SettingsFactory] Query language substitutions: {} | 09:04:36,943 INFO [SettingsFactory] Second-level cache: enabled | 09:04:36,943 INFO [SettingsFactory] Query cache: disabled | 09:04:36,943 INFO [SettingsFactory] Cache provider: org.hibernate.cache.HashtableCacheProvider | 09:04:36,943 INFO [SettingsFactory] Optimize cache for minimal puts: disabled | 09:04:36,943 INFO [SettingsFactory] Structured second-level cache entries: disabled | 09:04:36,943 INFO [SettingsFactory] Statistics: disabled | 09:04:36,943 INFO [SettingsFactory] Deleted entity synthetic identifier rollback: disabled | 09:04:36,943 INFO [SettingsFactory] Default entity-mode: pojo | 09:04:36,943 INFO [SessionFactoryImpl] building session factory | 09:04:36,943 INFO [SessionFactoryObjectFactory] Not binding factory to JNDI, no JNDI name configured | 09:04:36,943 INFO [SchemaExport] Running hbm2ddl schema export | 09:04:36,943 INFO [SchemaExport] exporting generated schema to database | 09:04:36,958 INFO [SchemaExport] schema export complete | 09:04:36,958 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} | 09:04:36,974 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:service=EJB3,ear=test.ear,jar=test.jar,name=FooAction with dependencies: | 09:04:37,224 INFO [EJB3Deployer] Deployed: file:/C:/Program Files/jboss-4.0.4RC1/server/default/tmp/deploy/tmp25621test.ear-contents/test.jar | 09:04:37,224 INFO [TomcatDeployer] deploy, ctxPath=/test, warUrl=.../tmp/deploy/tmp25621test.ear-contents/test-exp.war/ | 09:04:37,536 INFO [ServletContextListener] Welcome to Seam 1.0 beta 2 | 09:04:37,552 INFO [Initialization] reading properties from: /seam.properties | 09:04:37,568 INFO [Initialization] initializing Seam | 09:04:37,646 INFO [Component] Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init | 09:04:37,693 INFO [Component] Component: org.jboss.seam.core.pages, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Pages | 09:04:37,724 INFO [Component] Component: org.jboss.seam.core.manager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Manager | 09:04:37,771 INFO [Component] Component: switcher, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.Switcher | 09:04:37,818 INFO [Component] Component: conversation, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Conversation | 09:04:37,865 INFO [Component] Component: conversationList, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationList | 09:04:37,896 INFO [Component] Component: conversationStack, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationStack | 09:04:37,911 INFO [Component] Component: facesContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.FacesContext | 09:04:37,927 INFO [Component] Component: eventContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.EventContext | 09:04:37,943 INFO [Component] Component: sessionContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.SessionContext | 09:04:37,958 INFO [Component] Component: statelessContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.StatelessContext | 09:04:37,974 INFO [Component] Component: applicationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ApplicationContext | 09:04:37,990 INFO [Component] Component: conversationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationContext | 09:04:38,005 INFO [Component] Component: businessProcessContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.BusinessProcessContext | 09:04:38,036 INFO [Component] Component: resourceBundle, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ResourceBundle | 09:04:38,052 INFO [Component] Component: org.jboss.seam.debug.introspector, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.debug.Introspector | 09:04:38,146 INFO [ResourceBundle] resource bundle missing: messages | 09:04:38,161 INFO [Component] Component: org.jboss.seam.debug.contexts, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.debug.Contexts | 09:04:38,193 INFO [Scanner] scanning: /C:/Program Files/jboss-4.0.4RC1/server/default/tmp/deploy/tmp25621test.ear-contents/test.jar | 09:04:38,240 INFO [Component] Component: fooaction, scope: SESSION, type: STATELESS_SESSION_BEAN, class: uk.foo.FooAction, JNDI: test/FooAction/local | 09:04:38,271 INFO [Component] Component: test, scope: SESSION, type: JAVA_BEAN, class: uk.foo.TestBean | 09:04:38,286 INFO [Initialization] done initializing Seam | 09:04:38,286 INFO [FacesConfigurator] Reading standard config org/apache/myfaces/resource/standard-faces-config.xml | 09:04:38,599 INFO [FacesConfigurator] Reading config jar:file:/C:/Program Files/jboss-4.0.4RC1/server/default/tmp/deploy/tmp25569tomahawk.jar!/META-INF/faces-config.xml | 09:04:38,708 ERROR [LocaleUtils] Locale name null or empty, ignoring | 09:04:39,083 INFO [StartupServletContextListener] ServletContext 'C:\Program Files\jboss-4.0.4RC1\server\default\.\tmp\deploy\tmp25621test.ear-contents\test-exp.war\' initialized. | 09:04:39,193 INFO [EARDeployer] Started J2EE application: file:/C:/Program Files/jboss-4.0.4RC1/server/default/deploy/test.ear | | View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3927392#3927392 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3927392 ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user