Question

J'écris un servlet Java qui appelle une fonction dans un jar. Je n'ai aucun contrôle sur le code dans ce pot. La fonction appelée veut le nom de fichier d'un fichier de configuration en tant qu'argument.

J'aimerais regrouper ce fichier avec mon fichier de guerre. Si je le mets quelque part dans la guerre, quel nom de fichier puis-je transmettre à la fonction dans le bocal?

Notez que seul un nom de fichier peut être utilisé avec l'API du jar. Par conséquent, ServletContext.getResourceAsStream () n’est pas utile.

Était-ce utile?

La solution

Utilisez ServletContext.getRealPath () . Cela retourne le chemin du système de fichiers pour une ressource de contexte de servlet donnée. Vous transmettez le même argument que vous le feriez à ServletContext.getResourceAsStream ()

Mieux encore, utilisez l'abstraction des ressources de Spring:

Resource resource = new ServletContextResource(servletContext, "/path/to/file");
File resourceFile = resource.getFile();

Autres conseils

S'il se trouve dans votre fichier .war, vous ne pourrez pas y accéder sous forme de fichier. Certains conteneurs de servlets vont exploser un fichier .war en composants, mais je ne pense pas que vous puissiez vous en fier.

Avez-vous pensé à l'extraire (via getResourceAsStream () ), à l'écrire dans un fichier / répertoire temporaire, puis à le référencer?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top