Duvidas com Jboss Seam

16 respostas
L

Para utilizar o jboss Seam o meu managedBean tem sempre que ser um ejb? To acustumado a utilizar jsf onde tenho um managed bean e nele faco lookup para acessar os ejbs, tem como continuar trabalhando desta maneira ?
Achei meio estranho os exemplos que vi as paginas chamando metodos nos componetes seam que sao ejb’s, isso é correto?

16 Respostas

lazaropj

Eu sei q tem como fazer sem EJB, mas eu não lembro agora pois faz tempo q não uso o Seam.
Mas lá no curso da Caelum eles me ensinaram a não usar EJB para os MB

L

sera que alguem teria um exemplo de como montar esta estrutura, aki criei um ManagedBean da registrei ele no faces, e ainda utilizei a anotacao name do seam nele, tbm criei um metodo que retorna uma lista e anotei como @Factory porem ele nao carrega a lista na tabela na view, alguem tem um exemplo ai pra ajudar:

rock

Bom dia :!:

um componente Seam não precisa ser um EJB e também não deve ser registrado no faces-config.
Só a anotação @Name é suficiente (ou pode definir ele através do components.xml).

Sobre os exemplos, já olhou os que o próprio Seam disponibiliza? contei 34 exemplos no Seam 2.2.2 que tenho aqui.
Um ótimo livro é o ‘Seam in Action’ do Dan Allen.

Posta o Seam Component e a o página para ajudarmos.

L

Meu Mbean:

@Name("acaoMbean")
@Scope(ScopeType.PAGE)
public class AcaoMbean {

	@DataModel
	private List<Acao> acoes;

	
	private AcaoDaoEjbLocal acaoDao;

	public AcaoMbean() {
		try {
			acaoDao = ServiceLocator.getInstance().lookup("SeamProject-ear",
					AcaoDaoEjbLocal.class);
		} catch (EjbNotFoundException e) {
			e.printStackTrace();
		}	
	}

	@DataModelSelection
	@Out(required = false)
	public Acao selectedAcao;

	
	
	@Factory(autoCreate=true,value="acoes") 
	public void list() {
		acoes = getAcaoDao().listAll();
	}

A pagina xhtml ta assim:

<ui:define name="body">		
		<h:form id="AcaoEjbForm">
			<h:commandButton actionListener="#{acaoMbean.list}" value="Listar">
			</h:commandButton>

			<rich:panel>
				<f:facet name="header">acaoEjb</f:facet>

				<rich:dataTable id="tabela" value="#{acaoMbean.acoes}" var="item"
					align="center" rows="10" width="70%">
					<rich:column>
						<f:facet name="header">
							<h:panelGroup>
								<h:outputText value="Acao" />
							</h:panelGroup>
						</f:facet>
						<h:outputText value="#{item.acao}" />
					</rich:column>


					<rich:column>
						<f:facet name="header">
							<h:panelGroup>
								<h:outputText value="Detalhe" />
							</h:panelGroup>
						</f:facet>
						<h:outputText value="#{item.detalhe}" />
					</rich:column>


					<rich:column>
						<f:facet name="header">
							<h:panelGroup>
								<h:outputText value="Item (Lazy)" />
							</h:panelGroup>
						</f:facet>
						<h:outputText value="#{item.item.numeroItem}" />
					</rich:column>
				</rich:dataTable>

			</rich:panel>



		</h:form>

	</ui:define>

Tenho somente uma tabela e um botao listar nesta pagina, coloquei breakPoints e o construtor do AcaoMbean nunca é chamado, nao tenho declarado nada no faces , ele nao deveria criar o bean automaticamente? o @factory tbm nao deveria ser chamado e ja listar os dados automaticamente na tabela?
Obrigado pela ajuda.

L

qdo clico no botao listar ele da esta exception:
Caused by: javax.el.PropertyNotFoundException: /acaoEjb.xhtml @13,71 actionListener="#{acaoMbean.list}": Target Unreachable, identifier ‘acaoMbean’ resolved to null

rock
lgGodoy:
Meu Mbean:
@Name("acaoMbean")
@Scope(ScopeType.PAGE)
public class AcaoMbean {

	@DataModel
	private List<Acao> acoes;

	
	private AcaoDaoEjbLocal acaoDao;

	public AcaoMbean() {
		try {
			acaoDao = ServiceLocator.getInstance().lookup("SeamProject-ear",
					AcaoDaoEjbLocal.class);
		} catch (EjbNotFoundException e) {
			e.printStackTrace();
		}	
	}

	@DataModelSelection
	@Out(required = false)
	public Acao selectedAcao;

	
	
	@Factory(autoCreate=true,value="acoes") 
	public void list() {
		acoes = getAcaoDao().listAll();
	}
Para mim, seu Seam Component está ok. Vc está utilizando o segundo estilo de Factory que eu não estou acostumado, mas também está correto.
lgGodoy:
A pagina xhtml ta assim:
<ui:define name="body">		
		<h:form id="AcaoEjbForm">
			<h:commandButton actionListener="#{acaoMbean.list}" value="Listar">
			</h:commandButton>
...
Vc não precisa chamar o método da factory assim.

O bind da Factory está para 'acoes'. Na hora que vc chamar #{acoes}, o Seam irá primeiro procurar se já não existe o valor no escopo (perceba que ocorre um cache).
Se não existir (estiver null), a Factory irá chamar o seu método que popula o 'List acoes' e te retornará a lista acoes.

lgGodoy:
...
				<rich:dataTable id="tabela" value="#{acaoMbean.acoes}" var="item"
					align="center" rows="10" width="70%">
...
Aqui vc está chamando o método #{acaoMbean.acoes} que tem retorno void. Tente somente #{acoes} para usar a Factory e ter a lista como retorno.
lgGodoy:
Tenho somente uma tabela e um botao listar nesta pagina, coloquei breakPoints e o construtor do AcaoMbean nunca é chamado, nao tenho declarado nada no faces , ele nao deveria criar o bean automaticamente?
Quando vc inicia a aplicação, deve aparecer no log os componentes iniciados, inclusive o seu. Deve aparecer algo assim: 10:04:57,249 INFO [Component] Component: acaoMbean, scope: PAGE, type: JAVA_BEAN, class: pacote.AcaoMbean
lgGodoy:
o @factory tbm nao deveria ser chamado e ja listar os dados automaticamente na tabela?
Correto, vc nem precisará do botão listar pois a factory fará isso automaticamente. Só precisa ajustar a chamada.
lgGodoy:
Obrigado pela ajuda.
Por nada :!: :)
L

Fiz as adequacoes que vc ensinou acima, e notei que no log nao aparece meu componente acaoMBean veja:

10:15:03,323 INFO  [ServletContextListener] Welcome to Seam 2.2.2.Final
10:15:04,823 INFO  [Initialization] reading /WEB-INF/components.xml
10:15:04,885 INFO  [Initialization] reading properties from: /seam.properties
10:15:04,885 INFO  [Initialization] reading properties from: /jndi.properties
10:15:04,917 INFO  [Component] Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.isUserInRole
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.locale
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.userPrincipal
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.resourceLoader
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.locale
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.transaction.synchronizations
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.persistence.persistenceProvider
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.web.parameters
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.manager
10:15:04,948 INFO  [Initialization] two components with same name, higher precedence wins: org.jboss.seam.core.expressions
10:15:04,995 INFO  [Component] Component: authenticator, scope: EVENT, type: JAVA_BEAN, class: br.com.seam.ejb.Authenticator
10:15:05,323 INFO  [Component] Component: entityManager, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.ManagedPersistenceContext
10:15:05,323 INFO  [Component] Component: org.jboss.seam.async.asynchronousExceptionHandler, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.async.AsynchronousExceptionHandler
10:15:05,323 INFO  [Component] Component: org.jboss.seam.async.dispatcher, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.async.ThreadPoolDispatcher
10:15:05,323 INFO  [Component] Component: org.jboss.seam.captcha.captcha, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.captcha.Captcha
10:15:05,323 INFO  [Component] Component: org.jboss.seam.captcha.captchaImage, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.captcha.CaptchaImage
10:15:05,323 INFO  [Component] Component: org.jboss.seam.core.ConversationIdGenerator, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationIdGenerator
10:15:05,323 INFO  [Component] Component: org.jboss.seam.core.contexts, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Contexts
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.conversation, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Conversation
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.conversationEntries, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationEntries
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.conversationListFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationList
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.conversationPropagation, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationPropagation
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.conversationStackFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationStack
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.events, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Events
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.expressions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesExpressions
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.interpolator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Interpolator
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.locale, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.Locale
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.manager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesManager
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.resourceBundle, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.ResourceBundle
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.resourceLoader, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.ResourceLoader
10:15:05,338 INFO  [Component] Component: org.jboss.seam.core.validators, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Validators
10:15:05,338 INFO  [Component] Component: org.jboss.seam.debug.contexts, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.debug.Contexts
10:15:05,354 INFO  [Component] Component: org.jboss.seam.debug.introspector, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.debug.Introspector
10:15:05,354 INFO  [Component] Component: org.jboss.seam.debug.jsf.debugRedirect, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.debug.jsf.DebugRedirect
10:15:05,354 INFO  [Component] Component: org.jboss.seam.document.documentStore, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.document.DocumentStore
10:15:05,354 INFO  [Component] Component: org.jboss.seam.el.referenceCache, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.el.JBossELReferenceCache
10:15:05,354 INFO  [Component] Component: org.jboss.seam.excel.excelFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.excel.ExcelFactory
10:15:05,354 INFO  [Component] Component: org.jboss.seam.excel.exporter.excelExporter, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.excel.exporter.ExcelExporter
10:15:05,370 INFO  [Component] Component: org.jboss.seam.exception.exceptions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.exception.Exceptions
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.dataModels, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.DataModels
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.dateConverter, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.DateConverter
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.facesContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesContext
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.facesPage, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesPage
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.httpError, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.HttpError
10:15:05,370 INFO  [Component] Component: org.jboss.seam.faces.redirect, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.faces.Redirect
10:15:05,385 INFO  [Component] Component: org.jboss.seam.faces.renderer, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.FaceletsRenderer
10:15:05,385 INFO  [Component] Component: org.jboss.seam.faces.switcher, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.faces.Switcher
10:15:05,385 INFO  [Component] Component: org.jboss.seam.faces.uiComponent, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.UiComponent
10:15:05,385 INFO  [Component] Component: org.jboss.seam.faces.validation, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.faces.Validation
10:15:05,385 INFO  [Component] Component: org.jboss.seam.framework.currentDate, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDate
10:15:05,385 INFO  [Component] Component: org.jboss.seam.framework.currentDatetime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDatetime
10:15:05,385 INFO  [Component] Component: org.jboss.seam.framework.currentTime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentTime
10:15:05,385 INFO  [Component] Component: org.jboss.seam.graphicImage.image, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.Image
10:15:05,385 INFO  [Component] Component: org.jboss.seam.international.localeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.international.LocaleSelector
10:15:05,385 INFO  [Component] Component: org.jboss.seam.international.messagesFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.Messages
10:15:05,401 INFO  [Component] Component: org.jboss.seam.international.statusMessages, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.faces.FacesMessages
10:15:05,401 INFO  [Component] Component: org.jboss.seam.international.timeZone, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZone
10:15:05,401 INFO  [Component] Component: org.jboss.seam.international.timeZoneSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZoneSelector
10:15:05,401 INFO  [Component] Component: org.jboss.seam.international.timeZones, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.international.TimeZones
10:15:05,401 INFO  [Component] Component: org.jboss.seam.mail.mailSession, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.mail.MailSession
10:15:05,416 INFO  [Component] Component: org.jboss.seam.navigation.pages, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.navigation.Pages
10:15:05,416 INFO  [Component] Component: org.jboss.seam.navigation.safeActions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.navigation.SafeActions
10:15:05,416 INFO  [Component] Component: org.jboss.seam.persistence.persistenceContexts, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.persistence.PersistenceContexts
10:15:05,416 INFO  [Component] Component: org.jboss.seam.persistence.persistenceProvider, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.persistence.HibernatePersistenceProvider
10:15:05,416 INFO  [Component] Component: org.jboss.seam.remoting.gwt.gwtToSeamAdapter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.remoting.gwt.GWTToSeamAdapter
10:15:05,432 INFO  [Component] Component: org.jboss.seam.remoting.messaging.SubscriptionRegistry.userTokens, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.remoting.messaging.UserTokens
10:15:05,432 INFO  [Component] Component: org.jboss.seam.remoting.remoting, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.remoting.Remoting
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.configurationFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.security.Configuration
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.credentials, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.Credentials
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.entityPermissionChecker, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.EntityPermissionChecker
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.facesSecurityEvents, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.FacesSecurityEvents
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.identifierPolicy, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.IdentifierPolicy
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.identity, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.Identity
10:15:05,432 INFO  [Component] Component: org.jboss.seam.security.identityManager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.security.management.IdentityManager
10:15:05,448 INFO  [Component] Component: org.jboss.seam.security.management.roleAction, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.RoleAction
10:15:05,448 INFO  [Component] Component: org.jboss.seam.security.management.roleSearch, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.RoleSearch
10:15:05,448 INFO  [Component] Component: org.jboss.seam.security.management.userAction, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.UserAction
10:15:05,448 INFO  [Component] Component: org.jboss.seam.security.management.userSearch, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.management.action.UserSearch
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.passwordHash, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.security.management.PasswordHash
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.permission.permissionSearch, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.action.PermissionSearch
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.permissionManager, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PermissionManager
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.permissionMapper, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PermissionMapper
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.persistentPermissionResolver, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.PersistentPermissionResolver
10:15:05,463 INFO  [Component] Component: org.jboss.seam.security.rememberMe, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.RememberMe
10:15:05,479 INFO  [Component] Component: org.jboss.seam.security.ruleBasedPermissionResolver, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.permission.RuleBasedPermissionResolver
10:15:05,479 INFO  [Component] Component: org.jboss.seam.theme.themeFactory, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.theme.Theme
10:15:05,479 INFO  [Component] Component: org.jboss.seam.theme.themeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.theme.ThemeSelector
10:15:05,479 INFO  [Component] Component: org.jboss.seam.transaction.facesTransactionEvents, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.transaction.FacesTransactionEvents
10:15:05,479 INFO  [Component] Component: org.jboss.seam.transaction.synchronizations, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.transaction.SeSynchronizations
10:15:05,479 INFO  [Component] Component: org.jboss.seam.transaction.transaction, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.transaction.Transaction
10:15:05,479 INFO  [Component] Component: org.jboss.seam.ui.EntityConverter, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.ui.EntityConverter
10:15:05,479 INFO  [Component] Component: org.jboss.seam.ui.clientUidSelector, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.ui.ClientUidSelector
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.entityIdentifierStore, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.ui.EntityIdentifierStore
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.entityLoader, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.JpaEntityLoader
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.facelet.faceletCompiler, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.FaceletCompiler
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.facelet.facesContextFactory, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.RendererFacesContextFactory
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.facelet.mockHttpSession, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.HttpSessionManager
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.facelet.mockServletContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.ServletContextManager
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.graphicImage.graphicImageResource, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.GraphicImageResource
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.graphicImage.graphicImageStore, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.ui.graphicImage.GraphicImageStore
10:15:05,495 INFO  [Component] Component: org.jboss.seam.ui.resource.webResource, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.resource.WebResource
10:15:05,495 INFO  [Component] Component: org.jboss.seam.web.ajax4jsfFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.Ajax4jsfFilter
10:15:05,495 INFO  [Component] Component: org.jboss.seam.web.ajax4jsfFilterInstantiator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.filter.Ajax4jsfFilterInstantiator
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.exceptionFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.ExceptionFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.hotDeployFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.HotDeployFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.identityFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.IdentityFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.isUserInRole, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.IsUserInRole
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.loggingFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.LoggingFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.multipartFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.MultipartFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.parameters, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.faces.Parameters
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.redirectFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.RedirectFilter
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.servletContexts, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.web.ServletContexts
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.session, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.web.Session
10:15:05,510 INFO  [Component] Component: org.jboss.seam.web.userPrincipal, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.faces.UserPrincipal
10:15:05,510 INFO  [Component] Component: securityRules, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.drools.RuleBase
10:15:05,510 WARN  [PersistentPermissionResolver] no permission store available - please install a PermissionStore with the name 'org.jboss.seam.security.jpaPermissionStore' if persistent permissions are required.
10:15:05,557 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.hotDeployFilter
10:15:05,557 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.loggingFilter
10:15:05,557 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.ajax4jsfFilter
10:15:05,588 INFO  [CacheManager] Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
10:15:05,588 INFO  [LRUMapCacheFactory] Creating LRUMap cache instance using parameters: {org.jboss.jbossfaces.JSF_CONFIG_NAME=Mojarra-1.2, facelets.DEVELOPMENT=true, org.richfaces.SKIN=blueSky, com.sun.faces.injectionProvider=org.jboss.web.jsf.integration.injection.JBossInjectionProvider, javax.faces.DEFAULT_SUFFIX=.xhtml}
10:15:05,588 INFO  [LRUMapCacheFactory] Creating LRUMap cache instance of default capacity
10:15:05,604 INFO  [CacheManager] Selected [org.ajax4jsf.cache.LRUMapCacheFactory] cache factory
10:15:05,604 INFO  [LRUMapCacheFactory] Creating LRUMap cache instance using parameters: {org.jboss.jbossfaces.JSF_CONFIG_NAME=Mojarra-1.2, facelets.DEVELOPMENT=true, org.richfaces.SKIN=blueSky, com.sun.faces.injectionProvider=org.jboss.web.jsf.integration.injection.JBossInjectionProvider, javax.faces.DEFAULT_SUFFIX=.xhtml}
10:15:05,604 INFO  [LRUMapCacheFactory] Creating LRUMap cache instance of default capacity
10:15:05,604 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.redirectFilter
10:15:05,604 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.exceptionFilter
10:15:05,604 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.multipartFilter
10:15:05,604 INFO  [SeamFilter] Initializing filter: org.jboss.seam.web.identityFilter

Por que sera que ele nao esta subindo no log?

L

opa agora funcionou, tirei as anotacoes e coloquei direto no components.xml

<component auto-create="true" class="br.com.mbean.AcaoMbean"
  name="acaoMbean" scope="page"/>
L

exite alguma configuracao especifica para usar annotations no seam? gerei meu projeto com o jbossTools .

rock

Estranho ele não estar iniciando seu componente.
Também utilizo a versão 2.2.2.Final e não lembro de ter tido esse tipo de problema.

O Seam percorre as suas classes procurando as que possuem @Name

:idea: Estou vendo no meu projeto aqui, tenta criar um arquivo ‘seam.properties’ vazio no diretório raiz de suas classes.

L

Coloquei o arquivo properties no msm pacote do componente acaoMbean e msm assim nao funcionou, engracado que neste mesmo pacote tenho o componente que o jbossTools gerou automaticamente e este aparece no log:

10:47:48,743 INFO  [Component] Component: authenticator, scope: EVENT, type: JAVA_BEAN, class: br.com.seam.ejb.Authenticator

ja implementei Serializable , achei que podia ter algo a ver, agora ja nao sei mais o que pode ser os dois componentes estao com as anotacoes @Name dei uma vasculhada nos arquivos de config pra ver se tinha alguma referencia do componente Authenticator, e so encontrei isso no components,xml:

<security:identity authenticate-method="#{authenticator.authenticate}" remember-me="true"/>
 <event type="org.jboss.seam.security.notLoggedIn">
  <action execute="#{redirect.captureCurrentView}"/>
 </event>

Mas ele so esta declarado com @Name no bean msm, pq um funciona e outro nao?

rock

acho que não é no pacote, pelo menos aqui não tenho um em cada pacote, e sim no diretório raiz dos fontes…

tipo:
src/seam.properties
src/br/com/projeto/MeuSeamComponent.java

:arrow: fiz um teste removendo o seam.properties e meus componentes nao foram iniciados.

Deve ser isso.

L

è nao teve jeito msm, verifiquei que é um problema da versao do jboss que eu utilizo, ele nao permite injecao de depencias no
bean, que no meu caso nao é um ejb, sendo assim vou manter os beans declarados no components.xml.
Agora estou com outra duvida nao consigo injetar uma entityManager com a anotacao @In do Seam,
estou tentando assim:

//no components.xmls tenho isso:
<persistence:managed-persistence-context auto-create="true"
  name="entityManager"
  persistence-unit-jndi-name="java:/SeamProjectEntityManagerFactory"  />

//no persistence.xml tenho isso:
 <property name="jboss.entity.manager.factory.jndi.name" value="java:/SeamProjectEntityManagerFactory"/> 

//E no EJb tenho isso:
@In(value = "entityManager", create = true)
	public EntityManager getEntityManager() {		
		return entityManager;
	}

Ja tentei injetar no set , direto no atributo, porem nuca injeta, o que pode ser isso, quero que o seam controle a entityManager para evitar problemas com lazy exception?

L

Qdo utilizo :

Component.getInstance("entityManager");

Ele encontra a entityManager, pq será que pela anotacao @in ele nao consegue injetar este maldito?? Alguem tem uma ideia do que pode ser isso?

rock

lgGodoy:
è nao teve jeito msm, verifiquei que é um problema da versao do jboss que eu utilizo, ele nao permite injecao de depencias no
bean, que no meu caso nao é um ejb, sendo assim vou manter os beans declarados no components.xml.

qual versão do JBoss vc utiliza? já testei o @Name com JBoss 4.2, 5.0, 5.1, 6 e funcionou em todos…
tentasse com o seam.properties na raiz do diretório dos fontes ao invés de ser dentro do pacote como eu comentei no post anterior?

tenta assim:

@In private EntityManager entityManager;

ou

@In("#entityManager") private EntityManager entityManager;

L

Utilizo a 4.2.1, nesta versao nao consegui de maneira alguma anotar os MBeans, porem consegui injetar a entityManager, no meu ejb nao tinha colocada a anotacao @Name do seam , depois que coloquei consegui injetar a EntityManager com @In, no meu Mbean consigo ate injetar os ejbs com @In , so nao funciona anotar o Mbean com @Name.

Criado 9 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 16
Participantes 3