2017-09-11 9 views
1

Apache CXF를 사용하여 비누 서비스를 만들고 있는데, @WebService를 만들었습니다. 이 서비스에서는 @Service를 주입해야합니다. @Autowire 해당 서비스 인스턴스가 null로 남아 있습니다.Spring + Apache CXF @Autowire 서비스에서 항상 null

는 엔드 포인트는 내 서비스를 삽입 할 수 어쨌든 거기

@Bean 
    public Endpoint endpointToken() { 
     EndpointImpl endpoint = new EndpointImpl(bus, new GenerateLoginToken()); 



     endpoint.publish("/Token"); 

     return endpoint; 
    } 

Serivce 클래스

@WebService(serviceName = "GenerateToken", portName = "TokenPort", 
    targetNamespace = "http://service.ws.samp", 
    endpointInterface = "com.web.sigel.ws.soap.webServices.GenerateToken") 
@Service("AuthService") 
public class GenerateLoginToken implements GenerateToken { 

    @Autowired 
    private AuthService authService; //this remains Null whenever i make a call. 



    @Override 
    @RequestWrapper(localName = "loginRequest", targetNamespace = "http://service.ws.samp", className = "com.web.sigel.ws.soap.security.LoginRequest") 
    public LoginResponse generateToken(LoginRequest loginRequest) { 
     LoginResponse loginResponse = new LoginResponse(); 
     String token = authService.createAuthToken(loginRequest); 

     loginResponse.setToken(token); 

     return loginResponse; 
    } 
} 

를 초기화. 당신이 당신의 엔드 포인트 콩에 GeneratingLoginToken의 새로운 인스턴스를 생성하기 때문에

+0

당신이 당신의 AuthService 클래스를 보여줄 수 있습니까? – Plog

+0

// @ Component 공용 클래스 AuthService { //// @Autowired private AuthenticationManager authenticationManager; // @ Autowired 개인 UserDetailsService userDetailsService; // @ Autowired 개인 TokenService generateToken; } –

답변

2

이 일어나고있다 :

EndpointImpl endpoint = new EndpointImpl(bus, new GenerateLoginToken()); 

이 그것이 봄 콩 자체가 아니므로 봄이 당신의 새로운 인스턴스에 대해 알고하지 않는 것을 의미한다. 대신 당신은 GenerateLoginToken를 autowire하기 정확하게 따라서 AuthService가 null 안 그것을 최대 유선 모든 콩이 있어야이 클래스의 스프링 빈 인스턴스를 사용해야합니다

@Autowire 
GenerateLoginToken generateLoginToken; 

@Bean 
public Endpoint endpointToken() { 
    EndpointImpl endpoint = new EndpointImpl(bus, generateLoginToken); 



    endpoint.publish("/Token"); 

    return endpoint; 
}