Vra

Im probeer om uit te vind hoe om toegang Web Services in Java behulp van Axis.

Sover ek verstaan, Hier is wat ek nodig het om te doen:

  1. Gebruik WSDL Lêer + Axis gereedskap om Java-lêers te genereer.
  2. Stel en pakket gegenereer Java-lêers en dan vernietig die voorwerpe deur gebruik te maak van verbinding metodes op hierdie.

In 'n poging om dit te doen, hier is waar ek vas:

Ek pluk 'n ewekansige Web Service http://www.service-repository.com/ Ek gebruik die axistools-Maven-plugin op die volgende wyse:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>axistools-maven-plugin</artifactId>
            <configuration>
                <urls>
                    <!--<url>http://soap.amazon.com/schemas2/AmazonWebServices.wsdl</url>-->
                    <!--<url>http://ws.xwebservices.com/XWebEmailValidation/V2/XWebEmailValidation.wsdl</url>-->
                    <url>http://mathertel.de/AJAXEngine/S02_AJAXCoreSamples/OrteLookup.asmx?WSDL</url>
                </urls>
                <!--<sourceDirectory>${project.build.sourceDirectory}/wsdl</sourceDirectory>-->
                <packageSpace>com.company.wsdl</packageSpace>
                <testCases>true</testCases>
                <serverSide>true</serverSide>
                <subPackageByFileName>true</subPackageByFileName>
                <outputDirectory>${project.build.directory}/src/generated-sources</outputDirectory>
            </configuration>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>wsdl2java</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Hier is die probleem:

Ek kan suksesvol uit te voer MVN genereer-bronne en dit doen wek die Java-lêers. Maar ek kan nie lyk om hierdie Java-lêers op te stel. Toe ek MVN hardloop skoon te installeer dit gee my 'n klomp van die Stel foute. Wat stap mis ek?

Was dit nuttig?

Oplossing

Op grond van jou antwoord op een van my kommentaar, my voorstel sou wees om 'n JAX-WS implementering soos JAX-WS RI - wat ingesluit is in Java 6 - of Apache CXF (beide is IMO baie beter WS stapels as die verouderde as).

Hier is 'n voorbeeld wat gebaseer is op JAX-WS RI en sy jaxws-Maven-plugin :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.stackoverflow</groupId>
  <artifactId>Q3479139</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Q3479139</name>
  <url>http://maven.apache.org</url>
  <repositories>
    <repository>
      <id>maven2-repository.dev.java.net</id>
      <name>Java.net Repository for Maven 2</name>
      <url>http://download.java.net/maven/2</url>
    </repository>
  </repositories>
  <pluginRepositories>
    <pluginRepository>
      <id>maven2-repository.dev.java.net</id>
      <url>http://download.java.net/maven/2</url>
    </pluginRepository>
  </pluginRepositories>
  <dependencies>
    <dependency>
      <groupId>com.sun.xml.ws</groupId>
      <artifactId>jaxws-rt</artifactId>
      <version>2.2.1</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jaxws-maven-plugin</artifactId>
        <version>1.12</version>
        <executions>
          <execution>
            <goals>
              <goal>wsimport</goal>
            </goals>
            <configuration>
              <wsdlUrls>
                <wsdlUrl>http://ws.xwebservices.com/XWebEmailValidation/V2/XWebEmailValidation.wsdl</wsdlUrl>
              </wsdlUrls>
              <!-- The name of your generated source package -->
              <packageName>com.example.myschema</packageName>
              <!-- generate artifacts that run with JAX-WS 2.0 runtime -->
              <target>2.0</target>
              <!-- Specify where to place generated source files -->
              <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
            </configuration>
          </execution>
        </executions>
        <!-- if you want to use a specific version of JAX-WS, you can do so like this -->
        <dependencies>
          <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-tools</artifactId>
            <version>2.2.1</version>
          </dependency>
        </dependencies>
      </plugin>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

En hier is 'n baie basiese toetssaak (deel van die Maven projek) toon die aanroeping van die web diens gebruik te maak van die gegenereerde klasse:

package com.example.myschema;

import junit.framework.TestCase;

public class EmailValidationTest extends TestCase {

    XWebEmailValidationInterface service = new EmailValidation().getEmailValidation();
    ValidateEmailRequest request = new ValidateEmailRequest();
    ValidateEmailResponse response = null;

    public void testEmails() {
        request.setEmail("foo@bar.com");
        response = service.validateEmail(request);
        assertEquals("EMAIL_SERVER_NOT_FOUND", response.getStatus());

        request.setEmail("foo@gmail.com");
        response = service.validateEmail(request);
        assertEquals("NOT_VALID", response.getStatus());
    }
}
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top