У меня очень простой веб-сервис SOAP, который мне нужно использовать с клиента Java. Каков самый простой способ выполнить это без использования сторонних библиотек? Требование состоит в том, что хост и порт считываются из web.xml перед каждым вызовом ws.
Простое использование веб-службы в Java
Ответ 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, и вы можете просто использовать ее.
См. следующее:
-
Начало работы с веб-службами JAX-WS (учебник по использованию JDK-встроенного JAX-WS для развертывания и использования веб-сервис)
Ответ 3
Если вы можете расслабиться от требований "нет сторонних библиотек", и у вас есть WSDL для веб-сервиса, Axis делает это очень просто. Просто скомпилируйте WSDL, используя wsdl2java, и вы можете использовать сгенерированные классы Java для использования веб-службы.
Ответ 4
Без использования каких-либо сторонних библиотек? Познакомьтесь с SOAP-стандартом очень хорошо и научитесь любить SAX.
Если вы не можете любить SAX, тогда ослабьте свое требование для сторонних разработчиков и используйте StAX (с woodstox).
Этот подход может быть "самым простым" (учитывая требование сторонних разработчиков), но я не думаю, что это будет легко.