Geteilt jar-Dateien in apache-tomcat-6.0.20
Ich bin ziemlich neu bei Zeugen Jehovas.
Ich habe eine web-Anwendung ( mehrere web-services), die Bereitstellung der Verwendung von tomcat-6.0.20 auf einem linux-system.
Alles ok ist, wenn ich generieren .Krieg-Datei mit allen verwendeten Bibliotheken innerhalb und steckte es in das webapps-Verzeichnis, aber ich möchte diese Gläser geteilt, und die .war-Datei selbst ist viel zu groß.
Zuerst habe ich versucht die intuitive Art und Weise - ich habe einen link ( WEB-INF/lib ) in das Verzeichnis mit den jars, aber seltsamerweise ist es nicht implementiert ( es beginnt, wenn das Verzeichnis nicht auf einen link ):
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)
Danach habe ich die $CATALINA_HOME/shared/lib-Verzeichnis, und zog die Gläser gibt es ( habe ich gelöscht WEB-INF/lib ) und es zeigt immer noch den gleichen Fehler - es scheint, dass tomcat nicht auf der Suche für die Gläser woanders als im WEB-INF/lib-Verzeichnis. Aber auf der anderen Seite - warum sollte erstellen Sie einen symbolischen link einen Unterschied machen?
Meine CATALINA_HOME und JRE_HOME vars scheint zu Stimmen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, setzen die gemeinsam genutzte jar-Dateien in $CATALINA_HOME/lib? Es sagt, dass ". Normalerweise, Anwendung Klassen sollten NICHT hier gestellt werden", aber klingt wie Sie es eigentlich wollen, in Ihrem Fall.
Die $CATALINA_HOME/shared/lib scheint Weg zu sein in 6.0 (er war dort in 5.5).
shared.loader
Eigenschaft in/conf/catalina.properties
. Sie können eine beliebige lokale Festplatte die Datei-system-Pfad(s) dort.Hinzufügen ein bisschen mehr detail auf diesem.
Shared Class loader
Freigegebenen Ressourcen in allen web-Anwendungen und nicht von Tomcat-interne Klassen.Wenn Tomcat 6 erfordert eine gemeinsame Bibliothek. Passen Sie $CATALINA_HOME/conf/catalina.Eigenschaften und setzen Sie ein Gemeinschaftsbad.loader=${catalina.home}/shared/lib/*.jar
Gebilligt Bibliotheken
Update der java-Plattform und die Einführung einer neuen version einer bestimmten Bibliothek, die in der standard-distribution, man kann fügen Sie die Bibliothek /lib/endorsed oder legen Sie die systemweite Eigenschaft java.gebilligt.dirs Wenn Tomcat 6 erfordert eine gutgeheißene Bibliothek. Mehrere Strategien können eingesetzt werden, integrieren die erforderlichen gebilligt Bibliothek
In Tomcat 6, der Inhalt
$CATALINA_HOME/lib
zur Verfügung gestellt werden, um die "Gemeinsamen" class loader (siehe http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html). Dieshared/lib
Verzeichnis Tomcat 5.5 verwendet zu haben, nicht lange existieren.Allerdings würde ich gerne wissen, welche Gläser Sie versuchen, es genau wie der Fall des JAX-WS (oder Metro), die "Besondere". Auch, was das JDK benutzt du?
Update: Wie gesagt, der Fall der U-Bahn ist etwas besonderes. Um es zu installieren, kopieren webservices-rt.jar, webservices-tools.jar, webservices-extra.jar, webservices-extra-api.jar in
$CATALINA_HOME/lib
. Aber webservices-api.jar und jsr173_api.jar sollte gehen$CATALINA_HOME/endorsed
. Tatsächlich, dies ist, was diemetro-on-tomcat.xml
ant-Skript zur Verfügung gestellt, die in der U-Verteilung hat (und ich würde empfehlen, ihn zu imitieren).