Jax-WS: كيفية الحصول على مقبض لبدء/نهاية معالجة رسالة الصابون الواردة
سؤال
الموقف: خدمة الويب Jax-WS على WebLogic AppServer ؛ تطوير WSDL الأول ، التخصيصات JaxB في ملف الربط الخارجي.
أرغب في الحصول على مقبض مع سياق JaxB الفعلي الذي سيعالج رسالة XML الصابون الواردة ، قبل لقد تم التخلص منه في كائنات جافا.
ثم أود احصل على unmarshaller من سياق Jaxb هذا - الذي سيتم استخدامه بالفعل أثناء عدم الممارسين. ثم قم بإعداد بعض خصائص هذا unmarshaller (مثل المستمع و idresolver).
المحلول
الجديد usesjaxbcontex التعليقات التوضيحية jaxbcontextfactoryin jaxws 2.1.5 - jaxb 2.2 على الأرجح ما أحتاجه لذلك. ومع ذلك ، يستخدم WebLogic 10.3.1 Jaxws 2.1.1 ، Jaxb 2.1.3.
حل آخر هو الاستخدام:
@WebServiceProvider(portName = "Port", serviceName = "Service", targetNamespace = "tns", wsdlLocation = "/wsdls/x.wsdl")
@BindingType(value = "http://schemas.xmlsoap.org/wsdl/soap/http")
@ServiceMode(value = javax.xml.ws.Service.Mode.MESSAGE)
public class ServiceProvider implements Provider<SOAPMessage>
هذا يتيح الوصول إلى رسالة SOAP XML. لا يزال يتعين عليّ معرفة أين يمكن العثور على اسم الطريقة.
بدلاً من:
@WebService(portName = "Port", serviceName = "Service", targetNamespace = "tns",
wsdlLocation = "/wsdls/x.wsdl", endpointInterface = "tns.PortType")
@BindingType("http://schemas.xmlsoap.org/wsdl/soap/http")
public class ServicePort implements PortType
لا تنتمي إلى StackOverflow