Die Wrapper-Klasse package.jaxws.methodName wurde nicht gefunden. Haben Sie APT ausgeführt, um sie zu generieren?

Problem

Wenn in der JAX-WS-Entwicklung der folgende Service-Endpunkt bereitgestellt wird,

Datei: HelloWorld.java

package com.mkyong.ws;//Service Endpoint Interface
@WebService
public interface HelloWorld{

    @WebMethod String getHelloWorldAsString();
}

Datei: HelloWorldImpl.java

 //Service Implementation
package com.mkyong.ws;
@WebService(endpointInterface = "com.mkyong.ws.HelloWorld")
public class HelloWorldImpl implements HelloWorld{

    @Override
    public String getHelloWorldAsString() {
       //...
    }

}

Es wird folgende Fehlermeldung sofort angezeigt?

Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException:
    runtime modeler error:

        Wrapper class com.mkyong.ws.jaxws.GetHelloWorldAsString is not found.
        Have you run APT to generate them?

    at com.sun.xml.internal.ws.model.RuntimeModeler.getClass(RuntimeModeler.java:256)
   //...

Lösung

Die Service-Endpunkt-Schnittstelle wird nicht mit @ SOAPBinding-Objekten kommentiert. Daher wird der Standard-Dokumentstil ** für die Veröffentlichung verwendet. Zur besseren Lesbarkeit können Sie es wie folgt umschreiben:

 //Service Endpoint Interface
@WebService
@SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL)
public interface HelloWorld{

    @WebMethod String getHelloWorldAsString();
}

Im Dokumentstil müssen Sie das Tool " wsgen " verwenden, um alle für JAX-WS tragbaren Artefakte (Zuordnungsklassen, WSDL- oder XSD-Schema) für die Serviceveröffentlichung zu generieren.

wsgen Befehl

Der Befehl wsgen ist erforderlich, um die Implementierungsklasse des Serviceendpunkts zu lesen:

wsgen -keep -cp . com.mkyong.ws.HelloWorldImpl

Es generiert zwei Klassen für eine einzelne Methode "getHelloWorldAsString ()" im Ordner package.jaxws .

  1. GetHelloWorldAsString.java

  2. GetHelloWorldAsStringResponse.java

Kopieren Sie diese Klassen in den korrekten Ordner. In diesem Fall heißt es " com.mkyong.ws.jaxws ". Versuchen Sie es erneut zu veröffentlichen.