如何使用JNLP参数变量(How to use variables in JNLP argument

2019-10-30 03:00发布

具有下面的示例JNLP:

<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="$$codebase" href="$$name">
    <information>
        <title>Some Example</title>
        <vendor>Some Sample Vendor</vendor>
        <homepage href="http://www.somesamplevendorhomepage.com"/>
        <description>Some Sample Description</description>
        <icon kind="splash" href="link_to_some_splash.jpg"/>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <update check="always" policy="always"/> 
    <application-desc main-class="com.some.sample.Main">
        <argument>--URL=SAMPLE_DB_NAME=http://localhost:<db_port>/webapplication/creds/auth</argument>
        <argument>--UserTimeout=350</argument> 
    </application-desc>
    <resources>
        <j2se version="1.7+" />
        <jar href="com.some.sample_1.0.0.jar"/>
        .
        .
        .
    </resources>
</jnlp>

(请忽略格式化或其他不一致-唯一重要的部分是参数部分)

具有参数标记中的变量DB_PORT,有没有办法执行与javaws的 JNLP中时,一个值传递给这个变量?

例如:javaws的/path/to/sample.jnlp 31022


编辑:

JNLP下载JAR来下的应用程序数据\ LocalLow \太阳\的Java \部署\缓存位于(在Windows上)的缓存文件夹。 有没有办法使用下载JAR文件(我的应用程序有多个JAR文件),以有办法来执行应用程序直接提供参数下载JAR的方法吗?

例如:

jar -jar app.jar --URL=SAMPLE_DB_NAME=http://localhost:<db_port>/webapplication/creds/auth

PS:我的理解是存储在缓存文件夹中的文件有一个计算生成的名称和他们没有.jar扩展名。 但是从Java控制面板GUI或用“javaws的-viewer” CMD / PS我能够确定作为JNLP文件并启动它。 我在想,如果有使用一些JAR文件来启动应用程序或创建也许一个“父”之一,为了能够将参数传递给它的方式。

Answer 1:

文档似乎有意缺乏关于这一主题,但文档建议通过命令行参数的优选的方法javaws可执行文件是通过‑userConfig标志。

javaws /path/to/sample.jnlp -userConfig port 31022

文档不提供这方面的例子。 我甚至GitHub上搜索了javaws userConfig ,只得到了结果的少数 ,因此这似乎是一个很少使用的功能。

由于您的问题具体询问关于<port>包含在另一个变量中的变量,这是不是直接支持。 你反而会需要找到一种方法,通配符或paramaterize的<port>使用一个额外的变量和一些搜索/更换主类中,假设你有访问源。 如果您没有访问源代码,你会被卡住手写的JNLP,它可以有,如果它是一个需要额外的工作签名的文件 。



文章来源: How to use variables in JNLP arguments