Passi nella creazione di un servizio web utilizzando Axis2 – Il codice client

Sto cercando di creare un servizio web, i miei strumenti di trading sono:

**

Axis2, Eclipse, Tomcat, Ant

**

Ho bisogno di creare un servizio web dal codice, cioè scrivere una class java di base che avrà i metodi da dichiarare nel WSDL. Quindi utilizzare java2WSDL.sh per creare il mio WSDL.

Quindi, questo approccio è corretto:

  1. Scrivi la mia class Java con la logica aziendale reale
package packageNamel; public class Hello{ public void World(String name) { SOP("Hello" + name); } } 
  1. Ora, quando passo questo Hello.java a java2WSDL.sh, questo mi darà il WSDL.
  2. Infine, scriverò il file services.xml e creerò Hello.aar con la seguente struttura dir:

    Hello.aar

    • nome del pacchetto
      • Ciao class
    • META-INF
      • services.xml
      • MANIFEST.MF
      • Hello.WSDL

Ora, presumo, il mio servizio verrà implementato quando inserirò l’aar in tomcat1 / webapps / axis2 / WEB-INF / services

Ma ecco che arriva il mio problema, COME FACCIO AD ACCEDERE AL METHOD World(String name) ??? !!, cioè non ho idea del codice client!

Per favore mi illumini di creare un servizio web di base e chiamare il metodo. I 3 passaggi sopra descritti potrebbero essere errati. È un wiki della comunità, sentiti libero di modificare.

Grazie

Suppongo che tu sia interessato solo ai clienti dei servizi web?

opzione 1

Richiama il servizio web sta utilizzando il supporto REST di Axis2, ad esempio:

http: // localhost: 8080 / axis2 / servizi / MyService / myOperation param1 = un & param2 = due

opzione 2

Usa SOAPUI . Può generare messaggi SOAP per te, leggendo il WSDL del tuo servizio. I tester dei miei clienti lo hanno utilizzato ampiamente solo con una comprensione molto ampia delle tecnologie dei servizi web. Uno strumento impressionante.

Opzione 3

Client Groovy (Stesso approccio per altre lingue basate su JVM)

Utilizzare lo strumento wsdl2java per creare una class stub client per il servizio Web 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() 

Utilizzare il parametro -cp per aggiungere il codice generato al classpath dello script

 groovy -cp build/build/classs GetSpeech 

Se si ha accesso a WSDL, è ansible utilizzare il seguente codice / client JAX-WS per richiamare qualsiasi servizio Web basato su 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)); } } 

Nella riga 2, il primo argomento QName è lo spazio dei nomi utilizzato in WSDL e il secondo argomento è semplicemente il nome del servizio.