`
can_do
  • 浏览: 263342 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过Java代码启动Jetty【programmatically start a jetty server】

阅读更多
通过Java代码启动Jetty的方式有以下几种:
【第一种】在java代码中通过标准的jetty.xml配置文件启动,示例代码如下:
EmbeddedViaXml.java
////////////////////////////////begin/////////////////////////////////
package jetty;

import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.xml.XmlConfiguration;

public class EmbeddedViaXml
{
    public static void main(String[] args)
    {
        try
        {
            // The configuration files
            List<URL> configs = new ArrayList<>();
            configs.add(new File("jetty.xml").toURI().toURL());
            configs.add(new File("jetty-plus.xml").toURI().toURL());

            // The properties
            Map<String, String> props = new HashMap<String, String>();
            props.put("jetty.home",new File(System.getProperty("user.dir")).getCanonicalPath());

            Server server = load(configs,props);
            server.start();
            server.join();
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
    }

    public static Server load(List<URL> xmlConfigUrls, Map<String, String> props) throws Exception
    {
        XmlConfiguration last = null;
        // Hold list of configured objects
        Object[] obj = new Object[xmlConfigUrls.size()];

        // Configure everything
        for (int i = 0; i < xmlConfigUrls.size(); i++)
        {
            URL configURL = xmlConfigUrls.get(i);
            XmlConfiguration configuration = new XmlConfiguration(configURL);
            if (last != null)
            {
                // Let configuration know about prior configured objects
                configuration.getIdMap().putAll(last.getIdMap());
            }
            configuration.getProperties().putAll(props);
            obj[i] = configuration.configure();
            last = configuration;
        }

        // Find Server Instance.
        Server foundServer = null;
        int serverCount = 0;
        for (int i = 0; i < xmlConfigUrls.size(); i++)
        {
            if (obj[i] instanceof Server)
            {
                if (obj[i].equals(foundServer))
                {
                    // Identical server instance found
                    continue; // Skip
                }
                foundServer = (Server)obj[i];
                serverCount++;
            }
        }

        if (serverCount <= 0)
        {
            throw new IllegalStateException("Load failed to configure a " + Server.class.getName());
        }

        if (serverCount == 1)
        {
            return foundServer;
        }

        throw new IllegalStateException(String.format("Configured %d Servers, expected 1",serverCount));
    }
}
////////////////////////////////end///////////////////////////////////


【第二种】在java代码中通过spring bean格式的jetty.xml配置文件启动,示例代码如下:
//////////////////////////////////begin///////////////////////

public static final String DEFAULT_CONFIG_URI_FOR_JETTY = "xbean:jetty.xml";

configURI4Jetty = new URI(DEFAULT_CONFIG_URI_FOR_JETTY);

if (configURI4Jetty != null) {
                    System.out.println("Loading jetty server from: "
                            + configURI4Jetty);
                    ApplicationContext context = createApplicationContext(configURI4Jetty);
                    server = (Server) context.getBean("Server");

                    server.start();
                    server.join();
                }
           

protected ApplicationContext createApplicationContext(URI config)
            throws MalformedURLException, URISyntaxException {
        String uri = config.getSchemeSpecificPart();
        if (uri.lastIndexOf('?') != -1) {
            IntrospectionSupport
                    .setProperties(this, URISupport.parseQuery(uri));
            uri = uri.substring(0, uri.lastIndexOf('?'));
        }
        Resource resource = Utils.resourceFromString(uri);
        try {
            return new ResourceXmlApplicationContext(resource) {
                @Override
                protected void initBeanDefinitionReader(
                        XmlBeanDefinitionReader reader) {
                    reader.setValidating(isValidate());
                }
            };
        } catch (FatalBeanException errorToLog) {
            throw errorToLog;
        }
    }


public static Resource resourceFromString(String uri) throws MalformedURLException {
        Resource resource;
        File file = new File(uri);
        if (file.exists()) {
            resource = new FileSystemResource(uri);
        } else if (ResourceUtils.isUrl(uri)) {
            try {
                resource = new UrlResource(ResourceUtils.getURL(uri));
            } catch (FileNotFoundException e) {
                MalformedURLException malformedURLException = new MalformedURLException(uri);
                malformedURLException.initCause(e);
                throw  malformedURLException;
            }
        } else {
            resource = new ClassPathResource(uri);
        }
        return resource;
    }
//////////////////////////////////end/////////////////////////
分享到:
评论

相关推荐

    jetty内嵌到java代码启动

    - 启动Server:调用`Server.start()`启动Jetty服务,`Server.stop()`关闭服务。 4. **示例代码** ```java Server server = new Server(8080); // 创建服务器实例,端口为8080 ServletContextHandler context = ...

    启动jetty的start.jar

    启动jetty的start.jar,此文件所在目录下增加lib,etc,context文件夹,lib下增加jetty的主jar包和jetty的util包。在etc下增加jetty的两个配置文件jetty.xml和webdefault.xml。在context下增加test.xml

    Jetty java程序指定一个端口,开通一个TCP服务

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者在Java应用程序中直接启动HTTP服务器和Servlet容器,而无需通过完整的Java EE应用服务器。本篇将详细讲解如何使用Jetty来指定一个端口,开通...

    main方法启动jetty

    标题"main方法启动jetty"指的就是通过编写一个包含main方法的Java类,调用Jetty的相关API来启动服务器。这种方式使得开发者能够自定义启动参数,便于调试和自动化部署。 **启动Jetty的基本步骤:** 1. **导入依赖*...

    shell脚本启动jetty嵌入式server

    shell脚本启动jetty嵌入式server,shell脚本启动jetty嵌入式server

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    - Jetty提供了一系列的工具和命令行工具,如`jetty-start.jar`,用于快速启动和配置Jetty服务器。 - `jetty-maven-plugin`可以集成到Maven项目中,便于开发和测试。 6. **示例代码** ```java Server server = ...

    jetty start 9.2.13 项目所需要的完整jar包,免费。jetty启动调试

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,广泛用于开发、测试和部署Web应用程序。在标题和描述中提到的是Jetty版本9.2.13,这是一个稳定且常用的版本,提供了完整的jar包,特别适用于启动和调试...

    jetty-server-9.4.8.v20171121-API文档-中文版.zip

    标签:eclipse、jetty、server、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    jetty-server-8.1.8.v20121106-API文档-中文版.zip

    标签:eclipse、jetty、server、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    jetty-server-8.1.8.v20121106-API文档-中英对照版.zip

    标签:eclipse、jetty、server、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    maven项目下用 jetty 启动热部署

    当我们使用Maven构建Java Web项目时,结合Jetty服务器,可以实现项目的热部署功能,即在开发环境中修改代码后无需重新启动服务器,改动就能实时生效,极大地提高了开发效率。 在Maven项目中启用Jetty热部署,主要...

    jetty启动器资源配置文件

    ### Jetty启动器资源配置文件详解 #### 一、概述 Jetty是一款开源的Servlet容器,由Eclipse基金会维护。它支持最新的Java EE标准,并且具备轻量级、高性能等特点,适用于开发测试环境以及生产环境中的Web应用...

    jetty所需jar包

    通常,你可以创建一个lib目录,将这些jar包放入其中,然后通过java -cp "lib/*" org.eclipse.jetty.server.Server命令启动服务器。当然,具体的命令可能根据你的项目配置有所不同。 另外,Jetty也支持通过maven或...

    jetty-server-8.1.8-API文档-中英对照版.zip

    标签:jfinal、jetty、server、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    jetty-server-9.3.19.v20170502-API文档-中文版.zip

    标签:eclipse、jetty、server、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    jetty-server-8.1.8-API文档-中文版.zip

    标签:jfinal、jetty、server、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请...

    在项目中直接启动jetty,发布自己

    标题“在项目中直接启动Jetty,发布自己”暗示了我们将在讨论如何在Java开发环境中使用Jetty服务器来运行和部署个人项目。Jetty是一个轻量级、高性能的开源HTTP服务器和Servlet容器,广泛用于快速原型开发、测试以及...

    IntelliJ+Maven+Jetty+Jrebel实现web项目java代码更改后热部署

    "IntelliJ+Maven+Jetty+Jrebel"的组合正是为了解决这一问题,实现Web项目的Java代码更改后能够自动热部署。这个解决方案集成了几个关键工具,包括: 1. **IntelliJ IDEA**: 这是一款强大的Java集成开发环境(IDE)...

    jetty+TLS PSK的java代码实例

    【标题】"jetty+TLS PSK的java代码实例"涉及了几个关键的IT知识点,主要集中在Jetty服务器、TLS(Transport Layer Security)协议以及预共享密钥(PSK,Pre-Shared Key)的安全机制上。以下是这些概念的详细解释: ...

    Java Eclipse ee集合jetty和配置

    1. 服务器配置:在 Eclipse EE 中,可以在 Server 视图中配置 Jetty 服务器的启动参数,如端口号、主机名、context root 等。 2. JVM 配置:在 Eclipse EE 中,可以在 JVM 视图中配置 JVM 的参数,如heap size、...

Global site tag (gtag.js) - Google Analytics