Этапы создания веб-службы с использованием Axis2 - клиентский код

Я пытаюсь создать веб-сервис, мои торговые инструменты:

**

Axis2, Eclipse, Tomcat, Муравей

**

Мне нужно создать веб-службу из кода, т.е. написать базовый класс java, в котором будут методы, которые будут объявлены в WSDL. Затем используйте java2WSDL.sh для создания моего WSDL.

Итак, правильный ли такой подход:

  1. Напишите мой класс Java с реальной бизнес-логикой
package packageNamel;

public class Hello{
public void World(String name)
          {
            SOP("Hello" + name);
          }
}
  1. Теперь, когда я передаю этот Hello.java в java2WSDL.sh, это даст мне WSDL.
  2. Наконец, я напишу файл services.xml и создам Hello.aar со следующей структурой каталога:

    Привет.aar

    • packageName
      • Hello.class
    • META-INF
      • services.xml
      • МАНИФЕСТ.MF
      • Привет.WSDL

Теперь я предполагаю, что моя служба будет развернута, когда я помещу aar в tomcat1 / webapps / axis2 / WEB-INF / services.

Но вот и моя проблема: КАК Я ДОСТУПАЮ К МЕТОДУ _2 _ ??? !!, т.е. я ничего не знаю о клиентском коде!

Расскажите мне, пожалуйста, о создании очень простой веб-службы и вызове метода. Описанные выше 3 шага могут быть неправильными. Это вики сообщества, не стесняйтесь редактировать.

Спасибо


person Community    schedule 01.04.2010    source источник


Ответы (2)


Я предполагаю, что вас интересуют только клиенты веб-служб?

Опция 1

Вызов веб-службы использует поддержку REST Axis2, например:

http://localhost:8080/axis2/services/MyService/myOperation?param1=one¶m2=two

Вариант 2

Используйте SOAPUI. Он может генерировать SOAP-сообщения для вас, читая WSDL вашей службы. Тестировщики моего клиента широко использовали его, имея лишь очень широкое представление о технологиях веб-сервисов. Впечатляющий инструмент.

Вариант 3

Groovy client (тот же подход для других языков на основе JVM)

Используйте инструмент wsdl2java, чтобы создать клиентский класс-заглушку для веб-службы 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()

Используйте параметр -cp, чтобы добавить сгенерированный код в путь к классам скрипта.

groovy -cp build/build/classes GetSpeech
person Community    schedule 01.04.2010

Если у вас есть доступ к WSDL, следующий код / ​​клиент JAX-WS может использоваться для вызова любой веб-службы на основе 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));

    }

}

В строке 2 QName первый аргумент - это пространство имен, используемое в WSDL, а второй аргумент - просто имя службы.

person Community    schedule 01.09.2015