Maven 2 寻找Webstart Maven插件示例应用程序

Maven 2 寻找Webstart Maven插件示例应用程序,maven-2,java-web-start,sample,maven-webstart-plugin,Maven 2,Java Web Start,Sample,Maven Webstart Plugin,我正在寻找使用Webstart Maven插件的完整应用程序的源代码 有什么想法吗?我在一个涉及嵌入式tomcat服务器的概念框架中尝试了webstart插件。该插件绑定到包阶段,需要很长时间才能执行,我建议从命令行手动调用它。它在目标目录中生成一个包含jnlp文件和所有依赖项的zip文件。然后可以提取该文件并将其放在Web服务器上。pom中的url应指向服务器上的此路径。启动时,应用程序在本地主机端口8080上运行一个tomcat服务器,该服务器带有一个简单的servlet,该servlet仅

我正在寻找使用Webstart Maven插件的完整应用程序的源代码


有什么想法吗?

我在一个涉及嵌入式tomcat服务器的概念框架中尝试了webstart插件。该插件绑定到包阶段,需要很长时间才能执行,我建议从命令行手动调用它。它在目标目录中生成一个包含jnlp文件和所有依赖项的zip文件。然后可以提取该文件并将其放在Web服务器上。pom中的url应指向服务器上的此路径。启动时,应用程序在本地主机端口8080上运行一个tomcat服务器,该服务器带有一个简单的servlet,该servlet仅以字符串形式返回请求的路径

让我知道这是否适合你

这是项目的pom,插件配置主要是从文档中复制的

这是位于
src/main/java/net/jhorstmann/embeddedtomcat7/App.java的主类

package net.jhorstmann.embeddedtomcat7;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Wrapper;
import org.apache.catalina.startup.Tomcat;

public class App {

    public static void main(String[] args) throws LifecycleException, ServletException, IOException {
        File tmpDir = new File(System.getProperty("java.io.tmpdir"));
        File webappDir = new File(tmpDir, "embeddedtomcat7");
        webappDir.mkdir();

        final Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);
        tomcat.setBaseDir(tmpDir.getAbsolutePath());
        tomcat.getConnector().setURIEncoding("UTF-8");

        String contextPath = "/";

        Context context = tomcat.addContext(contextPath, webappDir.getAbsolutePath());
        Wrapper wrapper = tomcat.addServlet(contextPath, "Test", new TestServlet());
        //Wrapper wrapper = tomcat.addServlet(contextPath, "Async", new AsyncServlet());
        //wrapper.setAsyncSupported(true);

        wrapper.addMapping("/*");

        tomcat.start();

        tomcat.getServer().await();
    }
}
package net.jhorstmann.embeddedtomcat7;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html; charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("<h1>" + req.getPathInfo() + "</h1>");
        writer.close();
    }
}
最后是一个servlet,位于
src/main/java/net/jhorstmann/embeddedtomcat7/TestServlet.java

package net.jhorstmann.embeddedtomcat7;

import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Wrapper;
import org.apache.catalina.startup.Tomcat;

public class App {

    public static void main(String[] args) throws LifecycleException, ServletException, IOException {
        File tmpDir = new File(System.getProperty("java.io.tmpdir"));
        File webappDir = new File(tmpDir, "embeddedtomcat7");
        webappDir.mkdir();

        final Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);
        tomcat.setBaseDir(tmpDir.getAbsolutePath());
        tomcat.getConnector().setURIEncoding("UTF-8");

        String contextPath = "/";

        Context context = tomcat.addContext(contextPath, webappDir.getAbsolutePath());
        Wrapper wrapper = tomcat.addServlet(contextPath, "Test", new TestServlet());
        //Wrapper wrapper = tomcat.addServlet(contextPath, "Async", new AsyncServlet());
        //wrapper.setAsyncSupported(true);

        wrapper.addMapping("/*");

        tomcat.start();

        tomcat.getServer().await();
    }
}
package net.jhorstmann.embeddedtomcat7;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html; charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("<h1>" + req.getPathInfo() + "</h1>");
        writer.close();
    }
}
package net.jhorstmann.embeddedtomcat7;
导入java.io.IOException;
导入java.io.PrintWriter;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
公共类TestServlet扩展了HttpServlet{
@凌驾
受保护的void doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
相应的setContentType(“text/html;charset=utf-8”);
PrintWriter writer=resp.getWriter();
writer.println(“+req.getPathInfo()+”);
writer.close();
}
}

关于这个插件的一些注意事项(它的文档非常糟糕):

除非您指定它,否则它不会使用template.vm文件,如

roll gen template.vm

为了制造战争:

如果您想使用JnlpDownloadServlet(java提供的标准版本)来提供文件,而不是上面的代码(并让插件生成一个可供使用的version.xml文件,等等),基本上您需要创建一个war类型的新项目,并以
jnlp下载servlet目标为目标(它似乎不支持使用当前pom项目中的类创建war)然后,您将使用
部分代替单个
部分,该部分可以列出多个jar依赖项。您可能还需要修改web.xml文件。 有一个pom的例子


如果您有其他评论,请随意编辑,这是一个社区wiki。

搜索Sonatype公共存储库时,不会显示任何依赖它的内容:(谢谢!我将看一看代码。运行它的命令是什么?在上面的pom.xml文件中需要注意两件事:第一件是
,第二件是
jnlp内联
。我在查找main类时遇到了这个插件的问题。我曾尝试将
jnlp
更改为
jnlp内联
,但它没有成功。)没有执行任何操作。这是因为
jnlp
不需要阶段,但
jnlp inline
需要阶段。