Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
ResourceDoesNotExist
Hata Mesajı
API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtımı şu hata mesajıyla başarısız oluyor:
Error Deploying Revision <var>revision_number</var> to <var>environment</var>
Resource with name <var>ResourceURL</var> and type java does not exist.
Örnek hata mesajı
Error Deploying Revision 1 to test
Resource with name myresource.jar and type java does not exist.
Örnek hata ekran görüntüsü

Neden
JavaCallout politikasındaki <ResourceURL> öğesinde belirtilen kaynak API proxy'si, ortam veya kuruluş düzeyinde yoksa API proxy'sinin dağıtımı başarısız olur.
Teşhis
Ortamı ve kaynak adını belirleyin. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada ortam
test, <ResourceURL>öğesinde kullanılan kaynak adı isemyresource.jar'dir.Error Deploying Revision 1 to test Resource with name myresource.jar and type java does not exist.Yukarıdaki 1. adımda tanımlanan kaynağı kullanan JavaCallout politikasını belirleyin.
Örneğin, aşağıdaki politika <
ResourceURL>değerinimyresource.jarolarak belirtir. Bu değer, hata mesajındaki değerle eşleşir:<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <JavaCallout name="hello-java"> <ClassName>com.apigeesample.HelloJava</ClassName> <ResourceURL>java://myresource.jar</ResourceURL> </JavaCallout>Kaynağın, başarısız olan API proxy'sinin bir parçası olup olmadığını veya ortam ya da kuruluş düzeyinde yüklenip yüklenmediğini belirleyin. Bu durumda hatanın nedeni budur.
API proxy düzeyinde yüklenen tüm kaynakları görüntülemek için API proxy düzenleyicinin Gezinme bölmesindeki Kaynaklar sekmesine gidin. Bu örnekte, API proxy'sine yüklenen kaynak yok.

Kaynaklar, ortam veya kuruluş düzeyinde kullanılabilir. Daha fazla bilgi için Kaynak dosyaları konusuna bakın.
Kaynağın ortam düzeyinde olup olmadığını belirlemek için curl kullanarak aşağıdaki API çağrısını yapın:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Kaynağın kuruluş düzeyinde olup olmadığını belirlemek için ortam ayrıntılarını atlayarak curl kullanarak aşağıdaki API çağrısını yapın:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"
Bu API'ler için yanıt olarak 404 durum kodu alırsanız kaynak hem kuruluş hem de ortam düzeyinde eksik demektir.
Kaynak API proxy'si, kuruluş ve ortam düzeyinde kullanılamıyorsa dağıtım hatası döndürülür:
Resource with name myresource.jar and type java does not exist. ```
Çözünürlük
<ResourceURL> öğesinde belirtilen kaynağın API proxy'si, ortam veya kuruluş düzeyinde mevcut olduğundan emin olun. Daha fazla bilgi için Kaynak dosyaları konusuna bakın.
Yukarıda gösterilen JavaCallout örneğindeki hatayı düzeltmek için JAR dosyasını uygun düzeyde (API proxy'si, kuruluş veya ortam düzeyi) yükleyin.
NoResourceForURL
Hata Mesajı
API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtımı şu hata mesajıyla başarısız oluyor:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL <var>ResourceURL</var>
Örnek hata mesajı
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jar
Örnek hata ekran görüntüsü

Neden
Kaynak dosyası API proxy'si, ortam veya kuruluş düzeyinde mevcut gibi görünse de bozulmuş ya da kısmen yüklenmişse bu hata oluşabilir.
Teşhis
Ortamı ve kaynak adını belirleyin. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada ortam adı
test, <ResourceURL>öğesinde kullanılan kaynak adı isemyresource.jar'dir.Error in deployment for environment test The revision is deployed, but traffic cannot flow. Could not locate a resource with URL java://myresource.jarKaynağın API proxy'si, ortam veya kuruluş düzeyinde yüklendiğinden emin olun. Aşağıdaki örnekte,
myresource.jarkaynağının API proxy düzeyinde yüklendiğini görebilirsiniz.
Kaynaklar, ortam veya kuruluş düzeyinde kullanılabilir. Daha fazla bilgi için Kaynak dosyaları konusuna bakın.
Kaynağın ortam düzeyinde olup olmadığını belirlemek için curl kullanarak aşağıdaki API çağrısını yapın:
curl -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Kaynağın kuruluş düzeyinde olup olmadığını belirlemek için ortam ayrıntılarını atlayarak curl kullanarak aşağıdaki API çağrısını yapın:
curl -v -u email "https://api.enterprise.apigee.com/v1/organizations/myorg/resourcefiles/java/myresource.jar"Bu API'ler için yanıt olarak 404 durum kodu alırsanız kaynak hem kuruluş hem de ortam düzeyinde eksik demektir.
Çözünürlük
- Kaynağın API proxy'si, kuruluş veya ortam düzeyinde bulunduğunu belirlerseniz kaynağı silin ve 2. adımda açıklandığı gibi yeniden yükleyin. Kodu nasıl uygulayacağınızı öğrenmek istemiyorsanız 3. adıma geçin.
Kaynağı API proxy düzeyinde silmek için API proxy düzenleyicisinin Gezinme bölmesindeki Kaynaklar sekmesine gidin ve aşağıda gösterildiği gibi kaynağın yanındaki "X" düğmesini tıklayın.

Kaynağı ortam veya kuruluş düzeyinde silmek için, daha önce teşhis adımlarında kullanılan API çağrılarında DELETE fiilini kullanın. Örneğin, ortam düzeyindeki kaynağı silmek için aşağıdaki komutu girin:
curl -X DELETE -v -u <strong>email </strong>"https://api.enterprise.apigee.com/v1/organizations/myorg/environments/myenv/resourcefiles/java/myresource.jar"Uygun düzeyde (API proxy'si, kuruluş veya ortam düzeyi) JAR dosyasını yükleyin.
Kaynağın yeniden yüklenmesi sorunu çözmezse etkilenen mesaj işlemcilerin yeniden başlatılması gerekir. Apigee Edge'i Cloud'da kullanıyorsanız Apigee Destek Ekibi ile iletişime geçin. Özel bulut kullanıcısıysanız Apigee Edge'i başlatma, durdurma, yeniden başlatma ve durumunu kontrol etme başlıklı makaleyi inceleyin.
JavaCalloutInstantiationFailed
Hata Mesajı
API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtımı şu hata mesajıyla başarısız oluyor:
Error in deployment for environment <var>environment</var>
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class <var>class_name</var>
Alternatif seçenek:
Error in deployment for environment <var>environment</var>.
The revision is deployed and traffic can flow, but flow may be impaired. Failed to instantiate the JavaCallout Class <var>class_name</var>
Örnek hata mesajı
Error in deployment for environment test
The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.class
Örnek hata ekran görüntüsü

Neden
Bu hatanın tipik nedenleri şunlardır:
| Neden | Açıklama |
| JAR dosyası eksik | Hata mesajında belirtilen Java sınıfını içeren JAR dosyası yüklenmemiştir. |
| Bozuk JAR dosyası | Hatada belirtilen Java sınıfını içeren JAR dosyası bozuk veya kısmen yüklenmiş. |
| Eksik sınıf dosyası | Hata mesajında belirtilen Java sınıfı dosyası, >ResourceURL< içinde belirtilen JAR dosyasının veya bağımlı JAR dosyalarının bir parçası değil. |
| Java Kodu Sorunu | Kodda bir hata vardır (ör. oluşturucu eksikliği, kod bağımlılığı sorunu veya başka bir sorun). |
Sık Karşılaşılan Teşhis Adımı
Ortamın adını ve içe aktarılamayan sınıfı belirleyin. Örneğin, aşağıdaki hata mesajında ortam adı
test, sınıf adı isemy.class'dir:Error in deployment for environment test The revision is deployed, but traffic cannot flow. Failed to instantiate the JavaCallout Class my.classNeden: JAR dosyası eksik
Teşhis
- Sınıfı (yukarıdaki 1. adımda tanımlanmıştır) içermesi gereken ve başlatılamayan JAR dosyasını belirleyin.
- İlgili JAR dosyasının API proxy'si, kuruluş veya ortam düzeyinde yüklenip yüklenmediğini kontrol edin. JAR dosyası herhangi bir düzeye yüklenmediyse Çözüm bölümüne gidin.
- JAR dosyası yüklendiyse Neden: Bozuk JAR Dosyası bölümüne gidin.
Çözünürlük
- JAR dosyası bozulmuşsa veya kısmen yüklenmişse JAR'ı yeniden oluşturun ve JAR dosyasını uygun düzeyde (API proxy'si, kuruluş veya ortam düzeyi) yükleyin.
- API proxy'sini yeniden dağıtın.
Neden: Bozuk JAR dosyası
Teşhis
- Örneklenemeyen sınıfı (yukarıdaki 1. adımda tanımlanan) içermesi gereken JAR dosyasını belirleyin.
- İlgili JAR dosyasının bozuk olup olmadığını kontrol edin. Örneğin, dosya bozuk olduğu veya kısmen yüklendiği için dosyayı açamıyorsanız. Bozulmuşsa Çözüm bölümüne gidin.
- JAR dosyası bozuk değilse Neden: Sınıf Dosyası Eksik bölümüne gidin.
Çözünürlük
- Bozuk JAR dosyalarını yeniden oluşturun ve JAR dosyasını yükleyin (API proxy'si, kuruluş veya ortam düzeyinde).
- API proxy'sini yeniden dağıtın.
Neden: Sınıf dosyası eksik
Teşhis
- Belirli Java sınıfı dosyasının (yukarıdaki 1. adımda tanımlanan) >ResourceURL< içinde belirtilen JAR dosyasının veya bağımlı JAR dosyalarından herhangi birinin parçası olup olmadığını kontrol edin.
- Sınıf dosyası JAR dosyalarının hiçbirinde yoksa hatanın nedenini belirlemişsinizdir. Çözünürlük'e gidin.
- Sınıf dosyası, JavaCallout politikasında belirtilen JAR dosyalarından birinde varsa Java kodunda veya bu hataya neden olan bağımlı sınıfta bir sorun olmalıdır. a. Herkese açık bulut kullanıcısıysanız Apigee Destek Ekibi ile iletişime geçin. b. Özel bulut kullanıcısıysanız Neden: Java Kodu Sorunu bölümüne gidin.
Çözünürlük
- JAR'ı eksik sınıf dosyalarıyla yeniden oluşturun ve JAR dosyasını uygun düzeyde (API proxy'si, kuruluş veya ortam düzeyi) yükleyin.
- API proxy'sini yeniden dağıtın.
Neden: Java kodu sorunu
Yalnızca özel bulut kullanıcıları için teşhis adımları
Teşhis
- Mesaj İşleyici günlüklerini (
/opt/apigee/var/log/edge-message-processor/system.logve/opt/apigee/var/log/edge-message-processor/configurations.log) kontrol edin. Aşağıdaki örneğe benzer bir istisna görebilirsiniz:
2019-07-05 05:40:13,240 org:myorg env:staging target:/organizations/myorg/apiproxies/MyAPI/revisions/5 action:add context-id: mode: Apigee-Main-53 ERROR CONFIG-CHANGE - AbstractConfigurator.add() : Add null to Step failed, reason: {} com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class <class name> at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:116) at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:218) …<snipped> Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at com.apigee.steps.javacallout.JavaCalloutStepDefinition.access$100(JavaCalloutStepDefinition.java:41) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.initialize(JavaCalloutStepDefinition.java:131) at com.apigee.steps.javacallout.JavaCalloutStepDefinition$CallOutWrapper.<init>(JavaCalloutStepDefinition.java:126) ... 42 common frames omitted Caused by: <Reason> ...<snipped>Başarısızlık nedenini anlamak için istisnayı dikkatlice okuyun. Bu durum genellikle Java kodunuzdaki bir soruna işaret eder.
Çözünürlük
- Başarısızlığın nedenine bağlı olarak, sorunu Java kodunuzda düzeltmeniz gerekebilir.
- JAR'ı eksik sınıf dosyalarıyla yeniden oluşturun ve JAR dosyasını uygun düzeyde (API proxy'si, kuruluş veya ortam düzeyi) yükleyin.
- API proxy'sini yeniden dağıtın.
JAR dosyasını yükleyin
Gerekli tüm sınıfları içeren kaynak öğesinin API proxy'si, ortam veya kuruluş düzeyinde bulunduğundan emin olun. Daha fazla bilgi için Kaynak dosyaları konusuna bakın.
Bir kaynağı API proxy'si düzeyinde yüklemek için Kaynaklar sekmesinde + (artı işareti) simgesini tıklayın, ardından Dosyayı içe aktar'ı seçin ve yerel makinenizden dosyayı yükleyin. Dosya adı, >ResourceURL< öğesiyle eşleşmelidir ancak
java://önekini içermemelidir.
Bir kaynağın aynı ortamdaki birden fazla API proxy'sinde kullanılabilmesini istiyorsanız kaynağı ortama yükleyin. Kaynak dosyaları bölümünde açıklandığı gibi Edge API'yi kullanmanız gerekir.
Örneğin, belirtilen dosyayı ortam düzeyinde yüklemek için yerel makineden aşağıdaki API çağrısını girin:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/environments/myenv/resourcefiles?name=myresouce.jar&type=java"API çağrısını, dosyanın bulunduğu dizinden yapın.
Dosyanın kuruluştaki tüm ortamlarda bulunan tüm API proxy'leri için kullanılabilir olmasını sağlamak üzere temel yoldaki ortam ayrıntılarını atlayabilirsiniz. Örneğin:
curl -v -u email -H "Content-Type: application/octet-stream" \ -X POST --data-binary @{classes.jar} \ "http://{mgmt_server}:{port}/v1/organizations/myorg/resourcefiles?name=myresouce.jar&type=java"