7

मैं अपने अंतिम वर्ष प्रोजेक्ट के हिस्से के रूप में जावा के लिए क्लाउड एंडपॉइंट्स फ्रेमवर्क (2.0.1) का उपयोग कर रहा हूं और रहा हूं अब तक इसके साथ अपेक्षाकृत सफल है। मेरे appspot.com डोमेन पर तैनाती करते समय मुझे कोई समस्या नहीं है, हालांकि, स्थानीय रूप से तैनाती करते समय मैं कुछ समस्याओं में भाग रहा हूं।com.google.api.config.ServiceConfigSupplier - सेवा के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन संस्करण लाने में विफल (केवल स्थानीयहोस्ट पर)

(निम्नलिखित कोड ब्लॉक में अपने-परियोजना-आईडी के लिए कोई संदर्भ हैं मेरे वास्तविक google क्लाउड प्रोजेक्ट आईडी के लिए उपनाम)

मैं एक एनोटेट @API वर्ग का एक मान्य openapi वर्णनकर्ता (openapi.json) है जो मैं "gcloud सेवा-प्रबंधन तैनाती openapi.json" का उपयोग कर क्लाउड एंडपॉइंट्स पर तैनात कर रहा हूं। आदेश रिटर्न सफलतापूर्वक:

Service Configuration [2017-02-23r0] uploaded for service [api.endpoints.<my-project-id>.cloud.goog] 

मैं तो मेरे app.yaml में सही endpoints_api_service को लौट config_id नक्शा

endpoints_api_service: 
    name: api.endpoints.<my-project-id>.cloud.goog 
    config_id: 2017-02-23r0 

इस सेवा का उपयोग कर "gcloud सेवा प्रबंधन gcloud CLI उपकरण के द्वारा सूचीबद्ध है सूची "

NAME               TITLE 
    storage-component.googleapis.com     Google Cloud Storage 
    api.endpoints.<my-project-id>.cloud.goog   api.endpoints.<my-project-id>.cloud.goog 
    etc... 

और" gcloud सेवा प्रबंधन कॉन्फ़िगरेशन सूची --service api.endpoints.my-project-id.cloud.goog "

CONFIG_ID  SERVICE_NAME 
2017-02-23r0  api.endpoints.<my-project-id>.cloud.goog 
... other version configs 

और मेरे appspot.com डोमेन पर पहुँचा जा सकता है (मैं endpoint फोन और सही जवाब प्राप्त कर सकते हैं)

मैं जावा के लिए Maven appengine प्लगइन (mvn का उपयोग कर स्थानीय होस्ट पर अपने प्रोजेक्ट को तैनात करने की कोशिश कर रहा हूँ ऐप्लिकेशन इंजन: devserver), लेकिन घाट स्टार्टअप पर मैं निम्न अपवादों के साथ मारा हूँ:

WARNING: Failed startup of context com.google.appengine.tools.development.DevAppEngineWebAppContext... 

com.google.api.config.ServiceConfigException: Failed to fetch default config version for service 'api.endpoints.<my-project-id>.cloud.goog'. No versions exist! 
at com.google.api.config.ServiceConfigSupplier.fetchLatestServiceVersion(ServiceConfigSupplier.java:155) 
.... 

तैनाती तो घाट शुरू करने की कोशिश, और कहा कि त्रुटि संदेश के साथ मारा जा रहा है, और पुन: प्रारंभ करने की एक अंतहीन चक्र में अटक जाती है आदि। स्थानीयहोस्ट तक पहुंचने के किसी भी प्रयास: 8080 परिणामस्वरूप ए "503: सेवा नहीं मिली" त्रुटि

मुझे लगता है कि मेरे ऐप की स्थानीय तैनाती सेवा कॉन्फ़िगरेशन तक पहुंचने में सक्षम होगी जो "gcloud सेवा-प्रबंधन तैनाती" का उपयोग करके तैनात की गई थी, वैसे ही appspot.com तैनाती कर सकते हैं, लेकिन क्या यह मामला नहीं है? ServiceConfigSupplier.getchLatestServiceVersion() के लिए स्रोत को देखकर मैं उस सेवा को इकट्ठा करता हूंमैंमेंट.services()। Configs()। List (my-service-name) .execute()। GetServiceConfigs() एक खाली सूची लौटा रहा है, लेकिन यह क्यों है केवल स्थानीय रूप से हो रहा है?

अतिरिक्त सूचना

मेरी ENDPOINTS_SERVICE_NAME वातावरण चर मैचों 'api.endpoints.my-project-id.cloud.goog'

मैंने देखा एक अद्यतन (1.0.2) नहीं था करने के लिए कॉम कुछ दिन पहले .google.api.config, और com.google.api.services.servicemanagement के पुराने संस्करण पर निर्भरता है (v1-rev14-1.22.0 पर निर्भर संस्करण नवीनतम संस्करण v1-rev340-1.22 है .0) मुझे संदेह है कि यह समस्या है, लेकिन मैंने सोचा कि मैं इसका उल्लेख करूंगा, क्योंकि इसमें अपवाद के लिए प्रासंगिक वर्ग शामिल हैं (ServiceManagement का उपयोग ServiceConfigSupplier द्वारा किया जाता है, जो थ्रो है अपवाद के कारण)। शायद वहां एक असंगतता है जहां वे सेवा कॉन्फ़िगरेशन की तलाश में हैं?

मैं काफी हद तक tbh हूँ, यह मेरे सिर पर थोड़ा सा है।मैं एंडपॉइंट्स को हटाने से नापसंद करता हूं, क्योंकि मुझे यह पसंद करना शुरू हो रहा है, लेकिन हम भी वास्तव में हमारे devserver का उपयोग खो नहीं सकते हैं। मुझे आशा है कि कोई इस मुद्दे पर थोड़ा सा प्रकाश डाल सकता है।

+1

आप इस समस्या को हल किया? मैं जावा का उपयोग कर रहा हूं और एक ही समस्या है। –

+0

हाय सैम होल्डन, क्या आप इस मुद्दे को हल करने में सक्षम थे? इससे संबंधित एक दस्तावेज़ हाल ही में अद्यतन किया गया था। https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java वहाँ भी यहाँ स्थित एक नमूना है: https://github.com/GoogleCloudPlatform/java-docs -साम/पेड़/मास्टर/एपेंगिन/एंडपॉइंट्स-फ्रेमवर्क-वी 2/बैकएंड मुझे बताएं! धन्यवाद। –

+0

@FrankNatividad मैं आपके लिंक में प्रदान किए गए क्विकस्टार्ट के बाद लगभग यह सटीक त्रुटि देख रहा हूं। – Benjamin

उत्तर

3

यदि आप सभी हालिया अपडेट खींच चुके हैं तो यह एक अनुमति समस्या से संबंधित हो सकता है। git pull इसके अलावा, जांचें कि आपका क्लाउड एसडीके उपयोग करके अद्यतित है: gcloud components update

मान लें कि आपने https://cloud.google.com/endpoints/docs/frameworks/java/quickstart-frameworks-java पर सूचीबद्ध निर्देशों का पालन किया है। इस समस्या को हल करने के लिए आप आवश्यक अनुमतियों के साथ एक सेवा खाता बना सकते हैं या gcloud auth application-default login कमांड का उपयोग कर सकते हैं।

आप https://cloud.google.com/sdk/docs/authorizing

पर सेटअप बादल एसडीके gcloud का उपयोग कर किसी सेवा खाते कर सकते हैं कृपया मुझे पता है अगर तुम अब और प्रश्न पूछना चाहते हैं करते हैं।

कमांड gcloud auth application-default login के लिए। मदद वर्णन के अनुसार: एक वेब प्रवाह के माध्यम से

प्राप्त उपयोगकर्ता एक्सेस क्रेडेंशियल और आवेदन डिफ़ॉल्ट साख के लिए प्रसिद्ध स्थान में उन्हें डालता है एक सेवा खाते के लिए एक प्रॉक्सी के रूप में उपयोग करने के लिए।

जब आप इस आदेश का उपयोग करते हैं तो यह आपके जीमेल खाते को gcloud के लिए प्रमाण-पत्र प्राप्त करता है। [email protected] और उसके बाद एप्लिकेशन क्रेडेंशियल्स रखने के लिए ज्ञात स्थान पर प्रमाण-पत्र संग्रहीत करता है।

+0

यह अंततः मेरे लिए काम करता है। मुझे इसे उठाने के लिए सेवा में पहला कर्ल भेजने की जरूरत है और यह पहले की तरह ही 503 प्रतिक्रिया वापस कर देगा। एक बार यह हो जाने पर (आपको लॉग में सामान की बाढ़ दिखाई देगी) यह काम करता है जैसा कि यह करना चाहिए। –

3

यह कोई फिक्स नहीं है लेकिन मैं https://stackoverflow.com/a/41493548/1410035 में सलाह का उपयोग करके समस्या के आसपास काम करने में सक्षम था।

अर्थात्

, बाहर टिप्पणी ServiceManagementConfigFilter:

ख) web.xml से ServiceManagementConfigFilter बाहर टिप्पणी, यानी,

<!-- 
    <filter> 
     <filter-name>endpoints-api-configuration</filter-name> 
     <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class> 
    </filter> 
--> 

<!--  
<filter-mapping> 
    <filter-name>endpoints-api-configuration</filter-name> 
    <servlet-name>EndpointsServlet</servlet-name> 
</filter-mapping> 
--> 

नोट आप filterऔर बाहर टिप्पणी करने के लिए है किfilter-mapping और वे फ़ाइल में एक दूसरे के बगल में सही नहीं हैं।

मुझे पता चला कि मुझे लिंक किए गए उत्तर में 'ए' बिंदु में वर्णित स्केलिंग ब्लॉक को हटाने की आवश्यकता नहीं है।

0

यह "gradle appengineRun" के साथ काम करता है लेकिन इंटेलिजे आइडिया प्रोजेक्ट पर मुझे web.xml और appengine-web.xml में सभी $ {endpoints.project.id} को इंटेलिजे से स्थानीयहोस्ट चलाने/डीबग करने के लिए प्रतिस्थापित करना था (आयात किया गया स्रोतों को क्रमबद्ध करें, Google क्लाउड टूल्स प्लगइन स्थापित करें और टूल/GoogleCloudTools/स्थानीय ऐप इंजन मानक dev सर्वर पर चलाएं/रन से डीबग कॉन्फ़िगरेशन सेट करें)।

मेरी त्रुटि थी: सेवा 'echo-api.endpoints। $ {Endpoints.project.id} .cloud.goog' के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन संस्करण लाने में विफल। कोई संस्करण मौजूद नहीं है!

cloud.google.com डॉक्स केवल Maven उदाहरण निर्माण Gradle निर्माण है github.com

0

मन में नंगा करने के लिए एक और बात आपके सेवा खाते सही अनुमति है है पर है, आपके सेवा खाते कुछ निम्नलिखित

[project ID]@appspot.gserviceaccount.com. 
की तरह लग रहा है

डिफ़ॉल्ट रूप से, यह प्रोजेक्ट (संपादक) है, कम से कम आपको इसे सेवा नियंत्रक भूमिका के रूप में प्रदान करने की आवश्यकता है।

यह चला गया है, तो आप these instructions पालन में वापस जोड़ने के लिए कर सकते हैं।

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