quinta-feira, 4 de novembro de 2010

@autowired + @webservice sem nullpointerexception

Opa,
Fato estranho esta acontecendo com um webservice que esta lançando um nullpointerexception
tando a classe Service como a clase WebService esta anotada e inicializava normal publicando o serviço,mas quando tentava usar (consumir) o serice que estava anotado com Autowired esta nulo,
ou seja, o spring não estava injetando.

Checado todas as anotações e verificado a ordem de inicialização do spring, percebi que a minha classe anotada com @webservice que não tinha interface nenhuma, tinha que ser percebida primeiro pelo spring so depois pelo CXF, entao como fazer isso?

segue o codigo:

<context:component-scan base-package="br.com.cri.service" />

<context:annotation-config/>

<context:component-scan base-package="br.com.cri.ws">
<context:include-filter type="annotation" expression="javax.jws.WebService" />
/context:component-scan>

import resource="classpath:META-INF/cxf/cxf.xml" />
import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

<jaxws:endpoint
id="matonWebServiceEndpoint"
implementor="#matonWebService"
address="/MatriculaOnLine" />



a classe Service é normal, so colocar o @Service

a classe WebService ficou assim:




@WebService
@SOAPBinding(style=Style.RPC, use=Use.LITERAL, parameterStyle=ParameterStyle.WRAPPED)
public class MatonWebService {

@Autowired
private MatriculaService matriculaService;


public Retorno atualizandoServentia(@WebParam(name = "serventia") String id,
@WebParam(name = "atualizando") boolean atualizando) {
return matriculaService.atualizandoServentia(id, atualizando, true);
}