Если вы размещаете файл JNLP в веб-контейнере Java (например, Tomcat) вместо обычного HTTP-сервера (например, веб-сервер Apache), вы можете использовать сервлет JNLP, предоставленный Sun https://stackoverflow.com/a/7593088/418439. Некоторые интересные переменные: $$кодовая база, сайт $$ (см. код ниже).Например, сайт $$ в файле JNLP будет заменен IP-адресом хост-машины и его портом (например, http://10.10.10.1:8080
)
private String specializeJnlpTemplate(HttpServletRequest request, String respath, String jnlpTemplate) {
String urlprefix = getUrlPrefix(request);
int idx = respath.lastIndexOf('/'); //
String name = respath.substring(idx + 1); // Exclude /
String codebase = respath.substring(0, idx + 1); // Include /
jnlpTemplate = substitute(jnlpTemplate, "$$name", name);
// fix for 5039951: Add $$hostname macro
jnlpTemplate = substitute(jnlpTemplate, "$$hostname",
request.getServerName());
jnlpTemplate = substitute(jnlpTemplate, "$$codebase", urlprefix + request.getContextPath() + codebase);
jnlpTemplate = substitute(jnlpTemplate, "$$context", urlprefix + request.getContextPath());
// fix for 6256326: add $$site macro to sample jnlp servlet
jnlpTemplate = substitute(jnlpTemplate, "$$site", urlprefix);
return jnlpTemplate;
}
.