Come posso accedere a ServletContext da un servizio Web JAX-WS?

Voglio condividere un object tra i miei servlet e il mio webservice (JAX-WS) memorizzandolo come un attributo di contesto servlet. Ma come posso recuperare il contesto servlet da un servizio web?

Il contesto servlet è reso disponibile da JAX-WS tramite il contesto del messaggio, che può essere recuperato utilizzando il contesto del servizio web. Inserendo il membro seguente, JAX-WS immetterà un riferimento al contesto del servizio Web nel servizio Web:

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

Quindi, è ansible accedere al contesto servlet utilizzando:

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

Se usi Maven aggiungi questa dipendenza !!!

   javax.servlet servlet-api 2.4 provided  

Così ho risolto per evitare errori di conflitto per ottenere INFO ServletContext :

E nel metodo di class che uso

 @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 l’object che stai tentando di condividere è un file, ad esempio myFile.txt puoi utilizzare il metodo seguente:

Il modo migliore per farlo è:

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

Questo fornisce il percorso di qualsiasi file myFile.txt inserito in /WEB-INF/classs/ directory all’interno della cartella WebContent di WebApp.

Nell’ambiente Eclipse JEE è necessario conservare il file myFile.txt , che si potrebbe voler leggere all’interno del servizio Web, nella cartella src affinché possa essere trasportato nella cartella /WEB-INF/classs/ dal deployer.