При попытке запустить этот сценарий, чтобы обеспечить свои веб-сервисы на Grails/CXF клиента я получаюGrails + CXF + secureServiceFactory
"Невозможно вызвать метод getInInterceptors() на нулевой объект" на secureServiceFactory
ли secureServiceFactory нужно установить в другом месте?
Любые идеи:
Код:
class BootStrap {
def secureServiceFactory
def init = { servletContext ->
Map<String, Object> inProps = [:]
inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
inProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
Map<QName, Validator> validatorMap = new HashMap<QName, Validator>();
validatorMap.put(WSSecurityEngine.USERNAME_TOKEN, new UsernameTokenValidator() {
@Override
protected void verifyPlaintextPassword(org.apache.ws.security.message.token.UsernameToken usernameToken, org.apache.ws.security.handler.RequestData data)
throws org.apache.ws.security.WSSecurityException {
if(data.username == "wsuser" && usernameToken.password == "secret") {
println "username and password are correct!"
} else {
println "username and password are NOT correct..."
throw new WSSecurityException("user and/or password mismatch")
}
}
});
inProps.put(WSS4JInInterceptor.VALIDATOR_MAP, validatorMap);
secureServiceFactory.getInInterceptors().add(new WSS4JInInterceptor(inProps))
}
Возможно, вы захотите включить свои ресурсы.groovy или указать, какой плагин, по вашему мнению, дает вам инъекцию secureServiceFactory. – billjamesdev
Я просто следил за этим примером: http://www.christianoestreich.com/2012/04/grails-cxf-interceptor-injection/ Так что мои ресурсы.groovy по-прежнему пусты. – user2672286
Прочтите статью еще раз. Плагин cxf подключает сервисные фабрики, которые будут совпадать ** с названием вашей открытой службы, такой как 'secureService', с bean с именем' secureServiceFactory' **. У вас есть служба под названием «secureService»? – dmahapatro