Подтвердить что ты не робот

Простое использование веб-службы в Java

У меня очень простой веб-сервис SOAP, который мне нужно использовать с клиента Java. Каков самый простой способ выполнить это без использования сторонних библиотек? Требование состоит в том, что хост и порт считываются из web.xml перед каждым вызовом ws.

4b9b3361

Ответ 1

Я могу порекомендовать вам CXF-библиотеку. Используя его, у вас будет несколько вариантов вызова веб-сервисов:

  • Используйте динамический прокси для вызова (не нужно создавать Java-заглушки с помощью wsdl2java).

    DynamicClientFactory dcf = DynamicClientFactory.newInstance();
    Client client = dcf.createClient("http://admin:[email protected]:8080"+
                                     "/services/MyService?wsdl");
    Object[] a = client.invoke("test", "");
    System.out.println(a);
    
  • Использование Java-заглушки, сгенерированной из WSDL, с использованием wsdl2java.

  • Если ваш сервер был создан с использованием CXF, вы можете напрямую использовать код интерфейса (вместо использования wsdl2java в WSDL, который был создан из вашего интерфейса!)

Как для # 2, так и для # 3, следующий код иллюстрирует использование CXF:

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:[email protected]:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();

Ответ 2

В зависимости от версии JAVA, которую вы используете, в нее встроена часть JAX-WS. JDK 6 имеет стандартную реализацию Java JAX-WS, и вы можете просто использовать ее.

См. следующее:

Ответ 3

Если вы можете расслабиться от требований "нет сторонних библиотек", и у вас есть WSDL для веб-сервиса, Axis делает это очень просто. Просто скомпилируйте WSDL, используя wsdl2java, и вы можете использовать сгенерированные классы Java для использования веб-службы.

Ответ 4

Без использования каких-либо сторонних библиотек? Познакомьтесь с SOAP-стандартом очень хорошо и научитесь любить SAX.

Если вы не можете любить SAX, тогда ослабьте свое требование для сторонних разработчиков и используйте StAX (с woodstox).

Этот подход может быть "самым простым" (учитывая требование сторонних разработчиков), но я не думаю, что это будет легко.