JavaWeb之Jetty和Tomcat内嵌服务器实现

      在开发Java web项目时候,有时候需要使用内嵌服务器作为来运行web程序。

     现在介绍Java中常用的两种服务器Tomcat和jetty,实现web服务器的内嵌.

 1.Jetty服务器的内嵌

      Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中,在Java程序中调用Jetty。

     步骤:

     (1).首先下载jetty的jar包。

              我下载的是jetty-9.1.2.v20140210版本,

             下载地址:

             http://central.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.1.2.v20140210/jetty-distribution-             

             9.1.2.v20140210.zip

     (2).新建Java项目

              项目结构:

                                                       

     (3).解压,添加libs文件夹下除了文件夹其他所有的jar包和 lib/jsp文件夹下所有jar包到项目中去

      (4).编写jetty启动类

import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;

import java.io.File;


public class Main {

    public static void main(String[] args) {
        System.out.println("initJetty.........");
        initJetty();
    }

    public static  void initJetty() {
        try {
            QueuedThreadPool threadPool = new QueuedThreadPool();
            threadPool.setMaxThreads(300);
            threadPool.setMinThreads(3);

            Server server = new Server(threadPool);// 创建jetty web容器
            server.setStopAtShutdown(true);// 在退出程序是关闭服务

            // 创建连接器,每个连接器都是由IP地址和端口号组成,连接到连接器的连接将会被jetty处理
            ServerConnector connector = new ServerConnector(server);// 创建一个连接器
            connector.setHost("127.0.0.1");// ip地址
            connector.setPort(8080);// 连接的端口号
            connector.setName("connector0");
            server.addConnector(connector);// 添加连接

            // 配置服务
            WebAppContext context = new WebAppContext();// 创建服务上下文
            context.setContextPath("/");// 访问服务路径 http://{ip}:{port}/
            context.setConfigurationDiscovered(true);
            context.setClassLoader(Thread.currentThread().getContextClassLoader());
            String baseDir = Thread.currentThread().getContextClassLoader()
                    .getResource("").getPath();
//            context.setWar("WebRoot");
            context.setDescriptor(baseDir + File.separator + "/WEB-INF/web.xml");// 指明服务描述文件,就是web.xml
            // context.setDescriptor("/E:/workspace/strutsDemo/target/classes/\\/WEB-INF/web.xml");//
            // 指明服务描述文件,就是web.xml
            context.setResourceBase(System.getProperty("user.dir")
                    + "/WebContent");// 指定服务的资源根路径,配置文件的相对路径与服务根路径有关
            server.setHandler(context);// 添加处理try {
            server.start();// 开启服务
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
        }
    }
}
        (5) 运行结果:

2.Tomcat服务器的内嵌

      Tomcat是一个Java实现的开源的servlet容器可以嵌入在Java应用程序中,在Java程序中调用Jetty。

     步骤:

     (1).首先下载Tomcat的jar包。

              我下载的是apache-tomcat-8.5.23-embed.zip版本,

             下载地址:

             http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.23/bin/embed/apache-tomcat-8.5.23-embed.zip

     (2).新建Java项目

              项目结构:

                                                       

     (3).解压,添加libs文件夹下除了文件夹其他所有的jar包和 lib/jsp文件夹下所有jar包到项目中去

             

      (4).编写jetty启动类

                


import org.apache.catalina.LifecycleException;
import org.apache.catalina.core.AprLifecycleListener;
import org.apache.catalina.core.StandardServer;
import org.apache.catalina.startup.Tomcat;

import javax.servlet.ServletException;
import java.io.File;

public class EmbeddedTomcat {

    private static Tomcat tomcat;

    public static Tomcat getTomcat() {
        return tomcat;
    }

    private static StandardServer server;

    private static AprLifecycleListener listener;

    public static void main(String[] args) throws LifecycleException, ServletException {
        tomcat = new Tomcat();
        // 主机名,或ip
        tomcat.setHostname("localhost");
        // 设置端口,80为默认端口
        tomcat.setPort(8989);
        // tomcat用于存储自身的信息,可以随意指定,最好包含在项目目录下
        tomcat.setBaseDir(".");
        // 建立server参照tomcat文件结构
        server = (StandardServer) tomcat.getServer();
        listener = new AprLifecycleListener();
        server.addLifecycleListener(listener);
        // 将appBase设为本项目所在目录
        //tomcat.getHost().setAppBase(".");
        tomcat.getHost().setAppBase(
                System.getProperty("user.dir") + File.separator + ".");

        // 第二个参数对应docBase为web应用路径,目录下应有WEB-INF,WEB-INF下要有web.xml
        tomcat.addWebapp("", "WebContent");

        // 启动tomcat
        tomcat.start();
        // 维持
        tomcat.getServer().await();

    }

}

      (5)运行结果:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值