[RESOLVIDO] Injetar componente Seam num webserver

Tenho um sistema já em utilização onde pretendo implementar um serviço por webservice para consulta de produtos. Coisa simple: o servico recebe o ID e retorna o nome do produto.

O problema é que nesse webservice o BO do produto para chamar o metodo buscaPorID (já usado em várias partes do sistema) e, ao tentar injetá-lo, ele vem nulo e nao estou achando maneira de fazer isso funcionar.

Aqui vai o Webservice:


@Stateless
@WebService()
public class ProdutoWebWS {

	@In(create=true)
	ProdutoWebBO produtoWebBO;
		
	@WebMethod()
	public String buscaNomeProduto(Long id) {
		
		if (id==null){
			return "ID do produto deve ser informado";
		}
		
		ProdutoWeb obj;
		
		try {
			
                        // NESTA LINHA RECEBO O NULLPOINTER EXCEPTION PORQUE O produtoWebBO está sendo injetado como null 
			obj = produtoWebBO.buscaPorId(id);
			
			if (obj==null){
				return "Não existe produto com o ID "+id;
			}

			return "Codigo: "+obj.getCodigoFabricante()+" "+obj.getNome();

		} catch (Exception e) {
			
			// TODO Auto-generated catch block
			e.printStackTrace();
			
			return "ERRO: ID "+id+" ==> "+e.getLocalizedMessage();
			
		}
		
	}
	
}

Meu BO, já citado acima, que resumi aqui, da classe ProdutoWeb já é utilizado em "n" partes do sistema, e pretendo utilizá-lo no webmethod é este:


@AutoCreate
@Name("produtoWebBO") 
@Scope(ScopeType.APPLICATION)
@Synchronized
public class ProdutoWebBO {

	public ProdutoWeb buscaPorId(Long idPesquisa) throws Exception {

		ProdutoWeb retorno = getEntityManager().createNamedQuery("produtoWeb.buscaPorId").setParameter("id", idPesquisa).getSingleResult;

		return retorno;

	}

}

Onde posso estar errando, amigos?

Agradeço qualquer ajuda.

Seguindo uma dica recebida por um colega (https://community.jboss.org/thread/190642) , achei a solução, que registro aqui.

O pulo do gato era o tal do Lifecycle. Tentei originalmente da forma que o post do cara lá falava (com o Seam.getComponentforname) mas me retornava uma msg esquisita. Então tentei com o component.getinstance a coisa andou.

Resolvi assim:


// pulo do gato 1
Lifecycle.beginCall();

// até havia tentado isso antes, mas tomava o tal do  "no context active"
ProdutoWebBO objBO = (ProdutoWebBO) Component.getInstance("produtoWebBO");

// pulo do gato 2
Lifecycle.endCall();

Abraço a todos