2012-03-26 8 views
3

Ich möchte eine Datei im WebContent-Ordner über eine Methode in einem Web-Service im selben Projekt erreichen. Zum Beispiel:So erreichen Sie den WebContent-Ordner über eine Web-Service-Methode

@WebMethod 
public String test() { 
    File configFile = new File("config.xml"); 
    return configFile.getAbsolutePath(); 
} 

Es gibt "/usr/share/glassfish3/glassfish/domains/domain1/config/config.xml". Ich möchte zu einer Datei im Verzeichnis "/ usr/share/glassfish3/glassfish/domains/domain1/applications/mein_projektname /" gelangen. Wie kann ich dazu kommen?

+0

siehe http://stackoverflow.com/questions/6878275/how-get-the- Basis-URL –

Antwort

0

Von Ihrem Code verstehe ich, dass Ihr JAXWS-Webservice ist.

In jaxws, können Sie die bekommen HttpServletRequest, HttpServletResponse, ServletContext,

empfiehlt sich eine private Variable in der WebService-Klasse und mit Anmerkungen versehen es auf diese Weise

@Resource 
private WebServiceContext context; 

Und dann in Ihrer Methode, können Sie Rufen Sie den ServletContext auf diese Weise

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

Von ServletContext können Sie den Pfad abrufen.

Angenommen, wenn Sie HttpServletRequest bekommen müssen, können Sie es auf diese Weise bekommen

HttpServletRequest request = 
      (HttpServletRequest) context.getMessageContext().get(MessageContext.SERVLET_REQUEST); 

und Sie können den Kontextpfad Ihrer Anwendung wie

request.getContextPath() ; 
+1

Vielen Dank für die Antwort. Ich verwende diese Anweisung zum Erstellen einer neuen Datei, aber es funktioniert nicht: 'String filePath = String.format ("% s% s% s ", request.getContextPath(), Datei.separatorChar," config.xml ") ; Die Datei configFile = new File (filePath); ' –

+0

ich lokal einen Code schreiben, wird u genauen Code zu geben .. – Arun

+0

versuchen, es als Input-Stream zu bekommen eher: sagen für ex ServletContext ServletContext = (ServletContext) Kontext \t \t \t \t. getMessageContext(). get (MessageContext.SERVLET_CONTEXT); FileInputStream fis = neuer FileInputStream ( \t \t \t \t \t servletContext.getContextPath() + "/" + fileName); – Arun

1

Fügen Sie den folgenden Parameter, um Ihre Web-Service-Klasse:

@Context 
ServletContext context; 

Dann ist Ihre config.xml Datei angenommen in th e WebContent Ordner, können Sie seinen absoluten Pfad abrufen, indem Sie die Methode context.getRealPath(String) aufrufen. Arbeiten mit dem Beispiel-Code wäre es:

@WebMethod 
public String test() { 
    File configFile = new File(context.getRealPath("config.xml")); 
    return configFile.getAbsolutePath(); 
} 

oder direkt, ohne von einem File-Objekt übergeben:

@WebMethod 
public String test() { 
    return context.getRealPath("config.xml"); 
} 
Verwandte Themen