2016-05-31 9 views
1

im попытайтесь разработать веб-службы с JAXB и SpringWS. , но у меня вопрос. Где я устанавливаю свою wss-безопасность и как я создаю заголовок?Безопасность JAXB Header с Spring-WS

это мой реальный код:

КОНТЕКСТ SPRING КЛИЕНТ

@Configuration 
public class MonsterWSClientContext { 

    private static final String URL = "AAA"; 
    private static final String TEST_URL = "TEST"; 
    private static final String WS_URL = TEST_URL + "/soap/WSOfferService"; 

    @Bean 
    @Autowired 
    public MonsterWSClient monsterClient(Jaxb2Marshaller marshaller) { 
     MonsterWSClient client = new MonsterWSClient(); 
     client.setDefaultUri(WS_URL); 
     client.setMarshaller(marshaller); 
     client.setUnmarshaller(marshaller); 
     return client; 
    } 


    @Bean 
    public Jaxb2Marshaller marshaller() { 
     Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller(); 
     jaxb2Marshaller.setPackagesToScan(com.monster.schemas.monster.ObjectFactory.class.getPackage().getName(), 
       com.monster.schemas.monsterheader.ObjectFactory.class.getPackage().getName(), 
       com.monster.schemas.ObjectFactory.class.getPackage().getName(), 
       com.monster.webservices.monsterportal.ObjectFactory.class.getPackage().getName()); 
     return jaxb2Marshaller; 

    } 

} 

это клиент

public class MonsterWSClient extends WebServiceGatewaySupport { 


    public JobsResponse updateJob(Job request) { 

     return (JobsResponse) getWebServiceTemplate().marshalSendAndReceive(request, 
       new SoapActionCallback(getDefaultUri() + "/createOffer")); 
    } 
} 

и это главное:

public class Test { 
    public JobsResponse callMonster(String jobRefCode, String userName, 
    InformazioniAnnuncio datiAnnuncio) 
    { 
     MonsterWSClient client = new MonsterWSClient(); 
     JobsResponse response = new JobsResponse();  
     return response = client.updateJob(createJob(jobRefCode, userName, datiAnnuncio)); 

    } 
} 
  • Я создал объект Job.
  • но я не понимаю, куда я помещаю заголовок с моими учетными данными.

Спасибо.

+0

привет, но теперь у меня есть еще одна проблема, когда я запустить это приложение, ошибка создания бина с именем «поиска», определенной в home.LaunchCall: Неудовлетворенный зависимость выражается через аргумент конструктора с индексом 0 типа [MonsterWSClient]: нет подходящего компонента типа [com.proximainformatica.client.MonsterWSClient], найденного для зависимости: ожидается как минимум 1 компонент, который квалифицируется как кандидат autwire для этой зависимости. Аннотации зависимостей: {}; Вложенное исключение - это org.springframework.beans.factory.NoSuchBeanDefinitionException: никакой квалификационный компонент типа [MonsterWSClient] не найден для зависимости: ожидается .. – reve

ответ

2

Вам придется использовать весну-ws-security. Используйте эту ссылку spring ws security. На этой странице есть все параметры, связанные с безопасностью, и вам нужно будет настроить Wss4jSecurityInterceptor с вашим именем пользователя и паролем.

Нечто подобное

@Bean 
    public Wss4jSecurityInterceptor securityInterceptor() { 
    Wss4jSecurityInterceptor securityInterceptor = new Wss4jSecurityInterceptor(); 
    securityInterceptor.setSecurementActions("UsernameToken"); 
    securityInterceptor.setSecurementUsername({username}); 
    securityInterceptor.setSecurementPassword({password}); 
    securityInterceptor.setSecurementPasswordType("PasswordText"); 
    securityInterceptor.setSecurementUsernameTokenElements("Created"); 
    return securityInterceptor;