Java-如何在JNLP文件中自动获取IP地址?

Java-如何在JNLP文件中自动获取IP地址?,java,jnlp,Java,Jnlp,在JNLP文件中,如何自动获取IP地址?例如: <?xml version="1.0" encoding="utf-8"?> <jnlp spec="1.0+" codebase="GET ip address here automatically" href="Test.jnlp"> 而不是手动将地址设置为:codebase=”http://10.10.10.1/“它不能那样做 您可以为10.10.10.1添加一个DNS条目,并将主机名放在该字段中,而不是IP地

在JNLP文件中,如何自动获取IP地址?例如:

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="GET ip address here automatically" href="Test.jnlp">

而不是手动将地址设置为:
codebase=”http://10.10.10.1/“

它不能那样做

您可以为
10.10.10.1
添加一个DNS条目,并将主机名放在该字段中,而不是IP地址,但它只是XML—无法从该行调用方法来运行代码并确定它应该连接到哪个IP地址。

它无法做到这一点


您可以为
10.10.10.1
添加一个DNS条目,并将主机名放在该字段中,而不是IP地址,但它只是XML—无法从该行调用方法来运行代码并确定它应该连接到哪个IP地址。

查看有关相对地址的官方文档,这可能会有所帮助(您可以完全避免指定服务器地址):

查看有关相对地址的官方文档,这可能会有所帮助(您可以完全避免指定服务器地址):

JNLP文件是一个静态资源。要做到这一点,您需要使用某种动态服务器端技术,如JSP来表示JNLP。

JNLP文件是一个静态资源。要做到这一点,您需要使用某种动态服务器端技术,如JSP来表示JNLP。

如果您将JNLP文件托管在Java Web容器(例如Tomcat)中,而不是普通的HTTP服务器(例如Apache Web服务器),则可以使用Sun提供的JNLP Servlet。一些有趣的变量是$$codebase、$$site(请参阅下面的代码)。例如,JNLP文件中的$$site将由主机ip地址及其端口替换(例如
http://10.10.10.1:8080


如果您将JNLP文件托管在Java Web容器(例如Tomcat)中,而不是普通的HTTP服务器(例如Apache Web服务器),则可以使用Sun提供的JNLP Servlet。一些有趣的变量是$$codebase、$$site(请参阅下面的代码)。例如,JNLP文件中的$$site将由主机ip地址及其端口替换(例如
http://10.10.10.1:8080


非常感谢。很抱歉,我刚刚意识到我发布的问题非常愚蠢。我所要做的就是完全删除代码库,让它正常工作。我发现到处都是JAVA文档,有时我会问一些愚蠢的问题。不用担心。我们都有不同的看法,有些人可能会觉得很明显,但另一些人会感到困惑s、 我经常遇到这种情况。非常感谢。我很抱歉,我刚刚意识到我发布的问题非常愚蠢。我所要做的就是完全删除代码库以使其正常工作。我发现到处都是JAVA文档,有时我会问一些愚蠢的问题。不用担心。我们都有不同的看法,什么可能是显而易见的对某些人来说,这让其他人感到困惑。这种情况一直发生在我身上。非常感谢。很抱歉,我刚刚意识到我发布的问题非常愚蠢。我所要做的就是完全删除代码库,让它正常工作。我发现JAVA文档到处都是,有时我会问一些愚蠢的问题。非常感谢。很抱歉,我只是我意识到我发布的问题非常愚蠢。我所要做的就是完全删除代码库以使其工作。我发现到处都是JAVA文档,有时我会问一些愚蠢的问题。
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;
}