2017-05-29 2 views
1

Ich mache meine ersten Schritte mit Spring Boot und erstellen einen SOAP-Webdienst.Fest mit Fehler "Kein Endpunkt-Mapping für SaajSoapMessage gefunden"

Nach dem Erstellen eines SOAP-Web-Service (https://spring.io/guides/gs/producing-web-service/) Tutorial, ich habe es geschafft, einen einfachen Web-Service zu erstellen, der funktionierte.

In diesem Beispiel versuche ich jetzt, einen Webdienst mit mehr als einer Operation zu erstellen. Dieses Mal habe ich eine WSDL verwendet, um alle JAXB-Klassen zu generieren. Alles wird korrekt generiert und ich kann den Webservice aufrufen und das WSDL als Ergebnis erhalten.

Ich habe dann verwendet SOAP UI Musteranfragen für meine Methoden auf dem zurück Wsdl zu generieren, aber wenn ich versuche, sie mir den Fehler auszuführen (Warnung tatsächlich):

10280 WARN --- [ nio-8080-exec-1] osws.server.EndpointNotFound: kein Endpunkt-Zuordnung für [SaajSoapMessage Ping gefunden]

Und ich habe in dieser für die letzten zwei Tage aufgeklebt. In der Annahme, dass das Problem in den Parametern meiner Endpunktmethode nicht übereinstimmen könnte, habe ich versucht, eine Operationg (Ping) zu erstellen, die eine einzelne Zeichenfolge empfängt, aber selbst diese fehlschlägt.

Ich verwende eine Konfigurator-Klasse und alle Beispiele, die ich finden konnte, verwenden Konfigurationsdateien (web.xml und die Servlet-Datei), und ich kann die Teile nicht zusammensetzen, um das zu beheben.

Dies ist meine Konfigurationsklasse (Ich habe die Einfuhr entfernt um Platz zu sparen):

package ws; 

@EnableWs 
@Configuration 
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, "/SVN/*"); 
} 


@Bean (name = "SVNClient") 
    public Wsdl11Definition defaultWsdl11Definition() { 
    SimpleWsdl11Definition wsdl11Definition = new SimpleWsdl11Definition(); 
    wsdl11Definition.setWsdl(new ClassPathResource("/wsdl/SVNClient.wsdl")); 

    return wsdl11Definition; 
    } 
} 

Und das ist die Klasse, wo ich meine Endpunkte haben (ich die Importe entfernt haben um Platz zu sparen):

package ws; 

@Endpoint 
public class WebServiceEndPoint { 
private static final String NAMESPACE_URI = "http://gestion.svn.client"; 

@Autowired 
public WebServiceEndPoint() { 
    System.out.println("Entramos en WebServiceEndPoint"); 
} 

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "Ping") 
public @ResponsePayload PingResponse ping() { 
    PingResponse resposta = new PingResponse(); 
    resposta.setOut("I'm in"); 
    return resposta; 
} 

@PayloadRoot(namespace = NAMESPACE_URI, localPart = "getLog") 
public @ResponsePayload GetLogResponse getLog(@RequestPayload InputParameters wsPayload) { 
    GetLogResponse response = new GetLogResponse(); 

    response.setCODERROR("0"); 
    response.setMENSAJEERROR("I'm in"); 

    return response; 
} 

Mein Zweifel ist:

Sind die @Endpoint und @PayloadRoot Anmerkungen genug, um die Endpunkte zu den Web-Service-Operationen abzubilden? Ich meine:

  • Gibt es etwas über die Methoden oder Parameter deklaracion, die sie nicht übereinstimmen mit der Web-Service-Definition?
  • Oder brauche ich noch eine Konfigurationsdatei (web.xml, Servlets oder etwas anderes), um diese Zuordnung durchzuführen?

Antwort

0

Nach dem Wiederaufbau der WSDL begann es zu arbeiten. Ich denke, etwas stimmte nicht und es stimmte nicht mit meiner Endpunktdefinition überein.

Verwandte Themen