Wie kann ich auf die ServletContext aus einem JAX-WS Web Service?
-
06-07-2019 - |
Frage
Ich möchte durch Speichern sie als Servletkontext Attribut ein Objekt zwischen meinem Servlets und meine Webservice (JAX-WS) teilen. Aber wie kann ich rufe Sie den Servlet-Kontext von einem Webdienst?
Lösung
Der Servlet-Kontext wird von JAX-WS über den Nachrichtenkontext zur Verfügung gestellt, die den Web-Service-Kontext abgerufen werden können. Einsetzen des folgende Mitglied verursacht JAX-WS einen Verweis auf den Web-Service-Kontext in Ihren Web-Service zu injizieren:
import javax.annotation.Resource;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;
...
@Resource
private WebServiceContext context;
Dann können Sie den Servlet-Kontext zugreifen mit:
ServletContext servletContext =
(ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);
Andere Tipps
Wenn Sie Maven diese Abhängigkeit hinzuzufügen !!!
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
So löste ich für vermeiden Konfliktfehler für get ServletContext
Wenn das Objekt, das Sie teilen möchten, ist eine Datei, sagen Der beste Weg, dies zu tun, die ich benutze, ist: Dies gibt den Pfad einer Datei In Eclipse-JEE-Umgebung müssen Sie die Datei myFile.txt
Sie die Methode unten verwenden können: Thread.currentThread().getContextClassLoader().getResource("myFile.txt").getPath()
myFile.txt
in /WEB-INF/classes/
Verzeichnis im WebContent
Ordner der WebApp platziert. myFile.txt
halten, dass Sie in dem Web-Service lesen mögen, im src
Ordner für sie durch die deployer zum /WEB-INF/classes/
Ordner transportiert werden.