Java 使用SpringWS的JAXB头安全性

Java 使用SpringWS的JAXB头安全性,java,spring,web-services,jaxb,spring-ws,Java,Spring,Web Services,Jaxb,Spring Ws,我试图用JAXB和SpringWS开发一个Web服务。 但我有一个问题。 我将wss安全性放在何处以及如何创建标头 这是我的实际代码: 上下文SPRING客户端 @Configuration public class MonsterWSClientContext { private static final String URL = "AAA"; private static final String TEST_URL = "TEST"; private sta

我试图用JAXB和SpringWS开发一个Web服务。 但我有一个问题。 我将wss安全性放在何处以及如何创建标头

这是我的实际代码:

上下文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));

     }
}
  • 我已经创建了作业对象
  • 但是我不明白我把我的证件放在哪里了

谢谢。

您必须使用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;

您好,但现在我在启动此应用程序时遇到另一个问题,创建home.LaunchCall中定义的名为“lookup”的bean时出错。LaunchCall:通过构造函数参数表示的未满足的依赖关系,索引0的类型为[MonsterWSClient]:没有[com.proximainformatica.client.MonsterWSClient]类型的合格bean为依赖项找到:至少需要1个符合此依赖项autowire候选项条件的bean。依赖项注释:{};嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:未找到依赖项类型为[MonsterWSClient]的合格bean:应为。。