Use Maven to Generate all Stubs using "wsimport" utility . After generating the webservice you can call the service using Java class. This method will can be easily reused , you just have to use different wsdl url every time you have to consume the webservice and modify the java code , it's light weight and no need to use any third party libraries . So you will need the following
First step is to copy the wsdl file and place it in the src/wsdl directory
Setup the pom.xml pom.xml
Folder : Project root dir
run "mvn generate-sources" command , this will generate the files in src/main/java folder . Its specified as <sourceDestDir>src/main/java</sourceDestDir> in pom.xml
Stubs are generated ,You can call the webservice with following Java program
Note
If your webservice requires authentication , you can set that up as shown below
- wsdl file
- pom.xml
- Java Class
First step is to copy the wsdl file and place it in the src/wsdl directory
Setup the pom.xml pom.xml
Folder : Project root dir
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myws.testconsumews</groupId>
<artifactId>TestWSConsume</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Test Webservice</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>generate-stubs</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlDirectory>src/wsdl</wsdlDirectory>
<wsdlFiles>
<wsdlFile>myservice.wsdl</wsdlFile>
</wsdlFiles>
<wsdlLocation>http://localhost:8080/TestWS/myservice?wsdl</wsdlLocation>
<sourceDestDir>src/main/java</sourceDestDir>
<packageName>com.myservice.proxy</packageName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
run "mvn generate-sources" command , this will generate the files in src/main/java folder . Its specified as <sourceDestDir>src/main/java</sourceDestDir> in pom.xml
Stubs are generated ,You can call the webservice with following Java program
package com.myservice.client;
import com.myservice.proxy.MyService;
import com.myservice.proxy.MyServiceService;
public class CallMyService {
public static void main(String[] args) {
MyServiceService mss = new MyServiceService();
MyService serv = mss.getMyServicePort();
System.out.println(serv.sayHello());
}
}
Now that was simple right . So what if you want to generate numerous webservice clients for testing and scripting needs you can simply reuse the pom.xml ( change the wsdl file ) , generate the stubs and change the program to call the new webservice .
Note
If your webservice requires authentication , you can set that up as shown below
((BindingProvider) serv).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, userName);
((BindingProvider) serv).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, passWord);
Cheers, hope that was helpful