كيف يمكنني الوصول إلى ServletContext من داخل خدمة الإنترنت JAX-WS؟

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأريد أن أشارك كائن بين بلدي وبلدي السيرفلتس خدمة ويب (JAX-WS) عن طريق تخزين أنها سمة السياق بريمج. ولكن كيف يمكنني استرداد سياق بريمج من خدمة الإنترنت؟

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

المحلول

ويتكون السياق بريمج متاحة من قبل JAX-WS عبر سياق الرسالة، التي يمكن استرجاعها باستخدام سياق خدمة ويب. وإدراج الأعضاء التالية يسبب JAX-WS لحقن إشارة إلى سياق خدمة على شبكة الإنترنت إلى خدمة الويب الخاص بك:

import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

...

@Resource
private WebServiceContext context;

وبعد ذلك، يمكنك الوصول إلى سياق بريمج باستخدام:

ServletContext servletContext =
    (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);

نصائح أخرى

إذا كنت تستخدم مخضرم إضافة هذه التبعية!

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>

ولذا فإنني حلها عن خطأ تعارض تجنب ل يحصل ServletContext <وأ href = "https://rishisoftwareblog.wordpress.com/2013/02/06/using-a-servlet-config-file-with-a-cxf-jax-rs-web-service/" يختلط = "نوفولو "> INFO:

وفي أسلوب فئة يمكنني استخدام

@WebService(endpointInterface = "choice.HelloWorld")
public class HelloWorldImpl implements HelloWorld {
    @Resource
    private WebServiceContext context;
    public String sayHi(String text) {
        HttpServletRequest request =(HttpServletRequest) context.getMessageContext().get(MessageContext.SERVLET_REQUEST);
        System.out.println(request.getContextPath());

إذا الكائن الذي تحاول مشاركة ملف، ويقول myFile.txt يمكنك استخدام الأسلوب التالي:

وأفضل طريقة للقيام بذلك أن الأول هو استخدام:

Thread.currentThread().getContextClassLoader().getResource("myFile.txt").getPath()

وهذا يعطي مسار أي myFile.txt ملف وضعها في الدليل /WEB-INF/classes/ داخل مجلد WebContent من تطبيق الويب.

في بيئة الكسوف JEE كنت بحاجة للحفاظ على myFile.txt الملف، التي قد تحتاج إلى قراءة ضمن خدمة ويب، في المجلد src لذلك ليتم نقلها إلى مجلد /WEB-INF/classes/ من قبل الوزع.

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