http://blog.csdn.net/robinpipi/article/details/7557035

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

最开始用的jetty8.1,没成功,后又下载7.6,仍然没有成功,最后使用了jetty7.0后成功。对于8.1和7.6后来没有再试,应该是一样的步骤,有兴趣或者有时间容后再试。

步骤:

1、首先下载jetty的jar包。

我下载的是jetty-all-7.0.2.v20100331.jar,servlet-api-2.5.jar。

参照网上的一个资料。

http://search.maven.org,  输入 jetty-all-,搜索,然后找到版本-7.0.2.v20100331的jar下载。

说明:直接从jetty官网上下载jetty的jar包应该是一样的。我之所以下载这个,是因为之前用8.1版本jar包时候的总是提示server没有start这个方法,因为当时不晓得是jar包的问题还是其他什么问题,所以只好更换jar包进行重新测试。

2、写启动文件。

MyServer.java

import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.nio.SelectChannelConnector;
import org.eclipse.jetty.webapp.WebAppContext; public class MyServer {
public static void main(String[] args) throws Exception {
Server server = new Server(); Connector connector = new SelectChannelConnector();
connector.setPort(8080); server.setConnectors(new Connector[] { connector }); WebAppContext webAppContext = new WebAppContext("WebContent","/myProject"); //webAppContext.setContextPath("/");
webAppContext.setDescriptor("WebContent/WEB-INF/web.xml");
webAppContext.setResourceBase("WebContent");
webAppContext.setDisplayName("myProject");
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 {
server.start();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("server is start");
}
}

3、直接在MyServer.java上点击右键,run as  -java application

4、在web.xml里面定义一个起始页面,比如index.jsp.

5、在webcontent下建立这个index.jsp文件。

6、在浏览器内输入:http://localhost:8080/myProject。

ok,可以看到这个jsp文件了。

就是如此的简单。

总结:

1、刚开始做的时候,参照网上的一些资料,在spring的配置文件里,加入了一堆jetty的<bean>设置,其实完全没有必要。

2、最开始启动成功后,访问html文件可以成功,但是访问action总提示不存在,应该是路径的问题,后查看jetty的文档,加入了

webAppContext.setClassLoader(Thread.currentThread().getContextClassLoader());

这句话很重要,是定位class文件位置的。

3、项目文件名的加入,需要

webAppContext.setContextPath("项目名");

否则的话,访问的时候就没有项目名称了。

目前需要写个bat文件,用于双击运行服务。

qidong.bat

echo off
@set LOCALCLASSPATH=./WebContent/WEB-INF/classes/
@for %%i in (".\WebContent\WEB-INF\lib\*.jar") do call "setpath.bat" %%i set CLASSPATH=%LOCALCLASSPATH%;%CLASSPATH%
echo on
java -Dxport="%1" -Xmx512m com.jetty.MyServer %2 %3 %4

setpath.bat

@set LOCALCLASSPATH=%LOCALCLASSPATH%;%1

启动后,访问浏览器,报

HTTP ERROR 500

Problem accessing /cipoa/common/error/500code.jsp. Reason:

    JSP support not configured

Powered by Jetty://

异常。

但是在eclipse里启动访问是正常的。

在网上搜是没有加入jetty对jsp支持的jar包,需要下载15m版本的jar包。

下载到这个15m的jar包后,将其中jsp文件夹下的jar包拷贝到项目中,再启动,果然成功。

http://akunamotata.iteye.com/blog/1331229早看到这个文章就不用这么麻烦了。

使用jetty作为内嵌服务器启动项目的更多相关文章

  1. jetty作为内嵌服务器自启动

    为了完成web工程的测试,最近内嵌jetty也要搞起来.第一次搞还是挺焦头烂额的.直接上成果: package com.test.action; import java.io.File; import ...

  2. 使用ActiveMQ 传输文件 以及使用Jetty搭建内嵌文件服务器

    使用Active发送文件 ActiveMq 本身提供对于传输文件的支持. 1. 直接传输文件: 使用connection.createOutputStream 的形式.这种方式适合小文件.不能传输大文 ...

  3. Spring Boot 揭秘与实战(五) 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri

    文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.< ...

  4. IDEA下集成tomcat7插件将tomcat内嵌到web项目中

    新建一个maven web项目 修改pom.xml文件 <build> <plugins> <!-- 配置Tomcat插件: 就是本地部署,将tomcat 内嵌到 web ...

  5. Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动

    之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void cr ...

  6. 【spring实战第五版遇到的坑】4.2.3中LDAP内嵌服务器不启动的问题

    按照4.2.3中的指导一步一步的去做,在登录界面进行登录时,报错了,报错信息是LDAP服务器连接不上. 后来查了一些资源发现还需要加入一些其他的依赖,如下: <dependency> &l ...

  7. springboot整合mybatis之用外置服务器启动项目(二)

    在上一篇中我们是用的springboot自带的tomcat服务器,接下来想试一下 将springboot当做一个web项目 放在eclipse中用tomcat来启动. 首先在pom.xml中加上,移除 ...

  8. Embed Tomcat Java(内嵌tomcat启动简述)

    简单记录一下内部tomcat启动 maven pom.xml <dependencies> <!-- embed tomcat dependency --> <depen ...

  9. 内网服务器启动报错UNEXPECTED INCONSISTENCY解决方法

    一开始进入系统显示reboot and select proper boot device or insert boot media in selected boot device and press ...

随机推荐

  1. oracle如何实现去重和分页

    一:oracle实现去重: user数据表: 分两步:1.查询重复数据  2.删除重复数据 1.查询重复数据:在oracle中实现查询重复数据,可以借助于rowid这个伪列.oracle中每个表物理上 ...

  2. Directory类和DirectoryInfo类

    1.Directory类 Directory类公开了用于创建.移动.枚举.删除目录和子目录的静态方法 2.DirectoryInfo类 DirectoryInfo和Directory类的区别可以参看F ...

  3. STM32 Bootloader基于ymodem传输协议串口IAP升级详解

    硬件:stm32f103cbt6 软件:STM32F10x_StdPeriph_Lib_V3.5.0 文章目录 1 预备知识 2 Bootloader 2.1 启动流程 2.2 校验跳转地址是否有效 ...

  4. 通过10个实例小练习,快速熟练 Vue3.0 核心新特性

    Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了. GitHub 博客地址: https://github.com/biaochenxuying ...

  5. CF-292D Connected Components 并查集 好题

    D. Connected Components 题意 现在有n个点,m条编号为1-m的无向边,给出k个询问,每个询问给出区间[l,r],让输出删除标号为l-r的边后还有几个连通块? 思路 去除编号为[ ...

  6. Arrays.binarySearch的返回值

    如果查找的值包含在数组中,返回搜索的第一个值的下标: 如果查找的值不在数组中,返回(-插入点-1):插入点即为第一个大于此查找值的元素下标 插入点 为将该值插入数组的那一点:即第一个大于此键的元素下标 ...

  7. ASP.NET 开源导入导出库Magicodes.IE 完成Csv导入导出

    Magicodes.IE Csv导入导出 说明 本章主要说明如何使用Magicodes.IE.Csv进行Csv导入导出. 主要步骤 1.安装包Magicodes.IE.Csv Install-Pack ...

  8. C# 委托delegate的基本用法

    委托:就是一个方法的类型,下面3个调用情况来详细熟悉一下: 1.调用组合委托 //委托:就是一个方法的类型 public delegate int TestDelegateStr(); public ...

  9. sudo apt-get update 与 sudo apt-get upgrate 的区别

      1.sudo gedit /etc/apt/sources.list 源列表里面放置的一行行网址,在这个文件里加入或者注释(加#)掉一些源后,保存.这时候,我们的源列表里指向的软件就会增加或减少一 ...

  10. nth-of-child和nth-of-type的区别

    p:nth-of-child(2)     翻译过来就是,必需是p元素,并且是父标签的第二个元素,满足以上两个条件,这些样式才会渲染. p:nth-of-type(2)     翻译过来就是,必需是p ...