2012-11-27 11 views
9

के साथ तैनात एक जेएक्स-डब्ल्यूएस webservice डब्ल्यूएसडीएल से पता: मेरे पास एक डब्ल्यूएसडीएल से wsimport का उपयोग करके उत्पन्न एक webservice कार्यान्वयन है। यह सेवा एक स्प्रिंग वेबपैप में टॉमकैट सर्वर में तैनात है। जब मैं बिल्ला में इस webapp तैनात वसंत विन्यास फाइल (केवल वेब सेवा भाग) इसमैं स्वत: जेनरेटेड साबुन कैसे बदल सकता हूं: वसंत

<wss:binding url="/fooService"> 
    <wss:service> 
     <ws:service bean="#fooService"> 
    </wss:service> 
</wss:binding> 

की तरह है, मैं डबल्यूएसडीएल प्राप्त कर सकते हैं अगर मैं

http://localhost:8080/foo/fooService?wsdl 

और wsdl साबुन पर जाएँ: पता संपत्ति इस तरह है:

<service name="FooService"> 
    <port name="FooService" binding="tns:FooServiceBinding"> 
     <soap:address location="http://localhost:8080/foo/fooService"/> 
    </port> 
</service> 

और अभी के लिए, यह ठीक है।

समस्या यह है कि उत्पादन में, हमारे पास अपाचे वेब सर्वर है और यह सर्वर अनुरोधों को टॉमकैट पर रीडायरेक्ट करता है। यह भी काम करता है, लेकिन जब हमें डब्लूएसडीएल मिलता है, तो साबुन: पता अभी भी लोकलहोस्ट है: 8080 और हमें इसे webservice के लिए सार्वजनिक यूआरएल होने की आवश्यकता है।

कोई विचार?

बहुत बहुत धन्यवाद।

ऐसा लगता है कि JAX-WS इस संपत्ति स्वत: जनरेट करता:

+0

कृपया मुझे पता है कि अपने xml वसंत स्कीमा हेडर आदेश अपने कोड स्निपेट में बंदरगाह और साबुन के लिए बाध्यकारी ऊपर कस्टम endpoint पते रजिस्टर करने के लिए वसंत को पूरा करने के में थे दे सकते हैं और बंदरगाह। मैंने http://jax-ws.dev.java.net/spring/core, servlet, और स्थानीय-परिवहन की कोशिश की है लेकिन उनमें से कोई भी इनका संदर्भ नहीं देखता है। नतीजतन, मैं saxparserexceptions मिलता है। एक आसान जवाब नहीं मिल रहा है। किसी भी सहायता के लिए अग्रिम धन्यवाद। – arcseldon

+0

दोह! ठीक है, आप यहां wsdl फ़ाइल का संदर्भ दे रहे हैं। क्षमा करें, मैं कॉन्फ़िगरेशन में एंडपॉइंट पते को ओवरराइड करने का प्रयास कर रहा हूं। – arcseldon

उत्तर

8

ठीक है, मैं एक ही समाधान मिल गया है। मैंने पाया है कि अन्य webservice ढांचे के कार्यान्वयन, उपयोगकर्ता को संपत्ति में यूआरएल हार्डकोडिंग करके इसे बदलने की अनुमति देता है, लेकिन ऐसा लगता है कि जेएक्स-डब्ल्यूएस नहीं करता है। किसी को पता है कि कोई रास्ता है?

वैसे भी, मुझे एक वर्कअराउंड मिला है: टॉमकैट कनेक्टर कॉन्फ़िगरेशन में प्रॉक्सीनाम और प्रॉक्सीपोर्ट गुणों का उपयोग करके, आप प्रॉक्सी के पीछे टॉमकैट बता सकते हैं (हमारे मामले में, अपाचे सर्वर) और क्लाइंट के लिए "असली" पोर्ट 80 है।

इस परिवर्तन को करने से, स्वत: उत्पन्न साबुन: पते में सही मान होता है।

संदर्भ:

+0

कोई भी जानता है कि जंगली उड़ान में ऐसा कैसे करें? – Smalcat

+1

हमारा सर्वर भी लोडबैंसर के पीछे खड़ा था और मुझे http को https में बदलने में भी समस्याएं थीं। आखिरकार मैंने तीन मूल्यों 'योजना = "https" proxyName = "host.com" proxyPort = "443" 'को अपने सर्वर.एमएमएल को टोमकैट में जोड़कर हल किया। – Steve

+0

हे @Smalcat क्या आपको पता चला कि WildFly पर कैसे हल करें। यहां इसी तरह की समस्या का सामना करना पड़ रहा है। अगर आपने किया तो कृपया साझा करें। धन्यवाद! – Enoobong

संबंधित मुद्दे