2016-12-15 2 views
0

Also habe ich ein ANT-Ziel, um unsere App auf Tomcat auf einem Remote-Entwicklungsserver bereitzustellen. Das ANT-Deployment zu Tomcat-Target funktioniert 100% perfekt auf einer lokalen Tomcat-Instanz. Bei der Bereitstellung auf dem Remote-Server erhalte ich einen Fat 500-Fehler, aber die Anwendung wird tatsächlich auf dem Server bereitgestellt, und wir können sie problemlos anzeigen und verwenden, als ob keine Fehler aufgetreten wären.ANT zu Remote Tomcat Deployment wird 500

Super cool, dass es funktioniert, aber der Fehler 500 verursacht das ANT-Ziel zu sagen, dass der Build fehlgeschlagen ist. Wenn ANT sagt, dass der Build fehlgeschlagen ist, wird auch Hudson unser Build-Server sein, was bedeutet, dass wir traurige rote Punkte anstelle von fröhlichen grünen haben werden.

Wir verwenden die neueste und beste ANT mit Tomcat v9.

Unten ist der Fehler, den ich bekomme, wenn ich mein Ziel "ant deploy-dev" ausführe.


[[email protected] app.directory]$ ant deploy-dev Buildfile: /home/username/git/app.directory/build.xml Trying to override old definition of datatype resources

deploy-dev: [echo] Deploying app to: https://dev.myapp.com

BUILD FAILED /home/username/git/app.directory/build.xml:73: The following error occurred while executing this line: /home/username/git/app.directory/build.xml:146: java.io.IOException: Server returned HTTP response code: 500 for URL: https://dev.myapp.com/manager/text/deploy?path=%2Fmy-app%2F at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1840) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1441) at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254) at org.apache.catalina.ant.AbstractCatalinaTask.execute(AbstractCatalinaTask.java:254) at org.apache.catalina.ant.DeployTask.execute(DeployTask.java:194) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:396) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) at org.apache.tools.ant.Task.perform(Task.java:348) at org.apache.tools.ant.Target.execute(Target.java:435) at org.apache.tools.ant.Target.performTasks(Target.java:456) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405) at org.apache.tools.ant.Project.executeTarget(Project.java:1376) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1260) at org.apache.tools.ant.Main.runBuild(Main.java:854) at org.apache.tools.ant.Main.startAnt(Main.java:236) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112)

Total time: 3 minutes 3 seconds


Um eine Vorstellung davon zu bekommen, was läuft, ist hier die wichtige Teile des ANT build.xml.

<property environment="env"/> 
<property file="build.properties"/> 

<!-- Import --> 
<import file="${env.CATALINA_HOME}/bin/catalina-tasks.xml" optional="true"/> 

<!-- The deploy to Tomcat target --> 
<target name="deploy-local" description="Deploy the app to local Tomcat"> 
    <tomcat-deploy base-url="${url.base.local}"/> 
</target> 

<target name="deploy-dev" description="Deploy the app to dev Tomcat"> 
    <tomcat-deploy base-url="${url.base.dev}"/> 
</target> 

<target name="undeploy-local" depends="stop-local" description="Undeploy the app from local Tomcat"> 
    <tomcat-undeploy base-url="${url.base.local}"/> 
</target> 

<target name="undeploy-dev" depends="stop-dev" description="Undeploy the app from dev Tomcat"> 
    <tomcat-undeploy base-url="${url.base.dev}"/> 
</target> 

<target name="stop-local" description="Stop the app on local Tomcat"> 
    <tomcat-stop base-url="${url.base.local}"/> 
</target> 

<target name="stop-dev" description="Stop the app on dev Tomcat"> 
    <tomcat-stop base-url="${url.base.dev}"/> 
</target> 

<macrodef name="tomcat-deploy"> 
    <attribute name="base-url"/> 
    <sequential> 
     <echo>Deploying app to: @{base-url}</echo> 
     <deploy url="@{base-url}/manager/text" username="${username}" password="${password}" 
       path="/${app.name}" war="file:${war.path}.war"/> 
    </sequential> 
</macrodef> 

<macrodef name="tomcat-undeploy"> 
    <attribute name="base-url"/> 
    <sequential> 
     <echo>Un-deploying app from: @{base-url}</echo> 
     <undeploy 
       failonerror="no" 
       url="@{base-url}/manager/text" 
       username="${username}" 
       password="${password}" 
       path="/${app.name}" 
      /> 
    </sequential> 
</macrodef> 

<macrodef name="tomcat-stop"> 
    <attribute name="base-url"/> 
    <sequential> 
     <echo>Stopping the app at: @{base-url}</echo> 
     <stop url="@{base-url}/manager/text" username="${username}" 
       password="${password}" path="/${app.name}" /> 
    </sequential> 
</macrodef> 

jemand eine Idee, warum die deploy zu entfernten funktioniert, aber immer noch einen Fehler zurückgibt? Der Fehler, den ich bekomme, ist irgendwie vage, also weiß ich nicht, was ich tun könnte, um es zu debuggen.

+0

Erhalten Sie Nachrichten in den Protokolldateien des Servers? –

+0

Ich bekomme keine Serverfehler. Die App funktioniert eigentlich gut. Ich denke, es hat damit zu tun, dass der Server zu lange braucht, um die App tatsächlich zu implementieren. Scheint, dass das Ziel auf eine Erfolgsantwort wartet, und es läuft ab, bevor es es erhält. –

Antwort

0

Das Problem war der Server dauerte zu lange, um die App bereitzustellen. Irgendwo wartet das Tomcat Deploy-Ziel auf eine Antwort vom Server, dass die App bereitgestellt wurde. Leider ist der einzige Fehler der 500 und es gibt nichts weiter zu machen.

Die Lösung, ich habe Tomcat einfach mit Version 9 neu installiert, ab 8, und alles ging viel schneller an und der Build war erfolgreich.

Ich kann nicht wirklich sagen, das ist die beste Antwort, aber ich habe alles funktioniert.Hoffentlich hat jemand eines Tages eine bessere Lösung.

+0

Beachten Sie, dass Tomcat 9 noch keine stabile Version hatte. Tomcat 8.5 könnte für Sie zuverlässiger sein. –

Verwandte Themen