2010-01-18 12 views
11

पर webservice प्रकाशित करने के लिए एंडपॉइंट का उपयोग करके मैं एक साधारण SOAP वेब सेवा बना रहा हूं। मैं यह सुनिश्चित करने के लिए हूं कि यह टॉमकैट वेब सेवा पर चलता है।जावा: टोमकैट सर्वर

im JAX-WS (देखें कोड) के साथ इस को लागू करने की कोशिश कर

मेरे सवाल यह है: Endpoint.publish इस होस्ट करती है या यह सर्वर की एक मिनी glassfish तरह है करने के लिए बिल्ला सर्वर का उपयोग करता है?

क्या मुझे UnicastRemoveObject या इसके बजाय कुछ समान विस्तारित किया जाना चाहिए?

आदर्श रूप से यह एक .WAR में पैक किया जा सकेगा और निर्देशिका में गिरा दिया जाएगा और बस काम करेगा।

ऐसा लगता है कि यह मेरे स्थापित टॉमकैट सर्वर के साथ काम नहीं करता है क्योंकि यह कहता है कि बंदरगाह पहले से ही उपयोग में है। मैं Ubuntu के कर्म का उपयोग कर रहा tomcat6 पैकेज स्थापित के साथ, यह भी हो सकता है मेरे उपयोगकर्ता does not को 8080

मैं उम्मीद है कि इस सवाल काफी स्पष्ट है

नमूना कोड पर चल बिल्ला को प्रकाशित करने के लिए अनुमतियाँ:

@WebService 
public class UserAttributes { 
    public static void main(String[] args) { 
     UserAttributes instance = new UserAttributes(); 
     Endpoint.publish("http://localhost:8082/WebServices/userattributes", 
      instance); 
    } 

    public string Hello() { 
     return "Hello World"; 
    } 
} 
+0

* जेडीके में * डिफ़ॉल्ट * जेएक्स-डब्ल्यूएस कार्यान्वयन न्यूनतम एनआईओ-आधारित वेब सर्वर का उपयोग करता है। –

+0

धन्यवाद! क्या पहले से चल रहे टॉमकैट सर्वर पर इसे लक्षित करने का कोई तरीका है? – Will

उत्तर

19

क्या Endpoint.publish यह होस्ट करने के लिए टॉमकैट सर्वर का उपयोग करता है या यह मिनी ग्लासफ़िश प्रकार का सर्वर है?

JAX-WS आरआई Endpoint.publish एपीआई डिफ़ॉल्ट रूप से उपयोग करता है एक हल्के वजन HTTP server implementation कि सूर्य की जावा SE 6 में शामिल है एक एम्बेडेड ग्लासफिश है और न ही एक एम्बेडेड बिलाव और भी कम अपने मौजूदा का उपयोग नहीं तो नहीं, यह करता है टॉमकैट इंस्टॉल: यह एम्बेडेड कंटेनर यानी एक ही जेवीएम के अंदर चल रहा कुछ उपयोग करता है। बस एफवाईआई, तब तक अन्य कार्यान्वयन को प्लग करना संभव है जब तक कि वे सेवा प्रदाता कार्यान्वयन (एसपीआई) प्रदान करते हैं। उदाहरण के लिए, जेटी 6 ऐसा करता है, J2se6HttpServerSPI देखें। लेकिन मैं यहां सभी विवरणों को कवर नहीं कर रहा हूं :)

ऐसा लगता है कि यह मेरे स्थापित टॉमकैट सर्वर के साथ काम नहीं कर रहा है क्योंकि यह कहता है कि बंदरगाह पहले से ही उपयोग में है।

जैसा कि मैंने ऊपर बताया है, Enpoint.publish एपीआई आपके मौजूदा टोमकैट इंस्टॉल का उपयोग नहीं करता है। यह अपने सर्वर का उपयोग करता है और आपको अपने ऐप को पैकेज और तैनात किए बिना अपनी वेब सेवा को तैनात करने की अनुमति देता है। यह विकास के दौरान विशेष रूप से उपयोगी होता है (क्योंकि यह चीजों को गति देता है)। असल में, यह बेहद आसान है।

अब, यदि आपके पास पोर्ट 8082 पर टॉमकैट सर्वर चल रहा है और यदि आप उसी पोर्ट का उपयोग करके अपना Endpoint प्रकाशित करने का प्रयास करते हैं, तो चीजें आपके द्वारा देखी गई काम नहीं करेंगे। विकास के दौरान एक अलग (और अप्रयुक्त) बंदरगाह का प्रयोग करें।

और यदि आप अपनी मौजूदा सेवाओं को अपने मौजूदा टोमकैट इंस्टॉल पर तैनात करना चाहते हैं, तो आपको उन्हें युद्ध में पैकेज करना होगा और टॉमकैट पर इस युद्ध को तैनात करना होगा। लेकिन यह पूरी तरह से अलग है और Endpoint.publish एपीआई का उपयोग करने के साथ कुछ भी नहीं है।

+0

अच्छी व्याख्या। – atiqkhaled

1

बहुत रोचक। ऐसा लगता है कि एम्बेडेड सर्वर में उस पोर्ट को भेजे गए साबुन संदेशों को संसाधित करने के लिए एक साबुन इंजन भी शामिल है।क्या यह एक एम्बेडेड साबुन इंजन भी है या यह लोकप्रिय साबुन इंजनों में से एक का उपयोग कर रहा है (अक्ष 2, सीएक्सएफ, मेट्रो)