博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)
阅读量:5103 次
发布时间:2019-06-13

本文共 4587 字,大约阅读时间需要 15 分钟。

  在开发Java web项目时候,可以在项目中嵌入Jetty服务的方式来运行web程序。

  由于最近开发web项目,自己使用的是比较旧的eclipse不支持导入tomcat来运行项目,于是就学习了下使用项目中Jetty来运行项目。

  • 采用Jetty Plugin

      在pom文件中引入Jetty Plugin配置即可:

      <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>

      <build>

    org.apache.maven.plugins
    maven-compiler-plugin
    3.1
    1.7
    1.7
    ${project.build.sourceEncoding}
    org.mortbay.jetty
    jetty-maven-plugin
    8.1.15.v20140411
    src/main/webapp
    10
    /web
    //你自己的工程名称
    8080
    60000
    ${project.parent.basedir}/src/main/webapp
    /web

    运行时候只要maven build->输入jetty:run即可。

    这种插件方式运行的项目不支持@ServerEndpoint websocket功能,不知道是不是我这种方式使用问题还是什么,知道的指导下。我下面自制JettyServer就可以支持websocket,目前我开发的时候采用的方式。

  • 自制Jetty服务类

      这种方式可以支持websocket,如果项目中需要使用到可以试试这种。

      首先pom.xml引入jetty的依赖:

    org.eclipse.jetty.aggregate
    jetty-all
    9.2.14.v20151106
    javax.servlet
    javax.servlet-api
    3.1.0
    org.eclipse.jetty
    jetty-jsp
    9.2.15.v20160210

      接下来自己写一个JettyServer类:我自己的完整代码如下

    import javax.websocket.server.ServerContainer;import org.eclipse.jetty.server.Server;import org.eclipse.jetty.webapp.WebAppContext;import org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer;import org.json.JSONObject;import com.web.test.MyWebSocket;public class JettyServer {    public static void main(String[] args) {        int port = 8080;        Server server = new Server(port);        WebAppContext webAppContext = new WebAppContext("webapp","/web");            webAppContext.setDescriptor("webapp/WEB-INF/web.xml");          webAppContext.setResourceBase("src/main/webapp");          webAppContext.setDisplayName("web");          webAppContext.setClassLoader(Thread.currentThread().getContextClassLoader());          webAppContext.setConfigurationDiscovered(true);          webAppContext.setParentLoaderPriority(true);                  server.setHandler(webAppContext);          System.out.println(webAppContext.getContextPath());          System.out.println(webAppContext.getDescriptor());          System.out.println(webAppContext.getResourceBase());          System.out.println(webAppContext.getBaseResource());         try {               ServerContainer wscontainer = WebSocketServerContainerInitializer.configureContext(webAppContext);            // Add WebSocket endpoint to javax.websocket layer             wscontainer.addEndpoint(MyWebSocket.class);   //这行是如果需要使用websocket就加上,不需要就注释掉这行,mywebsocket是自己写的websocket服务类             server.start();        } catch (Exception e) {              e.printStackTrace();          }          System.out.println("server is  start, port is "+port+"............");      }}

    运行项目就只要运行这个main函数即可。

    假如正式发布需要放到tomcat里运行,需要把下面这个依赖去掉,tomcat和下面的依赖不兼容,会报错(javax.servlet.ServletException: Not running on Jetty, JSR-356 support unavailable)

    这种方式运行项目可以在开发的时候用用

  • org.eclipse.jetty.aggregate
    jetty-all
    9.2.14.v20151106

     

转载于:https://www.cnblogs.com/lylife/p/5670396.html

你可能感兴趣的文章
java SE :标准输入/输出
查看>>
一些方便系统诊断的bash函数
查看>>
jquery中ajax返回值无法传递到上层函数
查看>>
css3之transform-origin
查看>>
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
Master选举原理
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
小别离
查看>>
微信小程序-发起 HTTPS 请求
查看>>
WPF动画设置1(转)
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>
秒杀9种排序算法(JavaScript版)
查看>>
Activiti入门 -- 环境搭建和核心API简介
查看>>
struts.convention.classes.reload配置为true,tomcat启动报错
查看>>
MySQL的并行复制多线程复制MTS(Multi-Threaded Slaves)
查看>>
好玩的-记最近玩的几个经典ipad ios游戏
查看>>
MySQL更改默认的数据文档存储目录
查看>>
PyQt5--EventSender
查看>>
Sql Server 中由数字转换为指定长度的字符串
查看>>