Шаги по созданию веб-сервиса с использованием Axis2 - код клиента - PullRequest
4 голосов
/ 01 апреля 2010

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

**

Axis2, Eclipse, Tomcat, Ant

**

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

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

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

public class Hello{
public void World(String name)
          {
            SOP("Hello" + name);
          }
}
Теперь, когда я передам этот Hello.java в java2WSDL.sh, это даст мне WSDL.

Наконец, я напишу файл services.xml и создаю Hello.aarсо следующей структурой dir:

Hello.aar

  • packageName
    • Hello.class
  • META-INF
    • services.xml
    • MANIFEST.MF
    • Hello.WSDL

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

Но, вот моя проблема, КАК Я ДОСТУП К МЕТОДУ World(String name) ??? !!то есть я ничего не понимаю о клиентском коде!

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 02 апреля 2010

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

Вариант 1

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

http://localhost:8080/axis2/services/MyService/myOperation?param1=one&param2=two

Вариант 2

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

Вариант 3

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

Используйте инструмент wsdl2java , чтобы создать класс-заглушку клиента для веб-службы Шекспира:

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 для добавления сгенерированного кода в classpath скрипта

groovy -cp build/build/classes GetSpeech
0 голосов
/ 01 сентября 2015

Если у вас есть доступ к 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, а второй аргумент - просто имя службы.

...