2010-09-23 42 views
0

réseau j'ai un env production et env test. La production a win2k3 + tomcat 6.0+ et le lecteur réseau mappé à une lettre de lecteur pour un accès facile (z: \ app au lieu de \ symba \ files \ app). Mon test env a Windows XP (tous les logiciels sont les mêmes, y compris le code source pour servlet) et le test a également le même mappage de lettre de lecteur sur le lecteur réseau.Servlet jette fichier introuvable excp lors de l'accès disque

Tomcat est en cours d'exécution avec le même nom d'utilisateur dans les deux systèmes et je suis en mesure d'accéder au fichier via l'explorateur Windows dans le test m/c et production m/c.

Maintenant, le servlet dans Windows XP m/c (test m/c) jette une exception fichier non trouvé si essayer d'accéder à un fichier existant (accessible via Windows Explorer). Le servlet en production est le même qu'en test env et le servlet de production donne volontiers le fichier quand je le demande et ne jette aucune erreur quoi que ce soit.

J'ai voir quelques messages que l'utilisation de la lettre de lecteur n'est pas une bonne idée et devrait utiliser des chemins UNC à la place et je n'ai pas encore essayé ce. Je veux connaître la raison pour laquelle le servlet de test ne parvient pas à obtenir le fichier alors que le servlet de production fonctionne correctement.

Merci beaucoup pour votre temps et aider Bo

Répondre

2

Courez-vous le serveur d'applications en tant que service? Les affectations de lettre de lecteur ne sont fiables que si vous utilisez des programmes interactifs et non des services.

Il ya quelques années, j'ai essayé de résoudre un problème tout à fait identique mais, enfin, j'ai abandonné et j'ai utilisé JCIFS pour accéder aux fichiers.

+0

oui suis en cours d'exécution du tomcat en tant que service dans les deux envs. Vous avez raison sur les programmes interactifs parce que je peux accéder au fichier dans l'explorateur de gains. Ne sais pas à propos de jcifs mais va essayer de voir si cela correspond à mon problème. – BoCode

+0

andcoz .... vous êtes un génie. Oui tomcat dans test env fonctionnait comme un service et en production il fonctionnait comme un service interactif. J'ai fait fonctionner le serveur de test tomcat en tant que service interactif (le supprimer en tant que service et l'exécuter par le biais de startup.bat) et maintenant les fichiers sont accessibles sur le lecteur réseau. – BoCode

0

Si vous exécutez Tomcat avec un gestionnaire de sécurité, le code d'application Web est conforme à la configuration par défaut l'accès aux fichiers autorisés uniquement dans son répertoire de déploiement. Si vous souhaitez modifier les politiques d'application, vous pouvez le faire dans le fichier conf/catalina.policy ou vous pouvez désactiver le gestionnaire de sécurité, si vous voulez que votre code de l'application Web pour gagner tous les privilèges.

+0

Je vais essayer de voir s'il y a un changement dans la catalina.policy dans les env. – BoCode

+0

juste une mise à jour, ne suis pas en cours d'exécution tomcat avec un gestionnaire de sécurité. donc je ne sais pas quoi faire maintenant. Peux-tu aider s'il te plait? – BoCode

0

Vous voudrez peut-être envisager d'exécuter le service Tomcat en tant que l'utilisateur qui a accès au lecteur mappé.

Comme souligné par andcoz, les mappages ne s'appliqueront pas à l'utilisateur SYSTEM dans Windows que je suppose être utilisé pour l'exécution de Tomcat. Vous pouvez modifier la configuration du service pour l'exécuter en tant que propriétaire du mappage de lecteur et vérifier si la panne persiste.

connexes:

FileNotFoundException thrown when the file does exists.

+0

Vineet c'était une excellente ressource. Merci beaucoup. – BoCode