جافا: استخدام نقطة النهاية لنشر خدمات الويب إلى خادم Tomcat

StackOverflow https://stackoverflow.com/questions/2083500

سؤال

أقوم بإنشاء خدمة ويب SOAP بسيطة. سأضمن تشغيله على خدمة ويب Tomcat.

أنا أحاول تنفيذ هذا مع Jax-WS (انظر الكود)

سؤالي هو: هل تستخدم نقطة النهاية. النشر خادم Tomcat لاستضافة هذا أو هل هو نوع من الأسماك الزجاجية المصغرة؟

هل يجب أن أقوم بتمديد UnicAstremoveObject أو شيء مشابه بدلاً من ذلك؟

من الناحية المثالية ، سيكون من الممكن أن يتم تعبئتها في الحرب وإسقاطها في الدليل والعمل فقط.

لا يبدو أنه يعمل مع خادم Tomcat المثبت كما هو لأنه يقول أن المنفذ قيد الاستخدام بالفعل. أنا أستخدم Ubuntu Karmic مع تثبيت حزمة Tomcat6 ، كما يمكن أن يكون المستخدم الخاص بي ليس لديه أذونات للنشر إلى Tomcat قيد التشغيل على 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";
    }
}
هل كانت مفيدة؟

المحلول

يفعل Endpoint.publish استخدم خادم Tomcat لاستضافة هذا أم أنه خادم Mini Glassfish؟

Jax-WS RI Endpoint.publish يستخدم API بشكل افتراضي الوزن الخفيف تطبيق خادم HTTP تم تضمينه في Sun's Java SE 6. لذلك لا ، إنه يفعل ليس استخدم سمكة زجاجية مضمنة ولا تومكات مضمن وحتى أقل من تثبيت tomcat الحالي: إنه يستخدم مغروس حاوية أي شيء يعمل داخل نفس JVM. فقط لمعلوماتك ، ومع ذلك ، من الممكن توصيل التطبيقات الأخرى طالما أنها توفر أ تنفيذ مزود الخدمة (SPI). على سبيل المثال ، Jetty 6 يفعل ذلك ، انظر j2se6httpserverspi. لكنني لن أغطي كل التفاصيل هنا :)

لا يبدو أنه يعمل مع خادم Tomcat المثبت كما هو لأنه يقول أن المنفذ قيد الاستخدام بالفعل.

كما قلت أعلاه ، Enpoint.publish لا يستخدم API تثبيت Tomcat الحالي. يستخدم الخادم الخاص به ويسمح لك بنشر خدمة الويب الخاصة بك دون الحاجة إلى حزم التطبيق الخاص بك ونشره. إنه مفيد بشكل خاص أثناء التطوير (لأنه يسرع الأشياء). في الواقع ، إنه مفيد للغاية.

الآن ، إذا كان لديك خادم tomcat يعمل على المنفذ 8082 وإذا حاولت نشر Endpoint باستخدام نفس المنفذ ، لن تعمل الأمور كما لاحظت. استخدم منفذ مختلف (وغير مستخدم) أثناء التطوير.

وإذا كنت ترغب في نشر خدمات الويب الخاصة بك على تثبيت Tomcat الحالي الخاص بك ، فسيتعين عليك تجميعها في حرب ونشر هذه الحرب على Tomcat. لكن هذا مختلف تمامًا وليس له أي علاقة باستخدام Endpoint.publish API.

نصائح أخرى

مثير جدا. يبدو لي أن الخادم المدمج يحتوي أيضًا على محرك SOAP لمعالجة رسائل الصابون المرسلة إلى هذا المنفذ. هل هذا أيضًا محرك صابون مضمن أم أنه يستخدم أحد محركات الصابون الشائعة (AXIS2 ، CXF ، Metro)

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