Jetty 9无法恢复战争错误的上下文



由于我们将许多应用程序集中在同一台服务器上,我们有时(越来越频繁地(观察到,当我们上传jar或war时,上下文没有启动。

示例:当我们上传AcmeOne.jar时,我们获得:

FINEST |32197/0|22-01-19 15:55:04|[Scanner-0]WARN org.eclipse.jetty.webapp.WebAppContext-上下文启动失败o.e.j.w.WebAppContext@53374f78{/CLIENT_X/ACME_ ONE,file:///opt/acme/ApplicationsServer/AcmeWSServer/work/AcmeOneClientX/webapp/,UNAVAILABLE}{/opt/acme/ApplicationsServer/JJetty/V9.4.8/../../AcmeWSServer/V.14/AcmeWSServer.war}FINEST |32197/0|22-01-19 15:55:04|java.lang.IllegalArgumentException:MALFORMEDFINEST |32197/0|22-01-19 15:55:04|位于java.util.zip ZipCode.toString(ZipCoder.java:58(FINEST |32197/0|22-01-19 15:55:04|位于java.util.zip ZipFile.getZipEntry(ZipFile.java:583(FINEST |32197/0|22-01-19 15:55:04|位于java.util.zip。ZipFile.access$900(ZipFile.java:60(FINEST |32197/0|22-01-19 15:55:04|位于java.util.zip。ZipFile$ZipEntryTerator.next(ZipFile.java:539(FINEST |32197/0|22-01-19 15:55:04|位于java.util.zip。ZipFile$ZipEntryTerator.nextElement(ZipFile.java:514(FINEST |32197/0|22-01-19 15:55:04|位于java.util.zip。ZipFile$ZipEntryTerator.nextElement(ZipFile.java:495(FINEST |32197/0|22-01-19 15:55:04|位于java.util.jar。JarFile$JarEntryTerator.next(JarFile.java:257(FINEST |32197/0|22-01-19 15:55:04|位于java.util.jar JarFile$JarEntryTerator.nextElement(JarFile.java:266(FINEST |32197/0|22-01-19 15:55:04|位于java.util.jar JarFile$JarEntryTerator.nextElement(JarFile.java:247(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.jjetty.webapp.MetaInfConfiguration.getTlds(MetaInfConfiguration.java:442(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.webapp.MetaInfConfiguration.scanForTlds(MetaInfConfiguration.java:355(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.jjetty.webapp.MetaInfConfiguration.scanJars(MetaInfConfiguration.java:173(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.webapp.MetaInfConfiguration.preConfigure(MetaInfConfiguration.java:107(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.webapp.WebAppContext.preConfigure(WebAppContext.java:506(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.webapp.WebAppContext.doStart(WebAppContext.java:544(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.util.component.AbstractLifeCycle.start(AbstractLife Cycle.java:68(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:41(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.deploy.AppLifeCycle.runBindings(AppLifeCycles.java:188(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:502(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.deploy.DeploymentManager.addApp(DeploymentManager.java:150(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:180(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.deploy.provider.WebAppProvider.fileAdded(WebAppProvider.java:453(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.util.Scanner.reportAddition(Scanner.java:610(FINEST |32197/0|22-01-19 15:55:04|,网址:org.eclipse.japty.util.Scanner.reportDifferences(Scanner.java:529(FINEST |32197/0|22-01-19 15:55:04|网址:org.eclipse.japty.util.Scanner.scan(Scanner.java:392(FINEST |32197/0|22-01-19 15:55:04|在org.eclipse.japty.util.Scanner$1.run(Scanner.java:329(FINEST |32197/0|22-01-19 15:55:04|在java.util.TimerThread.mainLoop(Timer.java:555(FINEST |32197/0|22-01-19 15:55:04|在java.util.TimerThread.run(Timer.java:505(

如果我们重新启动码头。所有上下文的开头都正确。

注意:AcmeWSServer允许AcmeOne访问数据库和其他功能。

AcmeOneApplicationContext:

...
<New class="java.lang.String" id="AcmeWSServerHome">
<Arg><SystemProperty default="." name="jetty.home"/>/../../AcmeWSServer/V4.14</Arg>
</New>
<New class="java.lang.String" id="DeployDir">
<Arg><Ref id="AcmeWSServerHome"/>/../work/<Ref id="ApplicationName"/></Arg>
</New>

<!-- Context configuration -->
<Set name="war"><Ref id="AcmeWSServerHome"/>/AcmeWSServer.war</Set>
<Set name="extractWAR">true</Set>
<Set name="tempDirectory"><Ref id="DeployDir"/></Set>
<Set name="copyWebDir">true</Set>
<Set name="overrideDescriptor"><Ref id="ApplicationHome"/>/AcmeWSServer.d/override-web.xml</Set>
<Set name="extraClasspath"><Ref id="ApplicationHome"/>/Java/AcmeOne/bin/AcmeOne.jar</Set>
<Set name="welcomeFiles">
<Array type="String">
<Item>Acme.html</Item>
</Array>
</Set>
...

更新:当我们上传AcmeOne.jar时,AcmeWSServer.war没有变化。

当我们重新启动Jetty时,AcmeWSServer.war和AcmeOn.jar被正确加载。

也许是记忆问题?

FINEST|32197/0|22-01-19 15:55:04|[Scanner-0] WARN org.eclipse.jetty.webapp.WebAppContext - Failed startup of context o.e.j.w.WebAppContext@53374f78{/CLIENT_X/ACME_ONE,file:///opt/acme/ApplicationsServer/AcmeWSServer/work/AcmeOneClientX/webapp/,UNAVAILABLE}{/opt/acme/ApplicationsServer/Jetty/V9.4.8/../../AcmeWSServer/V4.14/AcmeWSServer.war} 
FINEST|32197/0|22-01-19 15:55:04|java.lang.IllegalArgumentException: MALFORMED 
FINEST|32197/0|22-01-19 15:55:04| at java.util.zip.ZipCoder.toString(ZipCoder.java:58) 
FINEST|32197/0|22-01-19 15:55:04| at java.util.zip.ZipFile.getZipEntry(ZipFile.java:583) 
FINEST|32197/0|22-01-19 15:55:04| at java.util.zip.ZipFile.access$900(ZipFile.java:60)

根据错误,您有一个损坏的JAR/WAR文件。

.../AcmeWSServer/V4.14/AcmeWSServer.war处的文件可能已损坏(在请求部署时(,Java本身无法提取该文件。

Jetty对解决这种情况无能为力。

相关内容

最新更新