Просто использование веб-службы на Java - PullRequest
35 голосов
/ 15 ноября 2008

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

Ответы [ 4 ]

23 голосов
/ 15 ноября 2008

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

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

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

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

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

JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setAddress("http://admin:password@localhost:8080/services/MyService");
factory.setServiceClass(ITest.class);
ITest client = (ITest) factory.create();
client.test();
22 голосов
/ 15 ноября 2008

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

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

8 голосов
/ 15 ноября 2008

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

1 голос
/ 15 ноября 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...