`
louisling
  • 浏览: 143079 次
  • 性别: Icon_minigender_1
  • 来自: ZhuHai
社区版块
存档分类
最新评论

Start Jetty Server

    博客分类:
  • Web
阅读更多
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;

/**
 * Start Jetty Server(Servlet container) 
 * Dependencies:
 *   jetty.jar, jetty-util.jar, servlet-api-2.5.6.jar
 *   (/jsp-2.1) core.jar, jsp-2.1.jar, jsp-api-2.1.jar
 * @author louis
 */
public class JettyServer {
    static Map<Integer, Server> portServers = new HashMap<Integer, Server>();
    static Map<Integer, List<WebAppContext>> webAppContextLists = new HashMap<Integer, List<WebAppContext>>();

    public static void main(String args[]) throws Exception {
        //http://localhost:8088/CxfHello/HelloWorld?wsdl
        deployWebApp("web", "/CxfHello", 8088);

        //http://localhost:8080/web-sample1
        deployWebApp("C:/temp/web-sample1.war", "/web-sample1", 8080);

        //http://localhost:8080/web-sample2
        deployWebApp("C:/temp/web-sample2/web", "/web-sample2", 8080);

        startServer();
    }

    static void startServer() throws Exception {
        long startTime = System.currentTimeMillis();

        for (Integer port : portServers.keySet()) {
            Server server = portServers.get(port);

            List<WebAppContext> webAppContexts = webAppContextLists.get(port);
            Handler[] handlers1 = webAppContexts.toArray(new Handler[webAppContexts.size()]);

            //Add DefaultHandler
            Handler[] handlers = new Handler[handlers1.length + 1];
            System.arraycopy(handlers1, 0, handlers, 0, handlers1.length);
            handlers[handlers.length - 1] = new DefaultHandler();

            HandlerCollection handlerCollection = new HandlerCollection();
            handlerCollection.setHandlers(handlers);
            server.setHandler(handlerCollection);

            server.start();
        }

        System.out.printf("Server started in %.3f seconds. %n", ((double) (System.currentTimeMillis() - startTime)) / 1000);
    }

    static void deployWebApp(String war, String contextPath, int port) throws Exception {
        Server server = portServers.get(port);
        
        //1) Set Connector/port
        if (server == null) {
            server = new Server();
            SelectChannelConnector connector = new SelectChannelConnector();
            connector.setPort(port);
            server.setConnectors(new Connector[] { connector });
            
            portServers.put(port, server);
        }

        //2) Set Context 'Context Path' and 'War'
        WebAppContext webAppContext = new WebAppContext();
        webAppContext.setContextPath(contextPath);
        //It can be war file's path or webapp directory
        webAppContext.setWar(war);

        List<WebAppContext> webAppContexts = webAppContextLists.get(port);
        if (webAppContexts == null) {
            webAppContexts = new ArrayList<WebAppContext>();
            webAppContextLists.put(port, webAppContexts);
        }
        webAppContexts.add(webAppContext);
        
        System.out.printf("[%s] is ready...%n", contextPath);
    }
}
分享到:
评论

相关推荐

    jetty嵌入式Httpserver

    5. 启动服务器:调用`Server`对象的`start()`方法,服务器就开始监听指定端口并接受连接。 6. 注册Servlet:如果需要处理Servlet,我们需要将Servlet实例注册到`ServletContextHandler`中,通过`ServletHolder`来...

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

    它提供了Server类,是所有Jetty服务器实例的基础。 2. **jetty-util-9.2.13.v20150730.jar**:这个库包含了各种通用的工具类和实用方法,对其他Jetty模块提供支持,如线程池管理、日志处理等。 3. **jetty-...

    jetty 适合jdk1.8用的服务器

    3. **配置文件**:如`start.ini`或`jetty.xml`,用于配置Jetty服务器的行为。 4. **模块**:各个功能模块,如HTTP服务器、WebSocket、JMX监控等,可以根据需求选择加载。 5. **示例应用程序**:帮助开发者了解如何...

    jetty-jdk7使用版本

    通过修改jetty-base目录下的start.ini或web.xml文件,可以定制服务器的行为,比如设置端口号、添加部署应用等。 3. 启动与停止:使用Java命令行启动Jetty非常简单,只需指定jetty-home目录,例如: ``` java -jar...

    jetty各个版本下载

    Jetty的配置相对简单,主要通过修改`start.ini`或`jetty.xml`文件来定制服务器行为。你可以设置端口、线程池大小、日志配置等。此外,Jetty还支持热部署,这意味着你可以在不重启服务器的情况下更新Web应用。 6. *...

    jetty源码剖析

    1. 启动 Jetty server:Jetty server 是 Jetty 的核心组件,负责处理请求和响应。 2. 加载配置文件:Jetty 通过读取配置文件来确定启动参数和组件配置。 3. 初始化组件:Jetty 初始化组件,包括 connector、handler...

    jetty嵌入Web编程多种实现方式案例

    使用Jetty Server API是最基础的嵌入方式,通过创建Server对象,配置Connector(连接器)来监听端口,然后添加Handler(处理器)来处理请求。例如,可以创建一个简单的HTTP服务器,监听8080端口: ```java ...

    jetty9.4.11+jetty在idea上的配置教程

    Server server = new Server(Integer.parseInt(System.getProperty("jetty.port"))); WebAppContext context = new WebAppContext(); context.setWar("path/to/your/webapp"); // 替换为你的Web应用目录 context...

    在项目中集成jetty server步骤解析

    启动 Jetty 服务器需要使用 Server.start() 方法,代码如下: ```java server.start(); ``` 启动 Jetty 服务器后,服务器将开始监听端口号, 并等待客户端的请求。 第六步:停止 Jetty 服务器 停止 Jetty 服务器...

    Jetty嵌入项目代码中示例

    Jetty嵌入项目代码中示例,现我有一示例项目 e:/workspace/web-demo(称为project_home)...把${jetty_home}/start.jar复制到${project_home}/jetty目录下。 接下来在${project_home}/jetty/contexts目录下加一个文件。

    利用Jetty服务器开发web应用例程

    server.start(); server.join(); } } ``` 在这个例子中,我们创建了一个Jetty服务器,监听8080端口,并配置了一个Servlet上下文。`ServletHolder`用于注册我们的`HelloServlet`,并指定其处理所有URL(`"/*"`)...

    jetty web server

    4. **启动Jetty**:执行解压后的目录中的start.jar或相应的启动脚本来启动Jetty服务器。 需要注意的是,虽然这个版本较旧,但理解其工作原理对于学习Jetty的基础知识仍然是有价值的。不过,为了获得最新的功能和...

    jetty内嵌到java代码启动

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

    Android-I-Jetty服务器

    import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class AndroidJettyServer { public void start...

    jetty8打包成服务(支持32,64位系统)

    "C:\Program Files\Java\jre1.8.0_XX\bin\server\jvm.dll" -Djava.class.path=start.jar -Djetty.home="C:\jetty8" -Djetty.base="C:\jetty8" -jar start.jar --module=http %* ``` 2. 创建服务: ``` sc create...

    jetty在eclipse中配置

    右键点击服务器,选择"Start"或"Debug",Eclipse会启动Jetty服务器并加载你的Web项目。你可以在浏览器中访问`http://localhost:8080/项目名`来查看应用。如果出现错误,Eclipse的Console视图和Error Log视图会有...

    main方法启动jetty

    **标签"jetty start"** 暗示了这个过程主要是关于启动Jetty服务器的,这可能是一个简单的脚本,用于快速启动和停止Jetty服务,便于开发和测试。 在给定的压缩包文件`StartJetty`中,可能包含了实现上述步骤的Java源...

    jetty 嵌入式开发源码

    在源码中,你将看到如何通过`Server`实例来配置端口、线程池、SSL等参数,并通过调用`start()`方法启动服务器。这对于理解Jetty如何运行非常有帮助。 5. **性能优化** Jetty的源码揭示了其性能优化策略,比如使用...

    jetty嵌入项目实战

    server.start(); ``` - 这段代码会启动一个监听8080端口的服务器,加载指定路径的Web应用。 5. **调试与日志** - Jetty提供日志框架,如使用`org.eclipse.jetty.util.log`包下的Logger类进行日志输出。 - 通过...

    jetty6 嵌入式使用

    2. **引入Starter类**:Jetty 6提供了一些启动类,例如`org.mortbay.jetty.Server`,你可以通过实例化这个类并调用其start方法来启动服务器。示例代码如下: ```java import org.mortbay.jetty.Server; import ...

Global site tag (gtag.js) - Google Analytics