سؤال

أنا أستخدم Apache Axis لتوصيل تطبيق Java الخاص بي بخادم الويب.لقد استخدمت wsdl2java لإنشاء بذرة لي، ولكن عندما أحاول استخدام بذرة، أحصل على الاستثناء التالي:

org.Apache.axis.ConfigurationException:لم يتم تسمية أي خدمة <web service name> متاح

اي فكرة؟

هل كانت مفيدة؟

المحلول

مجرد تخمين، ولكن يبدو أن رسالة الخطأ تشير إلى أنك تركت اسم الخدمة فارغًا.أتخيل أن الكود الذي ينشئ رسالة الخطأ هذه يبدو كما يلي:

throw new ConfigurationException("No service named" + serviceName + " is available");

نصائح أخرى

بحسب ال توثيق مرتبط بواسطة @arnonym، هذا الاستثناء مضلل إلى حد ما.في المحاولة الأولى للعثور على الخدمة، يتم طرح ConfigurationException والقبض عليه.يتم تسجيله على مستوى DEBUG بواسطة فئة ConfigurationException.ثم يتم إجراء محاولة أخرى باستخدام طريقة مختلفة للعثور على الخدمة التي قد تنجح بعد ذلك.الحل البديل لذلك هو تغيير مستوى السجل في فئة ConfigurationException إلى INFO في log4j.properties:

log4j.logger.org.apache.axis.ConfigurationException = INFO

إنه استثناء يستخدمه تدفق التحكم في المحور.

http://wiki.apache.org/ws/FrontPage/Axis/DealingWithCommonExceptions--> org.Apache.axis.ConfigurationException:لا تتوفر خدمة باسم XXX

هذا ما يبدو عليه الكود الخاص بي.ويبدو أن تعمل بشكل جيد.هل تستخدم محدد موقع الخدمة أم تقوم فقط بإنشاء الخدمة الخاصة بك؟

SomeServiceLocator locator = new SomeServiceLocator();
SomeService service = null;
try
{
    service = locator.getSomeServiceImplPort();
}
catch (ServiceException e)
{
    e.printStackTrace();
}

لا أعرف إصدار Axis الذي تستخدمه ولكني أستخدم Axis2 لكل من الخادم والعميل ويقوم Java2WSDL بإنشاء نقطة نهاية افتراضية للخدمة على المضيف المحلي.إذا قمت بإنشاء كعب روتين العميل باستخدام WSDL2Java، فسيشير المُنشئ الافتراضي لكعب الروتين إلى المضيف المحلي.إذا كانت الخدمة على نقطة نهاية أخرى، فيجب عليك استخدام المُنشئ مع نقطة النهاية كمعلمة...ربما لا تكمن المشكلة في ذلك على الإطلاق، ولكن كما قيل في الإجابات الأخرى، من الصعب تحديد ذلك بدون WSDL الذي تستخدمه كمدخل WSDL2Java.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top