La classe package package.jaxws.methodName est introuvable. Avez-vous exécuté APT pour les générer?

Problème

Dans le développement JAX-WS, lorsque le service suivant est déployé,

File: HelloWorld.java

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

    @WebMethod String getHelloWorldAsString();
}

File: HelloWorldImpl.java

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

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

}

Il frappe immédiatement le message d’erreur suivant?

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)
   //...

Solution

L’interface de point de terminaison de service n’est annotée avec aucun @ SOAPBinding , elle utilise donc le style de document par défaut pour le publier. Pour une lisibilité humaine, vous pouvez le réécrire comme suit:

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

    @WebMethod String getHelloWorldAsString();
}

Dans le style de document, vous devez utiliser l’outil “ wsgen ” pour générer tous les artefacts portables JAX-WS nécessaires (classes de mappage, schéma wsdl ou xsd) pour la publication de service.

Commande wsgen

La commande wsgen est requise pour lire la classe d’implémentation de noeud final de service:

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

Il génère deux classes pour une seule méthode getHelloWorldAsString () , sous le dossier package.jaxws .

  1. GetHelloWorldAsString.java

  2. GetHelloWorldAsStringResponse.java

Copiez ces classes dans le bon dossier. Dans ce cas, il s’agit de « com.mkyong.ws.jaxws ». Essayez de le publier à nouveau.

Référence

documentation de l’outil]

lien://tag/jax-ws/[jax-ws]lien://tag/web-services/[services web]