Как вызвать метод веб-службы с параметром? - PullRequest
0 голосов
/ 26 сентября 2019

Я должен вызвать веб-сервис для добавления нового пользователя.для этого я использовал WSDL2JAVA для генерации артефактов из WSDL

Мой интерфейс конечной точки имеет другую операцию, которую я могу вызвать:

 @WebMethod
    @WebResult(name = "addUserReturn", targetNamespace = "url", partName = "addUserReturn")
    public User addUser(
        @WebParam(partName = "addUserRequest", name = "addUserRequest", targetNamespace = "url")
        UserRequest addUserRequest
    );

и мой класс USER имеет это:

  public String getFirstName() {
        return firstName;
    }

    /**
     * Sets the value of the firstName property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setFirstName(String value) {
        this.firstName = value;
    }

    /**
     * Gets the value of the greeting property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getGreeting() {
        return greeting;
    }

эти классы были сгенерированы автоматически из WSDL, и я хочу реализовать этот интерфейс и вызывать метод ADD, но я не знаю как?с просьбой Спасибо ...

1 Ответ

0 голосов
/ 29 сентября 2019

Вы можете упаковать сгенерированные классы wsdl2java в виде файла jar, добавить его в путь к классам и затем инициировать класс @WebMethod для вызова службы.

См. Раздел «Кодирование клиента» в документации здесь

Я полагаю, вы могли бы сделать что-то подобное.

        UserServiceImplService serviceImpl = new UserServiceImplService();

        UserService service = serviceImpl.getUserServiceImplPort();

        UserRequest userRequest = new UserRequest();
        userRequest.setFirstName("Tom");
        userRequest.setLastName("Jerry");

        User user = service.addUser(userRequest);

здесьэто пример https://github.com/nkumarclm/jax-ws-example jaxws для вашей справки.

Кроме того, другой способ - использовать jaxws-maven-plugin в вашем pom.xml, чтобы вы могли сохранить wsdlскопируйте локально и сгенерируйте все необходимые артефакты.

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>web-services</id>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <configuration>
                        <wsdlDirectory>${basedir}/src/main/resources/wsdl/</wsdlDirectory> //location of your wsdl folder
                        <wsdlFiles>
                            <wsdlFile>user.wsdl</wsdlFile> //wsdl file name
                        </wsdlFiles>
                        <sourceDestDir>${basedir}/src/generated/java</sourceDestDir>
                        <verbose>true</verbose>
                    </configuration>
                </execution>
            </executions>
        </plugin>

, тогда вы можете просто автоматически связать класс @WebMethod и вызвать метод addUser.

...