请注意例子中myservice.wsdl
需要先从http://localhost:8080/TestWS/myservice?wsdl
导出后放到src/wsdl
。
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
- 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.xmlpom.xml
Folder : Project root dir
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
<
project
xmlns
=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
<
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
>
<
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
>
<
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
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());
}
}
|
Note
If your webservice requires authentication , you can set that up as shown below
1
2
3
|
((BindingProvider) serv).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, userName);
((BindingProvider) serv).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, passWord);
|