Pergunta

Eu quero compartilhar um objeto entre meus servlets e meu webservice (JAX-WS), armazenando-o como um atributo de contexto servlet. Mas como eu posso recuperar o contexto servlet de um serviço web?

Foi útil?

Solução

O contexto servlet é disponibilizado pela JAX-WS através do contexto da mensagem, que pode ser recuperada usando o contexto de serviço web. Inserir o seguinte membro fará com JAX-WS para injetar uma referência ao contexto de serviço da web em seu serviço web:

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

...

@Resource
private WebServiceContext context;

Em seguida, você pode acessar o contexto servlet usando:

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

Outras dicas

Se você usar Maven adicionar essa dependência !!!

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

Então, eu resolvido por erro de conflito evitar para get ServletContext INFO:

E na classe uso do método I

@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());

Se o objeto que você está tentando share é um arquivo, dizer myFile.txt você pode usar o método abaixo:

A melhor maneira de fazer isso que eu uso é:

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

Isto dá o caminho de qualquer myFile.txt arquivo colocado no diretório /WEB-INF/classes/ dentro da pasta WebContent do WebApp.

ambiente em Eclipse JEE que você precisa para manter o myFile.txt arquivo, que você pode querer ler dentro do Serviço Web, na pasta src para que possa ser transportado para a pasta /WEB-INF/classes/ pelo implementador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top