RESOLVIDO: Probelama com @In Seam

13 respostas
A

Galera to começando com o seam agora, to pegando um projeto do meio q utiliza este framework…

Minha dúvida eh a seguinte:

Criei meu javabean, interface, implementação da interface, DAO, tudo com anotação @name blz…

aí qndo chego na tela e crio o meu bean utilizo uma instanci de uma implementação da minha interface no entanto da erro ao utilizar a tag @In no atributo do bean… Por alguma razão ele não cria a instancia e dá nullpointer.

segue a descrição do erro

8:22:43,587 SEVERE [viewhandler] Error Rendering View[/pages/negociacao/cotacaoEditarSubgrupo.xhtml] org.jboss.seam.InstantiationException: Could not instantiate Seam component: tipoCapitalCotizadorBean at org.jboss.seam.Component.newInstance(Component.java:2170) at org.jboss.seam.Component.getInstance(Component.java:2024) at org.jboss.seam.Component.getInstance(Component.java:1986) at org.jboss.seam.Component.getInstance(Component.java:1980) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50) at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:148) at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44) at org.jboss.el.parser.AstValue.getValue(AstValue.java:63) at org.jboss.el.parser.AstEqual.getValue(AstEqual.java:21) at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:390) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258) at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:168) at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:163) at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215) at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930) at javax.faces.render.Renderer.encodeChildren(Renderer.java:148) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:295) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:373) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:500) at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.NullPointerException at br.com.mapfre.vida.aplicacao.cotizador.TipoCapitalCotizadorBean.<init>(TipoCapitalCotizadorBean.java:34) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.jboss.seam.Component.instantiateJavaBean(Component.java:1441) at org.jboss.seam.Component.instantiate(Component.java:1362) at org.jboss.seam.Component.newInstance(Component.java:2148) ... 84 more 18:22:43,587 SEVERE [lifecycle] JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /pages/negociacao/cotacaoEditarSubgrupo.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@652226] 18:22:43,603 ERROR [MapfreExceptions] ------- Erro codigo: ERAPP012013020618224338085 ------- java.lang.NullPointerException at br.com.mapfre.vida.aplicacao.cotizador.TipoCapitalCotizadorBean.<init>(TipoCapitalCotizadorBean.java:34) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at java.lang.Class.newInstance0(Unknown Source) at java.lang.Class.newInstance(Unknown Source) at org.jboss.seam.Component.instantiateJavaBean(Component.java:1441) at org.jboss.seam.Component.instantiate(Component.java:1362) at org.jboss.seam.Component.newInstance(Component.java:2148) at org.jboss.seam.Component.getInstance(Component.java:2024) at org.jboss.seam.Component.getInstance(Component.java:1986) at org.jboss.seam.Component.getInstance(Component.java:1980) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55) at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50) at org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:148) at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:51) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44) at org.jboss.el.parser.AstValue.getValue(AstValue.java:63) at org.jboss.el.parser.AstEqual.getValue(AstEqual.java:21) at org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:390) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:271) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258) at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:168) at org.richfaces.renderkit.html.PanelBarRenderer.doEncodeChildren(PanelBarRenderer.java:163) at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at org.ajax4jsf.renderkit.RendererBase.renderChild(RendererBase.java:277) at org.ajax4jsf.renderkit.RendererBase.renderChildren(RendererBase.java:258) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:220) at org.richfaces.renderkit.html.PanelRenderer.doEncodeChildren(PanelRenderer.java:215) at org.ajax4jsf.renderkit.RendererBase.encodeChildren(RendererBase.java:120) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930) at javax.faces.render.Renderer.encodeChildren(Renderer.java:148) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:837) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73) at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178) at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:295) at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:373) at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:500) at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433) at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126) at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451) at java.lang.Thread.run(Unknown Source)

Alguém pode me ajudar… poq ele não ta criando a bendita instancia??

Desde já obrigado!!!

13 Respostas

R

Se tens certeza de que a configuração do projeto está correta para utilização do seam, algo parecido com o código a seguir deve funcionar.

@Name("classeB")
@Scope(ScopeType.CONVERSATION)
public class ClasseB  implements Serializable{ ... }

@Name("classeA")
@Scope(ScopeType.CONVERSATION)
public class ClasseA  implements Serializable{ 
	@In(create=true, value = "classeB")
	private ClasseB classeB;
	.
	.
	.
}

Caso não funcione, poste como está fazendo em suas classes.

A

Caro to exceto pelo atributo value o meu ta igualzinho, nao to colocando o value pois pelo que entendi quando não se coloca value o seam procura pelo nome da instancia certo? Como disse, peguei o projeto no meio entao tive que criar algumas coisas do zero seguindo o padrão do projeto, criei tudo me baseando na forma das classes e interfaces que já existiam... O engraçado que com o que ja existia as anotações funcionam com o que eu criei não funciona!

Segue um exemplo do que criei:

Javabean
@Entity
@Table( name = "smv_cotizador_cotacao" )
@Name( "cotacaoCotizador" )
@Scope( ScopeType.CONVERSATION )
public class CotacaoCotizador extends AbstractEntidade
{
	private static final long	        serialVersionUID	= 1L ;
	@Id
	@Column( name = "cd_cotacao", columnDefinition = "number(19)" )
	private long	                    cdCotacao ;
interface Local
@Local
public interface CotacaoCotizadorServiceLocal extends AbstractServiceInterface<CotacaoCotizador>
{
	
	String SERVICE_NAME = "cotacaoCotizadorService";
	
	
}]
A interface que essa interface que eu criei extend
public interface AbstractServiceInterface<T extends AbstractEntidade> {

	/**
	 * Método responsável por recuperar um objeto do tipo entidade.
	 * 
	 * @param id
	 *            String com id
	 * @return entidade
	 */
	T recuperarPorId(Long id);
Implementação da interface
@Name(CotacaoCotizadorServiceLocal.SERVICE_NAME)
@Stateless
public class CotacaoCotizadorService extends AbstractServiceImpl<CotacaoCotizador> implements 
CotacaoCotizadorServiceLocal 
{

	
	
}
A classe que minha implementação extend
public abstract class AbstractServiceImpl<T extends AbstractEntidade>
		implements AbstractServiceInterface<T> {

	private final Class<? extends AbstractEntidade> classePersistente;

	@In(create = true)
	private DaoFactoryLocal daoFactory;

	/**
	 * Construtor da classe abstrata de serviços.
	 */
	@SuppressWarnings("unchecked")
	public AbstractServiceImpl() {
		classePersistente = (Class<T>) ReflectionUtil.getParameterizedType(
				getClass()).getActualTypeArguments()[0];
	}

	/**
	 * {@inheritDoc}
	 */
	@SuppressWarnings("unchecked")
	protected final AbstractDao<T> getDao() {
		return daoFactory.getDAO(classePersistente);
	}

	/**
	 * {@inheritDoc}
	 */
	public final T recuperarPorId(Long id) {
		return getDao().recuperarPorId(id);
	}
O meu DAO
public class CotacaoCotizadorDao extends AbstractDao<CotacaoCotizador>
{
}
O dao que o dao meu extend
public abstract class AbstractDao<T extends AbstractEntidade> {

	private static final long serialVersionUID = 1L;

	private static final Integer QTD_ENTITY_PERSISTED_PER_FLUSH_CLEAR_ON_SAVE_LIST = 50;
	
	private static Map<String, String> mapaCacheNamedQuery = new HashMap<String, String>();

	//public static final Integer MAXRESULTS = 50;

	private EntityManager entityManager;

	private Class<T> persistenceClazz = null;

@SuppressWarnings("unchecked")
	public final T recuperarPorId(Long id) {
		return (T) DaoUtil.recuperarPorId(entityManager, getPersistenceClass(), id);
	}

Obrigado mais uma vez!!!!

R

Acredito que a entidade CotacaoCotizador não necessite ser mapeada com @Name e @Scope, pois ela estará no disponível no escopo do teu MB (acredito que seja a TipoCapitalCotizadorBean).
Você também pode adicionar o nome da interface no mapeamento do teu serviço:

@LocalBinding(jndiBinding = CotacaoCotizadorServiceLocal.SERVICE_NAME) @Name(CotacaoCotizadorServiceLocal.SERVICE_NAME) @Stateless public class CotacaoCotizadorService extends AbstractServiceImpl<CotacaoCotizador> implements CotacaoCotizadorServiceLocal { ... }

Pelo log, o erro ocorre ao criar o TipoCapitalCotizadorBean, como está esta classe?

A

meu bean na verdade mudou, mas o erro eh o mesmo, rsrs…

@Name( "assistenciaCotizadorBean" )
@Scope( ScopeType.EVENT )
public class AssistenciaCotizadorBean
{
	private List<Assistencia>	    assistencias ;
	private List<Assistencia>	    assistenciasSelecionadas ;
	@In( create = true, value = "assistenciaService" )
	private AssistenciaServiceLocal	assistenciaService ;

	public AssistenciaCotizadorBean( )
	{
		
		assistencias = assistenciaService.recuperarTodos( ) ; //AGORA O ERRO OCORRE NESTA LINHA, POIS ASSISTENCIASERVICE ESTÁ NULL, OU SEJA NÃO CRIOU INSTANCIA
		assistenciasSelecionadas = new ArrayList<Assistencia>( ) ;
	}

	public List<Assistencia> getAssistencias( )
	{
		return assistencias ;
	}

	public void setAssistencias( List<Assistencia> assistencias )
	{
		this.assistencias = assistencias ;
	}

	public List<Assistencia> getAssistenciasSelecionadas( )
	{
		return assistenciasSelecionadas ;
	}

	public void setAssistenciasSelecionadas(
	        List<Assistencia> assistenciasSelecionadas )
	{
		this.assistenciasSelecionadas = assistenciasSelecionadas ;
	}
}
A

Estranho poq nem fazendo assim ele funciona:

public AssistenciaCotizadorBean( ) { assistenciaService = (AssistenciaServiceLocal)Component .getInstance("assistenciaServie", true, true); assistencias = assistenciaService.recuperarTodos( ) ; assistenciasSelecionadas = new ArrayList<Assistencia>( ) ; }

E

Cara, se o erro continua o mesmo do primeiro post, posta o código da tua classe TipoCapitalCotizadorBean pra gente ver…
Pois segundo o log, o erro está nessa classe…

A

Então, mas essa classe agora está correta, pois não estou mais precisando do in poq mudei o mapeamento das telas…

Mas vou tentar reproduzir como ela estava…

@Name( "tipoCapitalCotizadorBean" )
@Scope( ScopeType.CONVERSATION )
public class TipoCapitalCotizadorBean
{
	private String	tipoCapital ;
	private boolean	fgMostraUniforme	 = false ;
	private boolean	fgMostraMultiplo	 = false ;
	private boolean	fgMostraBarraCapital = true ;
	private VersaoCadastralCotizador versaoCadastralCotizador;
        @In(create=true)
        private AssistenciaServiceLocal assistenciaService;
        private List<Assistencia> assistencias;
     
        public TipoCapitalCotizadorBean( )
	{
                assistencias = assistenciaService.recuperarTodos(); //NESSA LINHA QUE DAVA O ERRO, POQ O ASSISTENCIASERVICE ESTAVA NULO, OU SEJA, NÃO CRIOU A INSTANCIA
		versaoCadastralCotizador = new VersaoCadastralCotizador( );
		tipoCapital = new String( ) ;
	}

        //daki pra baixo era os gets e sets
E

Imagino que sua interface e a classe que implementa ela estejam mapeadas dessa forma:

@Local
public interface AssistenciaServiceLocal

@Stateless
@Name("assistenciaService")
public class assistenciaService implements AssistenciaServiceLocal

Uma dica pra ver os componentes criados pelo SEAM é visualizar a página de debug dele.
http://localhost:8080/nomeSistema/debug.seam

Ali na opção Application Context tu pode ver se o assistenciaService está registrado como um seam component.
Se tiver, ele deve ser injetado pelos beans.

Tu também pode colocar a anotação @AutoCreate no assistenciaService. A ideia é a mesma que o create = true, mas seria mais uma alternativa para testar.

abraços,

A

Exato, minha interface e a implementação estão exatamente dessa forma!!!

Olhei no application Context e tudo que eu criei está lá, services, beans, etc!!!

Vou tentar mapear dessa forma que você flw!!!

– Tentei com o mapeamento @autocreate e não rolou tmb!!! Poxa to ficando sem opções!!!

Obrigado pela resposta!

E

Acho que descobri seu problema cara…

Analisando melhor seu código, vi que você chama o teu assitenciaService dentro do construtor do seu Bean. Nesse caso, o Seam ainda não injetou o valor nos seus componentes (o construtor é executado antes das injeções).

Uma solução para o seu caso, pode ser anotar um método com o @Create ao invés de usar o construtor. Essa anotação vai ser executado quando o Seam instanciar esse componente (e já vai ter injetado todas suas dependências).

Abraços,

A

edubiss:
Acho que descobri seu problema cara…

Analisando melhor seu código, vi que você chama o teu assitenciaService dentro do construtor do seu Bean. Nesse caso, o Seam ainda não injetou o valor nos seus componentes (o construtor é executado antes das injeções).

Uma solução para o seu caso, pode ser anotar um método com o @Create ao invés de usar o construtor. Essa anotação vai ser executado quando o Seam instanciar esse componente (e já vai ter injetado todas suas dependências).

Abraços,

Cara meus parabéns!!! Já tava desistindo!!! hehehe

Funciounou perfeitamente!!! Agora só fiquei com duas dúvidas…

Antes, em algumas tentativas, eu tentei fazer a instancia na mão dentro do construtor, tipo

(AssistenciaService)Component.getInstance("assistenciaService", ScopeType.CONVERSATION, true, true);

E também não rolou! sabe se tem alguma causa especifica??? ou é pelo que voccê disse do seam não criar as instancias?

Outra coisa, depois que funcionou dessa forma que você falou eu criei o método e tentei chamá-lo dentro do construtor, mas não havia instancia do objeto mesmo!

Não entendi muito bem essa do @Create no método, poderia explicar melhor???

Mais uma vez muitissimo obrigado mesmo!! Já Me ajudou muito!!!

E

Sim, é a mesma ideia. Se o objeto injetado pelo @In não está instanciado, o getInstance() também não vai ter. Eles vão te retornar o mesmo componente.


Outra coisa, depois que funcionou dessa forma que você falou eu criei o método e tentei chamá-lo dentro do construtor, mas não havia instancia do objeto mesmo!

Sim, você fez a mesma coisa só que chamando um método de dentro do construtor.
O que tens que entender é que quando tu chama o Bean (de uma tela ou de outro bean dentro de uma conversação) o Seam vai criar esse Bean (se ele não estiver criado ainda) e vai executar o construtor do Bean primeiro e depois vai injetar os seam components (@In ou getInstance()). No caso, tu estava tentando acessar um atributo que não foi populado pelo Seam ainda.


Não entendi muito bem essa do @Create no método, poderia explicar melhor???

Dá uma olhada na documentação http://docs.jboss.org/seam/1.2.1.GA/reference/en/html/annotations.html
Mas basicamente, após o Seam criar o componente, ele vai chamar o método anotado com @Create. A vantagem que dai os atributos já vão estar injetados pelo Seam pois esse método é chamado após a criação do componente e não antes como é o caso do construtor da classe.

Abraços,

A

Entendi Cara!!! Bou ver aki então como vou fazer sem poder usar o construtor!!!

Mais uma vez o meu muito obrigado a você e a todos que responderam!!!

abraços!!!

Moderação pode trancar!!! Obrigado!

Criado 6 de fevereiro de 2013
Ultima resposta 8 de fev. de 2013
Respostas 13
Participantes 3