【第22期】观点:IT 行业加班,到底有没有价值?

jetty三种启动方式

原创 2016年08月28日 19:36:03

今天把jetty稍微研究了一下,之前使用的全是tomcat,所以开始接触jetty感觉有点别扭,不过总算走了一遍,总结了三种启动jetty的方式,

1,直接硬编码方式,很简单:

public static void main(String[] args) {  
        try {  
            // 服务器的监听端口  
            Server server = new Server(8080);  
            // 关联一个已经存在的上下文  
            WebAppContext context = new WebAppContext();  
            // 设置描述,作为hander加载使用
            context.setDescriptor("./web/WEB-INF/web.xml");  
            // 设置Web内容上下文路径
            context.setResourceBase("./webapp");  
            // 设置上下文路径既访问路径的根路径
            context.setContextPath("/cheng");   
            server.setHandler(context);  
            // 启动  
            server.start();  
            server.join();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (SAXException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
这里需要说明的是你也可以将controller(处理用户请求的servlet)作为一个对象直接在上面传给hander,不过不建议这么做。因为通过web.xml可以不影响我们正常的web开发流程,降低jetty与我们项目的耦合度。其他设置可以根据需要添加。

2,通过加载jetty.xml和webdefault.xml配置文件实现,

public static void main(String[] args) {
        try {
            XmlConfiguration config = new XmlConfiguration(new FileInputStream("./jetty/jetty.xml"));
            Server server=(Server)config.configure();
            ContextHandlerCollection handler = new ContextHandlerCollection();
            WebAppContext webContext = new WebAppContext();
            webContext.setContextPath("/cheng");
            webContext.setDefaultsDescriptor("./jetty/webdefault.xml");
            webContext.setResourceBase("src/main/webapp");
            webContext.setDescriptor("src/main/webapp/WEB-INF/web.xml");
            webContext.setClassLoader(Thread.currentThread().getContextClassLoader());
            handler.addHandler(webContext);
            server.setHandler(handler);
            server.stop();
            server.start();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(-1);
        }

        }
这种方式,可以将关键信息从配置文件读取。个人觉得好点。

3,通过maven插件实现,所有jetty的配置也是在插件中配,

<plugins>
    <plugin>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-maven-plugin</artifactId>
      <version>9.2.6.v20141205</version>
      <configuration>
        <webApp>
          <contextPath>/cheng</contextPath>
          <descriptor>src/main/webapp/WEB-INF/web.xml</descriptor>
          <defaultsDescriptor>./jetty/webdefault.xml</defaultsDescriptor>
        </webApp>
        <stopKey>exit</stopKey>
        <stopPort>9090</stopPort>
        <webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
        <scanIntervalSeconds>1</scanIntervalSeconds>
        <!-- <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
            <port>8080</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> -->
        <httpConnector>
          <port>8080</port>
        </httpConnector>
        <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog">
          <filename>target/access.log</filename>
          <retainDays>90</retainDays>
          <append>false</append>
          <extended>false</extended>
          <logTimeZone>GMT+8:00</logTimeZone>
        </requestLog>
        <!-- <systemProperties> <systemProperty> <name>productionMode</name>
            <value>${productionMode}</value> </systemProperty> </systemProperties> -->
      </configuration>
    </plugin>
  </plugins>
上面三种本人试过,都可以通过,如有需要请根据自身需要做调整,再有就是上面jetty.xml9.0之前和之后的dtd配置是有区别的。



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

jetty服务器的安装和部署、新增到开机启动服务

Jetty的首页地址是http://www.mortbay.org/jetty/,点击Downloads进入下载介绍页面,由于Jetty7之后,托管服务有Eclipse接替,所以jetty6.1之前(...

jetty的server创建与启动

其实不管是tomcat还是jetty,他们在启动的时候要做的事情都差不太多。。。无非就是下面的内容: (1)创建用于连接的connector,创建线程池, (2)扫描当前的web程序的部署目录,为...

程序员升职加薪指南!还缺一个“证”!

CSDN出品,立即查看!

Jetty9架构解析-安装和启动

1.2. 安装和启动1.2.1. Jetty下载、安装你可以从http://www.eclipse.org/jetty/download.html下载最新的Jetty发布包,本书基于最新的9.3.x...

jetty 启动 配置

准备工作: a. 在pom.xml中配置jetty插件: Xml代码   org.mortbay.jetty ...

main方法启动jetty java嵌入式web服务器jetty的使用

今天本来是想搞个SuperDiamond配置服务器的搭建,看到他使用jetty做web容器,就先来研究下jetty。搞个jetty启动的demo jetty的启动有三种方式,我这里用main...

使用jetty作为内嵌服务器启动项目

需求:把jetty作为内嵌的一个服务器,直接启动,web项目不用部署在应用服务器中。在网上搜索了一些资料,参照后,都没有成功,经过3天的研究,终于搞定了,记录在此,以备查询。 最开始用的jetty8...

Jetty:部署到Jetty

Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部ContextHandler部署描述符,或者两者的一个混合。 Web应用是可部署的动态(servl...

Jetty学习【四】 线程

1、

内嵌的Jetty启动后访问503

内嵌的Jetty启动后访问503,没有报错,查看启动日志,发现在初始化Spring容器的前一步停住不动了。如果这时候还用了Mybatis,那很可能是Mybatis配置文件错误了: ...

【项目管理】 使用IntelliJ IDEA 将项目发布(提交)到GitLab

使用IntelliJ IDEA 将项目发布(提交)到GitLab 本地Git代码仓库建立,首先需要启用项目的版本管理功能。 点击VCS 启用版本控制 IDE底部显示本地Git代码仓库建立完毕...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)