Hi I'm using the webstart-maven-plugin/jnlp-download-servlet.
It works great with Sun's "javaws", but when trying with the open source
alternative Netx (http://jnlp.sourceforge.net/netx) it fails to download
the jar-resources due to that netx don't provide a "version-id"
query-parameter to the download-URL, hence the jnlp-download-servlet is
unable to find and download the requested jar-resource.
Has anyone stumbled over this problem? Could a solution be that if no
version-id is provided, the servlet just download the latest jar?
pls take a look at the attached diffs (basepath:
http://svn.codehaus.org/mojo/trunk/mojo/webstart) for a possible solution...
rgds
- Joachim
Index: webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/JnlpDownloadServlet.java
===================================================================
--- webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/JnlpDownloadServlet.java (revision 11436)
+++ webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/JnlpDownloadServlet.java (working copy)
@@ -36,12 +36,15 @@
package jnlp.sample.servlet;
-import java.io.*;
-import java.util.*;
-import java.net.*;
-import javax.servlet.*;
-import javax.servlet.http.*;
+import java.io.IOException;
+import java.util.ResourceBundle;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
/**
* This Servlet class is an implementation of JNLP Specification's
* Download Protocols.
@@ -222,8 +225,10 @@
}
// Lookup resource
JnlpResource jnlpres = new JnlpResource(getServletContext(), dreq.getPath());
- if (!jnlpres.exists()) {
+ if (!jnlpres.exists()) {
+ if ( (jnlpres = _resourceCatalog.lookupResource(dreq)) == null ){
throw new ErrorResponseException(DownloadResponse.getNoContentResponse());
+ }
}
return jnlpres;
}
Index: webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/ResourceCatalog.java
===================================================================
--- webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/ResourceCatalog.java (revision 11436)
+++ webstart-jnlp-servlet/src/main/java/jnlp/sample/servlet/ResourceCatalog.java (working copy)
@@ -35,18 +35,22 @@
*/
package jnlp.sample.servlet;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.ArrayList;
-import java.io.File;
-import java.io.BufferedInputStream;
+
import javax.servlet.ServletContext;
-import javax.xml.parsers.*;
-import org.xml.sax.*;
-import org.w3c.dom.*;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import jnlp.sample.util.VersionID;
import jnlp.sample.util.VersionString;
-import jnlp.sample.util.VersionID;
+import org.w3c.dom.Document;
+import org.xml.sax.SAXParseException;
+
public class ResourceCatalog {
public static final String VERSION_XML_FILENAME = "version.xml";
@@ -189,7 +193,7 @@
if (!name.equals(jnlpres.getName())) {
return DownloadResponse.ERR_10_NO_RESOURCE;
}
- if (!vs.contains(vid)) {
+ if (!vs.isEmpty() && !vs.contains(vid)) {
return DownloadResponse.ERR_11_NO_VERSION;
}
if (!prefixMatchLists(jnlpres.getOSList(), dreq.getOS())) {
Index: webstart-jnlp-servlet/src/main/java/jnlp/sample/util/VersionString.java
===================================================================
--- webstart-jnlp-servlet/src/main/java/jnlp/sample/util/VersionString.java (revision 11436)
+++ webstart-jnlp-servlet/src/main/java/jnlp/sample/util/VersionString.java (working copy)
@@ -104,6 +104,10 @@
}
return sb.toString();
}
+
+ public boolean isEmpty() {
+ return _versionIds.isEmpty();
+ }
}
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email