2016-01-13 3 views
1

У меня возникла проблема при развертывании моего веб-приложения в диспетчере tomcat с использованием maven-tomcat7-plugin. Проблема, похоже, связана с передачей, но не запускается до тех пор, пока передача не будет выполнена. Передача возвращает статус ok, но передаваемый файл равен 0kb и должен быть около 50Mb.IllegalArgumentException при загрузке файла войны в tomcat

Если я вручную разместил военный файл в папке webapps, он будет запущен автоматически. Однако, если я использую менеджер gui или плагин, я получаю эту ошибку.

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) 

Любые идеи, что с этим делать?

Это то, что говорит мой журнал STDERR:

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 

Это то, что говорит мой журнал регистрации доступа:

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 

Вот мой сервер конфигурационный файл:

<?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> 

Если вы нужно больше информации о конфигурации, пожалуйста, спросите.

Спасибо!

ответ

1

Проблема заключалась в том, что я использую isapimodule tomcat_iis_connector для подключения tomcatmanager за IIS. Этот менеджер был настроен на использование размера пакета 65536. Таким образом, мне пришлось изменить конфигурацию моего сервера tomcat для AJP-коннектора.

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

Это устанавливает максимальный принятый размер пакета в соответствии с разъемами iis, а не по умолчанию 8 МБ. Вот ссылка на tomcat docs на размер пакета.

Этот атрибут устанавливает максимальный размер пакета AJP в байтах. Максимальное значение равно 65536. Оно должно быть таким же, как директива max_packet_size , настроенная для mod_jk. Обычно нет необходимости изменять максимальный размер пакета . Проблемы со значением по умолчанию были отправлены при отправке сертификатов или цепочек сертификатов. Значение по умолчанию составляет 8192.

Смежные вопросы