JAX-WS 웹 서비스 내에서 ServletContext에 어떻게 액세스 할 수 있습니까?

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

  •  06-07-2019
  •  | 
  •  

문제

Servlet 컨텍스트 속성으로 저장하여 서블릿과 웹 서비스 (JAX-WS) 사이에 객체를 공유하고 싶습니다. 그러나 웹 서비스에서 서블릿 컨텍스트를 어떻게 검색 할 수 있습니까?

도움이 되었습니까?

해결책

Servlet 컨텍스트는 Web Service 컨텍스트를 사용하여 검색 할 수있는 메시지 컨텍스트를 통해 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);

다른 팁

Maven을 사용하는 경우이 종속성을 추가하십시오 !!!

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

그래서 나는 servletcontext를 얻기 위해 충돌 오류를 피하기 위해 해결했다.정보 :

그리고 수업 방법에서 나는 사용합니다

@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 webapp의 폴더.

Eclipse jee 환경에서는 파일을 유지해야합니다. myFile.txt, 당신은 웹 서비스 내에서 읽고 싶을 수도 있습니다. src 폴더로 전송 될 폴더 /WEB-INF/classes/ 배포자의 폴더.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top