Quiero compartir un objeto entre mis servlets y mi servicio web (JAX-WS) guardándolo como un atributo de contexto de servlet. Pero, ¿cómo puedo recuperar el contexto de servlet de un servicio web?¿Cómo puedo acceder al ServletContext desde un servicio web JAX-WS?
37
A
Respuesta
40
JAX-WS pone a disposición el contexto del servlet a través del contexto del mensaje, que se puede recuperar utilizando el contexto del servicio web. Insertar el elemento siguiente hará que JAX-WS para inyectar una referencia al contexto de servicio web en su servicio web:
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
...
@Resource
private WebServiceContext context;
A continuación, se puede acceder al contexto de servlet usando:
ServletContext servletContext =
(ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
0
Si utiliza ¡Maven agrega esta dependencia!
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
Así que resolverse para evitar el error de conflicto para conseguir ServletContext INFO :
Y en el método de clase I utilizan
@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());
Cuestiones relacionadas
- 1. ¿Cómo puedo acceder al ApplicationContext desde un servicio web JAX-WS?
- 2. acceder al servicio web desde jQuery - dominios
- 3. ¿Cómo acceder a un servicio web PHP desde ASP.Net?
- 4. Acceder al servicio web desde el procedimiento almacenado de Oracle
- 5. ¿Cómo acceder a un servicio web desde powershell?
- 6. Acceda al servicio web desde GWT
- 7. Error al acceder a un servicio web con SSL
- 8. ¿Cómo puedo acceder al registrador Rails desde un inicializador?
- 9. Llamadas al servicio web SOAP desde Javascript
- 10. Llamando al servicio web desde C++
- 11. Acceso al servicio web virtualbox
- 12. Cómo acceder a un servicio web con métodos sobrecargados
- 13. ¿Cómo acceder al servicio WCF RIA desde el servicio de Windows?
- 14. Llamar a un servicio web desde C++
- 15. ¿Cómo acceder al servidor local WCF desde otro dispositivo?
- 16. ¿Cómo puedo usar Powershell para acceder a un servicio web tranquilo?
- 17. ¿Puedo acceder al estado de la sesión desde un HTTPModule?
- 18. ¿Cómo puedo recibir OutputDebugString desde un servicio?
- 19. Llamando al servicio web ASP.net desde la aplicación C#
- 20. ¿Cómo puedo enviar imágenes al servicio web php?
- 21. ¿Puedo acceder a IIdentity desde la API web?
- 22. ¿Cómo imprimo un documento HTML desde un servicio web?
- 23. Accediendo a un servicio web desde su navegador
- 24. Cómo llamar a un servicio web desde jQuery
- 25. ¿Garantizar un servicio web?
- 26. ¿Cómo acceder al Avatar desde Google?
- 27. Consultas WPAD llamando al servicio web desde ASP.NET
- 28. Cómo devolver JSON desde el servicio web
- 29. Cómo acceder a ApplicationContext desde un controlador
- 30. Cómo enviar una imagen desde un servicio web en Spring
Si está tratando de esto en una pila de JBoss EAP, y se empieza al crear un proyecto Seam utilizando el Asistente de proyecto nuevo en JBoss Developer Studio, se termina con un archivo commons-annotations.jar en su WEB-INF/lib (que contiene, entre otros, la anotación @Resource). El resultado final es que su WebServiceContext no se llena y obtiene una NullPointerException. Para nosotros, la solución fue simplemente eliminar commons-annotations.jar, para asegurarnos de que se utilizara la versión incluida con JBoss. Después de eso, las cosas fueron estupendamente. Gracias por la gran respuesta, ¡un verdadero salvavidas! –
Me salvó el día, pero carece de las importaciones que @pihentagy ha publicado. –
¿Hay otros recursos inyectables que no sean el contexto del servicio web? –