एक वेब सेवा क्लाइंट अनुप्रयोग बनाना हमेशा (एक वेब सेवा प्रदाता के विकास के विपरीत) एक मौजूदा WSDL फ़ाइल के साथ शुरू होता है और, भले ही यह नहीं एक ही रास्ता है, मैं उपयोग करने के लिए सुझाव देंगे है wsimport
उपकरण (अन्य विकल्पों के लिए 5 Techniques for Creating Java Web Services from WSDL देखें लेकिन मैं उन्हें कवर नहीं करूंगा)।
तो, अपने ग्राहक परियोजना में, अपने pom.xml
के लिए निम्न स्निपेट शामिल:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<wsdlUrls>
<wsdlUrl>
http://localhost:8080/helloservice/HelloService?wsdl
</wsdlUrl>
</wsdlUrls>
<packageName>com.example.maven.jaxws.helloclient</packageName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<bulid>
jaxws-maven-plugin:wsimport
मोजो generate-sources
जीवन चक्र चरण के लिए डिफ़ॉल्ट रूप से बाध्य है तो चल generate-sources
के लिए किसी भी चरण पीछे jaxws:wsimport
ट्रिगर किया जाएगा लक्ष्य।
ध्यान दें कि यह वास्तव में एक न्यूनतम कॉन्फ़िगरेशन है। यदि आप अधिक जानकारी/नियंत्रण चाहते हैं, तो wsimport
mojo के दस्तावेज़ों की जांच करें।
उदाहरण के लिए, डबल्यूएसडीएल के लिए URL के बजाय फ़ाइलों का उपयोग करने के लिए (और किसी स्थान Maven सर्वोत्तम प्रथाओं के साथ अधिक आज्ञाकारी में जावा कोड उत्पन्न करने के लिए), उपयोग:
<configuration>
<sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
<wsdlDirectory>${basedir}/src/wsdl</wsdlDirectory>
<wsdlFiles>
<wsdlFile>foo.wsdl</wsdlFile>
<wsdlFile>bar.wsdl</wsdlFile>
</wsdlFiles>
...
</configuration>
अद्यतन: एक पूर्व आह्वान करने के लिए -configured ठूंठ (WSDL से endpoint पते का उपयोग कर), कोड है:
Hello port = new HelloService().getHelloPort();
String result = port.sayHello("Duke!");
आदेश, कि समाप्ति बिंदु जिसका पता एक डबल्यूएसडीएल में निर्दिष्ट से अलग है आह्वान नई endpoint यूआरएल और QName परिभाषित करने के लिए :
URL endpoint_new = new URL("NEW_ADDRESS_HERE");
QName qname = new QName("http://"+"ORIGINAL_PACKAGE", "SERVICENAME");
Hello port = new HelloService(endpoint_new, qname).getHelloPort();
जहां ORIGINAL_PACKAGE
पैकेज जहां सेवा में प्रकाशित है, SERVICENAME
सेवा हम की जरूरत है, उदाहरण के लिए, HelloService
के लिए का नाम है।
तो आप कहते हैं कि आपको पिछले रन से डब्लूएसडीएल की एक प्रति डाउनलोड करनी चाहिए। मेट्रो के लिए यह मुश्किल हो सकता है क्योंकि इसमें अतिरिक्त लुकअप शामिल हैं। –