7
votes

Pots partagés à Apache-Tomcat 6.0.20

Je suis assez nouveau à JWS.

J'ai une application Web (plusieurs services Web) que je souhaite déployer à l'aide de tomcat 6.0.20 sur un système Linux. p>

Tout va bien si je Générez un fichier .war avec toutes les bibliothèques d'occasion à l'intérieur et mettez-la dans le répertoire WebApps, mais je souhaite que ces pots partagés et que le fichier .war lui-même est trop grand. P>

J'ai d'abord essayé l'intuitif Way - J'ai créé un lien (Web-Inf / Lib) dans le répertoire contenant les pots, mais étrangement, il échoue à déployer (il démarre si le répertoire n'est pas un lien): p>

SEVERE: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.ClassNotFoundException: com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3877)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:630)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:556)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:491)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1206)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:314)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:516)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)


0 commentaires

3 Réponses :


6
votes

Avez-vous essayé de mettre les fichiers de jar partagés dans $ catalina_home / lib ? Il dit que ". Normalement, les classes d'applications ne doivent pas être placées ici" mais on dirait que vous voudriez réellement dans votre cas.

Le $ catalina_home / partagé / lib semble être parti en 6.0 (c'était là dans 5,5).


2 commentaires

Eh bien, cela semble fonctionner - je ne l'ai même pas essayé auparavant, car il était marqué comme obsolète dans certains tutoriels.


Il a été remplacé par partagé.loader propriété dans /conf/catalina.properties . Vous pouvez spécifier n'importe quel chemin de système de fichiers de disque local dans votre ensemble.



1
votes

dans Tomcat 6, le contenu de $ catalina_home / lib sera mis à la disposition du chargeur de classe " commun " (voir http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html ). Le répertoire partagé / lib Tomcat 5.5 n'avait pas longtemps existé.

Cependant, j'aimerais savoir ce que les pots que vous essayez de y installer exactement, car le cas de JAX-WS (ou Metro) est "spécial". En outre, quel JDK utilisez-vous?

Mise à jour: Comme je l'ai dit, le cas de métro est un peu spécial. Pour l'installer, Copiez WebServices-Rt.jar, Webservices-Outils.jar, Webservices-extra.jar, Webservices-extra-api.jar dans $ catalina_home / lib . Mais WebServices-Api.jar et JSR173_API.JAR devraient aller dans $ catalina_home / endossé . En fait, c'est ce que le script métro-on-tomcat.xml fourni dans la distribution du métro (et je recommanderais de l'imiter).


1 commentaires

Nous utilisons le métro, Hibernate, MySQL, JNI pour des fonctions natives Linux et quelques-uns de nos bocaux internes, et le JDK est de 1,6.17.



4
votes

Pour ajouter un peu plus de détails à ce sujet.

  • Le projet de métro utilise le chargeur de classe partagé pour permettre d'exposer des bibliothèques à toutes les webapps que vous déployez.
  • Le projet de métro utilise le mécanisme de bibliothèque approuvé de Tomcat pour mettre à jour votre distribution Java standard

    chargeur de classe partagée

    Les ressources partagées sont partagées sur toutes les applications Web et non utilisées par Tomcat Classes internes.Si Tomcat 6 nécessite une bibliothèque partagée. AJUST $ CATALINA_HOME / CONF / CATALINA.PROPERTIÉS ET SET SABLED.LOADER = $ {catalina.home} / partagé / lib / *. JAR

    les bibliothèques approuvées

    Pour mettre à jour la plate-forme Java et incorporer une nouvelle version d'une bibliothèque donnée, incluse dans la distribution standard, on peut ajouter la bibliothèque à / lib / endossé ou définir la propriété du système Java.dirs.dirs si Tomcat 6 nécessite une Bibliothèque approuvée. Plusieurs stratégies peuvent être utilisées pour incorporer la bibliothèque approuvée requise

    • Ajoutez la bibliothèque donnée à Java-Home / Lib / endossé
    • Définissez le paramètre de ligne de commande Tomcat -djava.djava.Dirs
    • Utilisez le répertoire par défaut $ catalina_home / endossé; Voir /bin/setclasspath.sh ou /bin/setClassPath.bat
    • Set System Large Paramètre Java_endorsed_Dirs

1 commentaires

Si Catalina_Home est différent de catalina_base, le fichier à modifier est $ catalina_base / conf / CONF / CATALINA.PROPERTES. Pour obtenir un comportement comme Tomcat 5.5, définissez Shared.Loader = $ {catalina.base} / partagée / classes, $ {catalina.bas e} / partagé / lib / *. JAR.