Как настроить клиент WS после генерации с использованием wsdl2java

Я использую Java для реализации клиента для веб-службы.NET. У меня есть несколько вопросов о правильной практике, а также о проблеме, для которой мне нужно решение.

  1. Я использую maven и плагин wsdl2java, в настоящее время он настроен на получение wsdl xml из URL-адреса веб-службы, хотя я видел, что в большинстве примеров используется локальная копия wsdl в исходном коде проекта. Есть ли предпочтения? Я также обнаружил, что вам нужно снова указать местоположение wsdl для создания экземпляра сгенерированного класса обслуживания, есть ли способ избежать этого?
  2. Как указать URL службы при создании экземпляра объекта службы? В настоящее время сгенерированный код автоматически использует URL, указанный в wsdl. Я хотел бы иметь возможность изменить адрес на основе переменных времени выполнения.
  3. Я хотел бы установить некоторую конфигурацию, например, для WS-ReliableMessaging, в значение true. Какова лучшая практика для этого?

Вот плагин в POM:

<plugin>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-codegen-plugin</artifactId>
  <version>${cxf.version}</version>
  <executions>
    <execution>
      <id>generate-sources</id>
      <phase>generate-sources</phase>
      <configuration>
        <sourceRoot>${basedir}/target/generated/src/main/java</sourceRoot>
        <wsdlOptions>
          <wsdlOption>
            <wsdl>http://ServerNameA/FooService.svc?wsdl</wsdl>
            <serviceName>FooService</serviceName>
          </wsdlOption>
        </wsdlOptions>
      </configuration>
      <goals>
        <goal>wsdl2java</goal>
      </goals>
    </execution>
  </executions>
</plugin>

И вот как я сейчас создаю экземпляр сервисного объекта:

FooService fooService = new FooService(new URL("http://ServerNameA/FooService.svc?wsdl"));
IFooService service = fooService.getWSHttpBindingIFooService();
service.getData(); // Calling one of the ports/service methods

0 ответов

Другие вопросы по тегам