2010-06-09 6 views
0

J'ai développé une servlet java qui surveille un dossier sur un lecteur réseau pour de nouveaux fichiers, puis effectue certaines actions dessus selon le type de fichier. Cela a fonctionné dans Eclipse quand Eclipse et Tomcat fonctionnaient l'un avec l'autre, mais maintenant que je l'ai déployé sur un serveur (machine différente), le servlet continue à se connecter qu'il ne trouve pas le dossier à mapper. Le même lecteur réseau est mappé et le dossier existe définitivement. Ce problème se produit uniquement lorsque le servlet est exécuté sur le serveur et non sur la machine de développement.Java Servlet indique que le fichier n'existe pas

Merci!

PS: Il s'agit d'un serveur Windows Server 2003 Enterprise Server avec Tomcat v6 installé.

Répondre

1

J'ai finalement compris.

Il s'avère que lorsque Tomcat s'exécute (de toute évidence) s'exécute en tant que service. Le service ne voit pas les choses de la même manière qu'un utilisateur. Il se trouve que Windows monte les lecteurs réseau au niveau USER. Par conséquent, selon le système, le lecteur n'existe pas. La solution de contournement consistait à utiliser les chemins d'accès UNC.

J'ai essayé cela à l'origine, mais cela n'a pas fonctionné, et la raison en était que le service n'avait pas les permissions correctes.

Merci à tous ceux qui m'ont aidé.

http://wiki.apache.org/tomcat/FAQ/Windows#Q7

1

Utilisez-vous des chemins relatifs dans votre code pour trouver le fichier? Les chemins d'accès à un fichier dans votre système de fichiers lorsque le code s'exécute dans votre IDE ou Tomcat local sont plus que probablement pas le même chemin pour atteindre le fichier que lorsqu'il s'exécute sur d'autres machines/environnements.

Le mieux est de supprimer complètement les chemins de votre code et de les charger à partir d'un fichier de configuration.

+0

Je l'ai fait, et reconfiguré le fichier de configuration du serveur, cependant, car il est un lecteur réseau, le fichier se trouve sur le lecteur E pour les deux machines. – Austin

0

Pouvez-vous essayer la sortie de cette API pour vérifier si le chemin du fichier est ce que vous attendez

http://java.sun.com/j2ee/sdk_1.3/techdocs/api/javax/servlet/ServletContext.html#getRealPath(java.lang.String)

+0

s'il vous plaît pardonnez-moi si c'est une question stupide, mais je continue à obtenir une exception NullPointerException pour la ligne this.getServletContext(); Pourquoi cela serait-il nul? – Austin

+0

peut être que vous voulez vérifier ce lien aussi http://www.coderanch.com/t/360208/Servlets/java/getServletConfig-does-not-work – prashant

+0

Je l'ai eu le travail, et le chemin du fichier n'est en effet pas ce que j'attends. Merci, maintenant pour savoir quoi faire pour y remédier! – Austin

Questions connexes