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


    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 (".WebContentWEB-INFlib*.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早看到这个文章就不用这么麻烦了。

  • 相关阅读:
    在C语言中,double、long、unsigned、int、char类型数据所占字节数
    C++基础之头文件和源文件的关系
    Activity与Fragment数据传递之Activity从Fragment获取数据 分类: Android 2015-07-02 09:56 12人阅读 评论(0) 收藏
    Activity与Fragment数据传递之Fragment从Activity获取数据 分类: Android 2015-07-01 14:12 17人阅读 评论(0) 收藏
    Java反射机制和对象序列化 分类: Java 2015-06-26 12:08 21人阅读 评论(0) 收藏
    Android通过播放多张图片形成一个动画 分类: Android 2015-04-24 14:05 16人阅读 评论(0) 收藏
    jvm参数的配置、垃圾回收器的配置
    selenium2工作原理
    LeetCode#1 Two Sum
    LeetCode#27 Remove Element
  • 原文地址:https://www.cnblogs.com/spqin/p/4288730.html
Copyright © 2020-2023  润新知