Salut J'essaie de créer un service SOAP @endpoint, mais lorsque j'essaie d'obtenir le WSDL, j'obtiens une méthode 405 non autorisée.Spring-WS SOAP Endpoint 405 Méthode non autorisée
Il est mon point de terminaison de service:
@Endpoint
public class SubscribeMemberService {
public static final String NAMESPACE_URI = "urn:v1.webservice.subscription.test.org";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "subscribe")
@ResponsePayload
public SubscribeMemberResponse subscribe(@RequestPayload SubscribeMemberRequest request) throws SubscribeMemberFault_Exception {
LOG.info("request received: LastName:" + request.getName().getLastName());
SubscribeMemberResponse response = new SubscribeMemberResponse();
response.setInfoMessage("Subscription of " + request.getName().getLastName());
LOG.info("sending response:" + request.getName().getLastName());
return response;
}
}
Et il y a ma config WS:
@EnableWs
@Configuration
@ComponentScan("org.test")
public class WebServiceConfig extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true);
return new ServletRegistrationBean(servlet, "/ws/*");
}
@Bean(name = "subscribeMember")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema subscribeMember) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("subscribeMemberPort");
wsdl11Definition.setLocationUri("/ws");
wsdl11Definition.setTargetNamespace(SubscribeMemberService.NAMESPACE_URI);
wsdl11Definition.setSchema(subscribeMember);
return wsdl11Definition;
}
@Bean
public XsdSchema subscribeMemberSchema() {
return new SimpleXsdSchema(new ClassPathResource("META-INF/wsdl/subscribeMember.xsd"));
}
}
Serait-ce lien vers le WebSecurityConfigurerAdapter? Parce que sur le/ws/* je n'ai pas un 404 pas trouvé, mais je reçois 405 pas autorisé. Des idées?
Note: le filtre de sécurité dans la classe WebSecurityConfigurerAdapter est
protected void configure(HttpSecurity http) throws Exception {
http.httpBasic()
.and()
.authorizeRequests()
.anyRequest().hasRole("mySuperRole").and()
.csrf().disable();
}
Peut-être que j'ai trouvé la question « Obtenir un code d'erreur 405 (Méthode non autorisée) lors de l'accès à un service SOAP avec un navigateur (c'est-à-dire via un GET) est un comportement correct: tout l'accès HTTP SOAP est fait via un POST, pas un GET Vous pouvez essayer de pointer un client SOAP sur le WSDL (SoapUI par exemple), et voir si cela fonctionne au lieu." https://stackoverflow.com/questions/27198987/soap-webservice-endpoint-from-wsdl Je vais tester avec SoapUI – user1810567
Non ça ne fonctionne pas avec SOAP UI: "Erreur de chargement [http: // localhost: 8080/abonnement- webservice/v1/ws/SubscribeMemberService? wsdl]: org.apache.xmlbeans.XmlException: org.apache.xmlbeans.XmlException: erreur: fin inattendue du fichier après nul. " Et de toute façon le fichier wsdl devrait être accessible via GET. – user1810567