2016-01-13 1 views
1

J'ai un problème lors du déploiement de mon application Web sur Tomcat Manager à l'aide de maven-tomcat7-plugin. Le problème semble avoir quelque chose à voir avec le transfert, mais il n'est pas déclenché tant que le transfert n'est pas terminé. Le transfert renvoie un statut ok mais le fichier transféré est 0kb et devrait être d'environ 50Mb.IllegalArgumentException lors du chargement d'un fichier war sur tomcat

Si je place manuellement le fichier war dans le dossier webapps, il est automatiquement lancé. Cependant, si j'utilise le gestionnaire gui ou le plugin, j'ai cette erreur.

INFO: Manager: Uploading WAR file to C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\spa-test.war.tmp 
jan 13, 2016 9:52:13 FM org.apache.catalina.core.ApplicationContext log 
SEVERE: Manager: managerServlet.check[/spa-test] 
java.lang.IllegalArgumentException: Header message of length [65,532] received but the packetSize is only [8,192] 
    at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:383) 
    at org.apache.coyote.ajp.AjpProcessor.receive(AjpProcessor.java:334) 
    at org.apache.coyote.ajp.AbstractAjpProcessor$SocketInputBuffer.doRead(AbstractAjpProcessor.java:1188) 
    at org.apache.coyote.Request.doRead(Request.java:438) 
    at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:290) 
    at org.apache.tomcat.util.buf.ByteChunk.substract(ByteChunk.java:449) 
    at org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:315) 
    at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:167) 
    at org.apache.catalina.manager.ManagerServlet.uploadWar(ManagerServlet.java:1609) 
    at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:723) 
    at org.apache.catalina.manager.ManagerServlet.doPut(ManagerServlet.java:456) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:653) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:190) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 

Des idées quoi faire à ce sujet?

C'est ce que mon journal stderr dit:

13-Jan-2016 09:50:49.901 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\manager has finished in 47 ms 
13-Jan-2016 09:50:49.901 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-bio-8080"] 
13-Jan-2016 09:50:49.948 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["ajp-bio-8009"] 
13-Jan-2016 09:50:49.948 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 37024 ms 
13-Jan-2016 09:52:13.949 SEVERE [ajp-bio-8009-exec-1] org.apache.coyote.ajp.AjpMessage.processHeader Invalid message received with signature 65530 

C'est ce que mon journal d'accès dit:

10.23.73.76 - userName [13/Jan/2016:10:33:13 +0100] "POST /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=<EditedOut> HTTP/1.1" 500 3840 

Voici mon fichier de configuration du serveur:

<?xml version='1.0' encoding='utf-8'?> 
<Server port="8005" shutdown="SHUTDOWN"> 
    <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> 
    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
    <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
    <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 

    <GlobalNamingResources> 
    <Resource name="UserDatabase" auth="Container" 
       type="org.apache.catalina.UserDatabase" 
       description="User database that can be updated and saved" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 
    </GlobalNamingResources> 

    <Service name="Catalina"> 
    <Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" /> 
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
    <Engine name="Catalina" defaultHost="localhost"> 
     <Realm className="org.apache.catalina.realm.LockOutRealm"> 
     <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
       resourceName="UserDatabase"/> 
     </Realm> 

     <Host name="localhost" appBase="webapps" 
      unpackWARs="true" autoDeploy="true"> 
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
       prefix="localhost_access_log" suffix=".txt" 
       pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
     </Host> 
    </Engine> 
    </Service> 
</Server> 

Si vous besoin de plus d'informations sur la configuration s'il vous plaît demander.

Merci!

Répondre

1

Le problème était que j'utilise tomcat_iis_connector isapimodule pour connecter le tomcatmanager derrière IIS. Ce gestionnaire a été configuré pour utiliser une taille de paquet de 65536. J'ai donc dû changer ma configuration de serveur Tomcat pour le connecteur AJP comme ça.

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" packetSize="65536"/> 

Ceci définit la taille de paquet acceptée maximale au même que les connecteurs iis au lieu de la valeur par défaut de 8 Mo. Voici une référence au tomcat docs pour la taille des paquets.

Cet attribut définit la taille maximale du paquet AJP en octets. La valeur maximale est 65536. Elle doit être la même que la directive max_packet_size configurée pour mod_jk. Normalement, il n'est pas nécessaire de modifier la taille maximale des paquets . Des problèmes avec la valeur par défaut ont été signalés lors de l'envoi de certificats ou de chaînes de certificats. La valeur par défaut est 8192.