We have a spring-enabled java desktop application started through Java Web Start.
The JNLP is properly created and downloaded but in the server http logs we see 404 errors on download on some unexisting libraries (org.springframework.core.jar and org.springframework.beans.jar):
127.0.0.1 - - [04/Nov/2011:17:01:16 +0100] "GET /akct/client/management.jnlp HTTP/1.1" 200 4044
127.0.0.1 - - [04/Nov/2011:17:01:17 +0100] "GET /akct/client/slf4j-log4j12.jar?version-id=1.6.1 HTTP/1.1" 200 11558
127.0.0.1 - - [04/Nov/2011:17:01:17 +0100] "GET /akct/client/slf4j-api.jar?version-id=1.5.11 HTTP/1.1" 200 26610
127.0.0.1 - - [04/Nov/2011:17:01:17 +0100] "GET /akct/client/log4j.jar?version-id=1.2.16 HTTP/1.1" 200 502892
127.0.0.1 - - [04/Nov/2011:17:01:17 +0100] "GET /akct/client/Commons-Model.jar?version-id=0.1.91-AKCT-p2-20111103.145743-8 HTTP/1.1" 200 486353
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-expression.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 180014
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-security-core.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 331637
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-core.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 408258
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-asm.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 56183
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/commons-logging.jar?version-id=1.1.1 HTTP/1.1" 200 64326
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-context.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 717160
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/spring-aop.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 344857
127.0.0.1 - - [04/Nov/2011:17:01:19 +0100] "GET /akct/client/aopalliance.jar?version-id=1.0 HTTP/1.1" 200 6154
127.0.0.1 - - [04/Nov/2011:17:01:20 +0100] "GET /akct/client/spring-beans.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 587284
127.0.0.1 - - [04/Nov/2011:17:01:20 +0100] "GET /akct/client/spring-tx.jar?version-id=3.0.5.RELEASE HTTP/1.1" 200 251407
127.0.0.1 - - [04/Nov/2011:17:01:20 +0100] "GET /akct/client/aspectjrt.jar?version-id=1.6.8 HTTP/1.1" 200 127288
127.0.0.1 - - [04/Nov/2011:17:01:20 +0100] "GET /akct/client/aspectjweaver.jar?version-id=1.6.8 HTTP/1.1" 200 1696730
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/xstream.jar?version-id=1.3.1 HTTP/1.1" 200 460880
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/xpp3_min.jar?version-id=1.1.4c HTTP/1.1" 200 26565
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/commons-lang.jar?version-id=2.6 HTTP/1.1" 200 296399
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/commons-io.jar?version-id=2.0.1 HTTP/1.1" 200 169261
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/commons-collections.jar?version-id=3.1 HTTP/1.1" 200 588300
127.0.0.1 - - [04/Nov/2011:17:01:21 +0100] "GET /akct/client/hibernate-jpa-2.0-api.jar?version-id=1.0.0.Final HTTP/1.1" 200 115851
127.0.0.1 - - [04/Nov/2011:17:01:22 +0100] "GET /akct/client/javassist.jar?version-id=3.12.0.GA HTTP/1.1" 200 662723
127.0.0.1 - - [04/Nov/2011:17:01:22 +0100] "GET /akct/client/annotations.jar?version-id=1.3.9 HTTP/1.1" 200 17850
127.0.0.1 - - [04/Nov/2011:17:01:22 +0100] "GET /akct/client/joda-time.jar?version-id=1.6.2 HTTP/1.1" 200 595792
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/jaxrs-api.jar?version-id=2.1.0.GA HTTP/1.1" 200 52088
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/resteasy-jaxrs.jar?version-id=2.1.0.GA HTTP/1.1" 200 577827
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/jsr250-api.jar?version-id=1.0 HTTP/1.1" 200 7874
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/scannotation.jar?version-id=1.0.2 HTTP/1.1" 200 20695
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/activation.jar?version-id=1.1 HTTP/1.1" 200 67341
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/commons-httpclient.jar?version-id=3.1 HTTP/1.1" 200 320021
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/commons-codec.jar?version-id=1.2 HTTP/1.1" 200 32477
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/httpclient.jar?version-id=4.0.3 HTTP/1.1" 200 313261
127.0.0.1 - - [04/Nov/2011:17:01:23 +0100] "GET /akct/client/httpcore.jar?version-id=4.0.1 HTTP/1.1" 200 186911
127.0.0.1 - - [04/Nov/2011:17:01:25 +0100] "GET /akct/client/jcip-annotations.jar?version-id=1.0 HTTP/1.1" 200 3698
127.0.0.1 - - [04/Nov/2011:17:01:25 +0100] "GET /akct/client/ehcache-core.jar?version-id=2.3.1 HTTP/1.1" 200 704462
127.0.0.1 - - [04/Nov/2011:17:01:25 +0100] "GET /akct/client/tinylaf.jar?version-id=1.4.0 HTTP/1.1" 200 713441
127.0.0.1 - - [04/Nov/2011:17:01:25 +0100] "GET /akct/client/swingx-core.jar?version-id=1.6.2-2 HTTP/1.1" 200 1531692
127.0.0.1 - - [04/Nov/2011:17:01:25 +0100] "GET /akct/client/Commons-Model.jar?version-id=0.1.91-AKCT-p2-SNAPSHOT¤t-version-id=0.1.91-AKCT-p2-20111103.145743-8 HTTP/1.1" 200 171
127.0.0.1 - - [04/Nov/2011:17:01:26 +0100] "GET /akct/client/hibernate-entitymanager.jar?version-id=3.6.0.Final HTTP/1.1" 200 443722
127.0.0.1 - - [04/Nov/2011:17:01:26 +0100] "GET /akct/client/hibernate-core.jar?version-id=3.6.0.Final HTTP/1.1" 200 3249462
127.0.0.1 - - [04/Nov/2011:17:01:26 +0100] "GET /akct/client/antlr.jar?version-id=2.7.6 HTTP/1.1" 200 458130
127.0.0.1 - - [04/Nov/2011:17:01:27 +0100] "GET /akct/client/dom4j.jar?version-id=1.6.1 HTTP/1.1" 200 326649
127.0.0.1 - - [04/Nov/2011:17:01:27 +0100] "GET /akct/client/hibernate-commons-annotations.jar?version-id=3.2.0.Final HTTP/1.1" 200 77564
127.0.0.1 - - [04/Nov/2011:17:01:27 +0100] "GET /akct/client/jta.jar?version-id=1.1 HTTP/1.1" 200 17702
127.0.0.1 - - [04/Nov/2011:17:01:27 +0100] "GET /akct/client/cglib.jar?version-id=2.2 HTTP/1.1" 200 297304
127.0.0.1 - - [04/Nov/2011:17:01:27 +0100] "GET /akct/client/asm.jar?version-id=3.1 HTTP/1.1" 200 45875
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:36 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.beans.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
127.0.0.1 - - [04/Nov/2011:17:01:37 +0100] "GET /akct/client/org.springframework.core.jar HTTP/1.1" 404 950
From the timestamp gap (+/- 10s), I suspect that the download occurs when the spring context loads. But I can’t figure out why.
Any suggestion?
Edit:
It’s probably worth noting that this behavior is not a blocking issue: the app works correctly. However, the server log pretty quickly fills with 404s.
Here is the JNLP file downloaded from the server. I’m pretty confident it is ok (checked it with JaNeLA already), and it sure doesn’t include the 404’d libs.
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://localhost:8180/akct/client/" href="management.jnlp">
<information>
<title>AKCT 1.0.2-SNAPSHOT</title>
<vendor>VENDOR</vendor>
<description kind="one-line">NewSoft AKCT</description>
<offline-allowed/>
<shortcut>
<desktop/>
</shortcut>
</information>
<update check="always" policy="always"/>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+" initial-heap-size="64m" max-heap-size="512m" />
<property name="jnlp.versionEnabled" value="true" />
<property name="sun.java2d.d3d" value="false"/>
<property name="language" value="en"/>
<jar href="AKCT-Client-Base.jar" version="1.0.2-20111104.160339-19" main="true"/>
<jar href="AKCT-Model.jar" version="1.0.2-SNAPSHOT"/>
<jar href="Commons-Model.jar" version="0.1.91-AKCT-p2-20111103.145743-8"/>
<jar href="slf4j-log4j12.jar" version="1.6.1"/>
<jar href="slf4j-api.jar" version="1.5.11"/>
<jar href="log4j.jar" version="1.2.16"/>
<jar href="spring-security-core.jar" version="3.0.5.RELEASE"/>
<jar href="spring-expression.jar" version="3.0.5.RELEASE"/>
<jar href="spring-core.jar" version="3.0.5.RELEASE"/>
<jar href="spring-asm.jar" version="3.0.5.RELEASE"/>
<jar href="commons-logging.jar" version="1.1.1"/>
<jar href="spring-context.jar" version="3.0.5.RELEASE"/>
<jar href="spring-aop.jar" version="3.0.5.RELEASE"/>
<jar href="aopalliance.jar" version="1.0"/>
<jar href="spring-beans.jar" version="3.0.5.RELEASE"/>
<jar href="spring-tx.jar" version="3.0.5.RELEASE"/>
<jar href="aspectjrt.jar" version="1.6.8"/>
<jar href="aspectjweaver.jar" version="1.6.8"/>
<jar href="xstream.jar" version="1.3.1"/>
<jar href="xpp3_min.jar" version="1.1.4c"/>
<jar href="commons-lang.jar" version="2.6"/>
<jar href="commons-io.jar" version="2.0.1"/>
<jar href="commons-collections.jar" version="3.1"/>
<jar href="hibernate-jpa-2.0-api.jar" version="1.0.0.Final"/>
<jar href="javassist.jar" version="3.12.0.GA"/>
<jar href="annotations.jar" version="1.3.9"/>
<jar href="joda-time.jar" version="1.6.2"/>
<jar href="jaxrs-api.jar" version="2.1.0.GA"/>
<jar href="resteasy-jaxrs.jar" version="2.1.0.GA"/>
<jar href="scannotation.jar" version="1.0.2"/>
<jar href="jsr250-api.jar" version="1.0"/>
<jar href="activation.jar" version="1.1"/>
<jar href="commons-httpclient.jar" version="3.1"/>
<jar href="commons-codec.jar" version="1.2"/>
<jar href="httpclient.jar" version="4.0.3"/>
<jar href="httpcore.jar" version="4.0.1"/>
<jar href="jcip-annotations.jar" version="1.0"/>
<jar href="swingx-core.jar" version="1.6.2-2"/>
<jar href="ehcache-core.jar" version="2.3.1"/>
<jar href="tinylaf.jar" version="1.4.0"/>
<jar href="Commons-Model.jar" version="0.1.91-AKCT-p2-SNAPSHOT"/>
<jar href="hibernate-entitymanager.jar" version="3.6.0.Final"/>
<jar href="hibernate-core.jar" version="3.6.0.Final"/>
<jar href="antlr.jar" version="2.7.6"/>
<jar href="dom4j.jar" version="1.6.1"/>
<jar href="hibernate-commons-annotations.jar" version="3.2.0.Final"/>
<jar href="jta.jar" version="1.1"/>
<jar href="cglib.jar" version="2.2"/>
<jar href="asm.jar" version="3.1"/>
</resources>
<application-desc main-class="be.goca.akct.core.domain.swing.Management">
<argument>central1</argument>
<argument>1.0.1</argument>
<argument>application.levelCode=CL;application.locationIdentifier=1;application.locationName=central1;application.locationAppServer=http://localhost:8180/akct/services;application.parentLevelCode=;application.parentLocationIdentifier=;application.parentLocationName=;application.parentLocationAppServer=;application.externalLibPath=C:/projects/GOCA/application/AKCT-Rules/src/test/resources;application.rulesLibraryPrefix=AKCT-RuleTest-v;application.fallbackAppServer=http://localhost:8180/akct/services</argument>
</application-desc>
</jnlp>
This issue is caused by the conjunction of two things :
spring beans
We ended up using the simpler timestamp-based solution (after patching JBoss VFS so that the last-modified timestamp of files is not overridden at each server reboot)