Étapes de la création D'un service Web en utilisant Axis2 - le code client

j'essaie de créer un service web, mes outils de commerce sont:

* *

Axis2, Eclipse, Tomcat, Ant

* *

je dois créer un service web à partir de Code, c'est-à-dire écrire une classe java de base qui aura les méthodes à déclarer dans la WSDL. Alors utilisez java2WSDL.sh pour créer ma WSDL.

alors, est-ce que cette approche est correcte:

  1. Écrire ma classe Java avec une réelle logique d'entreprise
package packageNamel;

public class Hello{
public void World(String name)
          {
            SOP("Hello" + name);
          }
}
  1. maintenant, quand je passe Ce Bonjour.java to java2WSDL.sh ça me donnera le WSDL.
  2. enfin, je vais écrire les services.fichier xml, et de créer le Bonjour.aar avec la structure dir suivante:

    Bonjour.aar

    • packageName
      • Bonjour.classe
    • META-INF
      • des services.xml
      • manifeste.MF
      • Bonjour.WSDL

maintenant, je suppose, mon service sera déployé quand je mets l'aar dans tomcat1 / webapps / axis2/WEB-INF / services

Mais, voici mon problème, comment accéder à la méthode World(String name) ???!!, c'est à dire que je suis paumé sur le code du client!

s'il vous Plaît m'éclairer sur une base de service web et l'appel de la méthode. Les trois étapes décrites ci-dessus peuvent être erronées. C'est un wiki communautaire, n'hésitez pas à éditer.

Merci

4
demandé sur zengr 2010-04-01 12:33:05

2 réponses

je suppose que vous êtes seulement intéressé par les clients du service web?

Option 1

invoquer le service Web utilise Axis2 REST support , par exemple:

http://localhost:8080/axis2/services/MyService/myOperation Je ne sais pas.param1 = un & param2=deux

Option 2

Use SOAPUI . Il peut générer des messages SOAP pour vous, en lisant le WSDL de votre service. Les testeurs de mon client l'utilisent beaucoup avec seulement une compréhension très large des technologies de service web. Un outil impressionnant.

Option 3

Groovy client (même approche pour les autres langues basées sur JVM)

utiliser le wsdl2java outil pour créer une classe de talon de client pour le service Web de Shakespeare:

generate.sh :

$AXIS2_HOME/bin/wsdl2java.sh -d adb -s -o build -uri http://www.xmlme.com/WSShakespeare.asmx?WSDL
ant -file build/build.xml 

GetSpeech.groovy :

// Dependencies
// ============
import com.xmlme.webservices.ShakespeareStub

@Grapes([
    @Grab(group='org.apache.axis2', module='axis2-kernel', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-adb', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-local', version='1.5.1'),
    @Grab(group='org.apache.axis2', module='axis2-transport-http', version='1.5.1'),
    @Grab(group='xerces', module='xercesImpl', version='2.6.2'),
    @GrabConfig(systemClassLoader=true)
])

// Main program
// ============
def stub = new ShakespeareStub()

// Request payload
def request = new ShakespeareStub.GetSpeech()
request.setRequest("Friends, romans, countrymen")

// Send request
response = stub.getSpeech(request)

println response.getGetSpeechResult()

utilisez le paramètre-cp pour ajouter le code généré classpath du script

groovy -cp build/build/classes GetSpeech
4
répondu Mark O'Connor 2010-04-02 07:14:32

si vous avez accès à la WSDL,le code suivant/ JAX-WS client peut être utilisé pour invoquer tout service web basé sur SOAP.

import java.net.URL;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

public class WebserviceClient {

    public static void main(String[] args) throws Exception {

        URL url = new URL
                ("http://localhost:9999/ws/additionService?wsdl");

        QName qname = new QName("http://test/", 
                "AdditionServiceImplService");//Line 2

        Service service = Service.create(url, qname);

        AdditionService additionService = service
                .getPort(AdditionService.class);

        System.out.println(additionService.add(1, 2));

    }

}

À la Ligne 2, QName premier argument est l'espace de noms utilisé dans WSDL et le deuxième argument est tout simplement le nom du service.

0
répondu siddhartha chakraborty 2015-09-01 19:03:38