JDK6: عند استخدام تطبيق JAX-WS المجمعة مقابل مترو المشروع

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

سؤال

يمكن استخدام تطبيق JAX-WS المجمعة مع JDK6 لتوفير خادم خدمات ويب دون أي مكتبات إضافية.ستبدأ JVM بخادم WS على منفذ محدد.

p> href="http://java.sun.com/developer/technicalasticles/j2se/jax_ws_2/"> http://java.sun.com/developer/technicalasters/j2se/jax_ws_2/

http://java.sun.com/developer/technicalasticles/jexse/jax_ws_2_pt2/

السؤال الذي لدي هو كيف يختلف هذا من مترو المشروع؟إذا كان الهدف النهائي هو استضافة خدمات الويب داخل Tomcat، فلا يزال بإمكاني استخدام وظائف مجمعة ثم إعادة توجيه فقط إلى خادم WS المجمعة أو هل من الأفضل نشر خدمة المترو؟

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

المحلول

بقدر ما أعرف Jax-WS هو فقط قالب الذي يجب تنفيذه إما عن طريق jdk6 أو تطبيق المترو.

المترو هو التنفيذ القياسي الذي يتم شحنه مع خادم تطبيق Glassfish. انظر هنا .

لذلك لا ينبغي أن يكون هناك أي اختلافات.

نصائح أخرى

حسنا، أول شيء يجب أن تعرفه عن المترو، هو أنه مشروع مظلة لمختلف المشاريع ذات الصلة WS viz. JAX-WS، JAXB، WSIT، JAX-WS-Commons وغيرها.

يحتوي كل عنصر من هذه المكونات على جزأين، و API (المواصفات) ويتم استدعاء جزء التنفيذ كإجراء مرجعي (RI). يتم تعريف المواصفات في "javax.xml.ws"، "javax.xml.bind" وما إلى ذلك، والقيام RI في حزم "com.sun.xxx".

الآن في مكان ما حول JDK 6، تحديث 4، بدأت Sun / Oracle بتجميع واجهات برمجة التطبيقات + RIS في JDK، وتبقى تحديث هذه مع تحديثات إلى JDK.

اعتبارا من آخر jdk 6 Update31، يحتوي JDK على منحوصات Jaxws و Jaxb API، و RI

jdk6 u31 - jaxb api @ 2.1 & ri @ 2.1.10، jaxws api @ 2.1 و ri @ 2.1.6

الآن إذا ذهبت إلى http://jaxb.java.net و http://jax-ws.java.net الصفحات، وشاهد الإصدار الأخير أقل من 2.1.x، سترى أن Jaxb Ri عند 2.1.13 و Jaxws Ri هو 2.1 .7، أي تطبيقات RI الخاصة ب 2.1 Spces التي يتم تجميعها مع أحدث تحديث JDK 6 هي بضعة إصدارات خلف تلك التي تم إصدارها تحت المترو. لذلك لاستخدام آخر من الجرار 2.1، قم ببساطة بنسخ Jars API + RI إلى ClassPath الخاص بك، كما هو موضح هنا http://jax-ws.java.net/2.1.7/docs/releasenotes.htmlm#running_on_top_of_jdk_6 .

لجعل الأمور أكثر مربكة، فإن مشروع المترو يحتوي على أرقام الإصدار الخاصة به، والتي هي اعتبارا من اليوم، 1.5، 2.0، 2.0.1، 2.1، 2.1.1، 2.2

metro 1.5 كان آخر مباني قام بتوزيع 2.1 Spces وأحدث RIS على تلك المواصفات، IE مترو 1.5 يحتوي على Jaxws و Jaxb Apis @ 2.1 و Jaxws Ri @ 2.1.7 و Jaxb Ri @ 2.1.13.

metro 2.0 فصاعدا، حزم JAXB و JAXWS APIS V2.2 وأحدث RI اعتبارا من بيانات الإصدار. على سبيل المثال أحدث إصدار المترو 2.2 باقات Jaxb Ri 2.2.5 و Jaxws Ri 2.2.6.

ولكن هناك صيد، JDK 6 Bundles V2.1 ل Jaxws و Jaxb (Apis + Ri)، وإذا كنت ببساطة استخدام Jaxws، Jaxb V2.2 Jars في Classpath، فلن يعمل ذلك. سيتعين عليك استخدام آلية جرة المعتمدة، كما هو موضح هنا http:// jax- ws.java.net/2.2.3/docs/releasenotes.htmlm#running_on_top_of_jdk_6 .

حتى بالنسبة لأي إصدار من المترو 2.0 وما فوق، ستحتاج إلى نسخ ملفات Jax-WS-API.JAR و JAXB-API.JAR ضمن $ Java_home / JRE / LIB / المعتمد، أو استخدام -djava.versed خاصية نظام النظام.

وبعض المرح، مترو ليس مجرد مشروع مظلة يحتوي على مشاريع JAX-WS و JAXB (من بين غيرها)، ولكنه يجعل أيضا جرة اوبر من هذه المشاريع.

لذلك على سبيل المثال، يحتوي WebServices-API.JAR على Jaxws-API.JAR، JAXB-API.JAR (RI) + APIs من مشاريع الأطفال الأخرى مثل WSIT و JAX-WS-Commons وغيرها. يحتوي

و webservices-rt.jar على jaxws-rt.jar، jaxb-rt.jar، + roht jars من مشاريع الأطفال الأخرى مثل WSIT و JAX-WS-Commons وغيرها.

حتى تلخص -

إذا كنت ترغب في تطوير WS ضد Jaxws / Jaxb V2.1 المواصفات، ما عليك سوى استخدام JDK 6 (أي تحديث آخر U04). إذا كنت ترغب في أن تكون متأكدا تماما من استخدام أحدث إصدارات APIS + RIS من 2.1 المواصفات، ما عليك سوى استخدام الجرار الإصدار 2.1.x آخر من Jaxws و Jaxb. أي استخدام JAX-WS 2.1.7 و JAXB 2.1.13، في ClassPath، [أو يمكنك استخدام WebServices-API.jar و WebServices-RT.JAR الخاص بك، أثناء حزمة Jaxws / Jaxb / WSIT /. .]

إذا كنت ترغب في تطوير WS الخاص بك مقابل أحدث المواصفات Jaxws / Jaxb v2.2، فسيتعين عليك استخدام Jax-WS V2.2.6 و Jaxb Ver 2.2.5 Jars [أو بدلا من ذلك، استخدم Webservices Metro 2.2 -API.JAR و Webservices-RT.JAR كما أنها حزمة Jaxws / Jaxb / WSIT .. ولكن عليك استخدام آلية جرة المعتمدة كما هو موضح أعلاه، من أجل تجاوز JDK شملت Jaxws / Jaxb V2.1 Jars.

توصيتي - إذا كان V2.1 على ما يرام، فاستخدم Jars Metro 1.5 (Webservices-API، Webservices-RT). إذا كنت بحاجة إلى V2.2 استخدم Jars Metro 2.2 (Webservices-API، Webservices-RT)، وتأكد من وضع WebServices-API.JAR في Dir المعتمد.

ستحتاج إلى جبار المترو (Webservices- [API، RT] .jar) إذا كنت ستستخدم أشياء مثل fastinfosets، mtom، وما إلى ذلك، حيث أن JDK مجمعة الجرار أو لهذا الأمر فقط Jaxws-ri.Jar ولن يعطيك Jaxb-ri.Jar تلك الميزات.

آمل أن يكون هذا البريد الطويل مفيدا في تطهير بعض الأشياء.

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