使用jetty作为内嵌服务器启动项目
需求:把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作为内嵌服务器启动项目的更多相关文章
- jetty作为内嵌服务器自启动
为了完成web工程的测试,最近内嵌jetty也要搞起来.第一次搞还是挺焦头烂额的.直接上成果: package com.test.action; import java.io.File; import ...
- 使用ActiveMQ 传输文件 以及使用Jetty搭建内嵌文件服务器
使用Active发送文件 ActiveMq 本身提供对于传输文件的支持. 1. 直接传输文件: 使用connection.createOutputStream 的形式.这种方式适合小文件.不能传输大文 ...
- Spring Boot 揭秘与实战(五) 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri
文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.< ...
- IDEA下集成tomcat7插件将tomcat内嵌到web项目中
新建一个maven web项目 修改pom.xml文件 <build> <plugins> <!-- 配置Tomcat插件: 就是本地部署,将tomcat 内嵌到 web ...
- Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void cr ...
- 【spring实战第五版遇到的坑】4.2.3中LDAP内嵌服务器不启动的问题
按照4.2.3中的指导一步一步的去做,在登录界面进行登录时,报错了,报错信息是LDAP服务器连接不上. 后来查了一些资源发现还需要加入一些其他的依赖,如下: <dependency> &l ...
- springboot整合mybatis之用外置服务器启动项目(二)
在上一篇中我们是用的springboot自带的tomcat服务器,接下来想试一下 将springboot当做一个web项目 放在eclipse中用tomcat来启动. 首先在pom.xml中加上,移除 ...
- Embed Tomcat Java(内嵌tomcat启动简述)
简单记录一下内部tomcat启动 maven pom.xml <dependencies> <!-- embed tomcat dependency --> <depen ...
- 内网服务器启动报错UNEXPECTED INCONSISTENCY解决方法
一开始进入系统显示reboot and select proper boot device or insert boot media in selected boot device and press ...
随机推荐
- spring mvc从后台往前台传参数的三种方式
第一种:使用Model对象(常用) 第一步:使用model对象往前台传递数据 第二步:在jsp中接收从后台传递过来的参数 第二种:使用HttpServletRequest对象 第一步:使用HttpSe ...
- LeetCode--Sort Array By Parity && N-Repeated Element in Size 2N Array (Easy)
905. Sort Array By Parity (Easy)# Given an array A of non-negative integers, return an array consist ...
- QTreeWidget更新后保存节点的展开状态
class Xx : public QWidget { Q_OBJECT struct ItemState{ ItemState(); int _id; bool _isExpend; }; publ ...
- Java 多线程启动为什么调用 start() 方法而不是 run() 方法?
多线程在工作中多多少少会用到,我们知道启动多线程调用的是 start() 方法,而不是 run() 方法,你知道原因吗? 在探讨这个问题之前,我们先来了解一些多线程的基础知识~ 线程的状态 Java ...
- Excel+Word:Jupyter
直接打开Excel,可以增改删,但如果只是查了?Jupyter Lab/Jupyter Notebook是件利器. 工作内容之一,是复制Excel的一条记录,姓名.身份证号.银行卡号,粘贴在Word的 ...
- 白话马尔科夫链蒙特卡罗方法(MCMC)
前言 你清茶园不是人待的地方! 里面的个个都是人才,说话又好听--就是我太菜了啥也听不懂,这次期中还考的贼**烂,太让人郁闷了. 最近课上讲这个马尔科夫链蒙特卡罗方法,我也学得一塌糊涂.这时我猛然想起 ...
- 使用JDBC操作MySQL
使用JDBC操作MySQL 步骤 加载驱动 连接数据库 操作数据库(增删改查) 关闭结果集,操作,数据库 准备工作 java连接MySQL的jar包 加载数据库驱动 public class Load ...
- My sql的知识点 不足点请指点谢谢
My SQL:(关系数据库) 数据库能够能够干吗? 1. :存储大量的信息,方便检索和访问 2. :保持数据信息的一致,完整 3. : 共享和安全 4. : 通过组合分析,产生新的有用 ...
- 「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- Java基础之值传递
一.传递类型 我们从c语言开始学习程序设计语言时就知道,参数的传递类型一般有两种:值传递和引用传递.那么什么是值传递什么是引用传递呢? 值传递:指在调用方法时将实际参数的值拷贝一份传递给方法,这样方法 ...