請注意例子中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); |