在开发工程的根目录下建如下目录(好比个人工程的所在目录为jeewx2.0,则建如下目录java
jeewx2.0/Embedded/confweb
jeewx2.0/Embedded/libapache
jeewx2.0/Embedded/webappstomcat
jeewx2.0/Embedded/workwebsocket
2. 从apahce tomcat网站下载embed tomcat所须要的全部的jar包:http://mirrors.cnnic.cn/apache/tomcat/tomcat-7/v7.0.59/bin/embed/apache-tomcat-7.0.59-embed.zip,解压后把全部的jar包解压到jeewx2.0/Embedded/lib目录下。app
3. 从对应的tomcat的发行版本(好比本例为tomcat-7.0.59)的conf目录下拷贝context.xml和web.xml到jeewx2.0/Embedded/conf目录下webapp
4. 将jeewx2.0/Embedded/lib目录下的全部的jar包加到工程的classpath下,若是是用maven,则能够拷贝如下配置到pom.xml文件:socket
<!-- embed tomcat --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-core</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-juli</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-logging-log4j</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-websocket</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-el</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-dbcp</artifactId> <version>${tomcat.version}</version> <scope>provided</scope> </dependency>
在工程中新建一个EmbededTomcat类,代码以下:maven
package org.jeecgframework.tools; import java.io.File; import javax.servlet.ServletException; import org.apache.catalina.LifecycleException; import org.apache.catalina.core.AprLifecycleListener; import org.apache.catalina.core.StandardServer; import org.apache.catalina.startup.Tomcat; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class EmbededTomcat { private final Log log=LogFactory.getLog(getClass()); private static String CONTEXT_PATH = "/jeewx"; private static String PROJECT_PATH = System.getProperty("user.dir"); private static String WEB_APP_PATH = PROJECT_PATH + File.separatorChar + "target/jeewx"; private static String CATALINA_HOME = PROJECT_PATH + "/Embedded/Tomcat"; private Tomcat tomcat = new Tomcat(); private int port; public EmbededTomcat(int port){ this.port=port; } public void start()throws Exception{ tomcat.setPort(port); tomcat.setBaseDir(CATALINA_HOME); tomcat.getHost().setAppBase(WEB_APP_PATH); try{ StandardServer server = (StandardServer)tomcat.getServer(); AprLifecycleListener listener = new AprLifecycleListener(); server.addLifecycleListener(listener); tomcat.addWebapp(CONTEXT_PATH, WEB_APP_PATH); }catch(ServletException e){ e.printStackTrace(); log.error(e.getMessage()); throw e; } try{ tomcat.start(); tomcat.getServer().await(); }catch(LifecycleException e){ e.printStackTrace(); log.error(e.getMessage()); throw e; } log.info("Tomcat started."); } public void stop()throws Exception{ try{ tomcat.stop(); } catch(LifecycleException ex){ ex.printStackTrace(); log.error(ex.getMessage()); throw ex; } log.info("Tomcat stoped"); } public void setPort(int port){ this.port=port; } public int getPort(){ return this.port; } public static void main(String[] args) throws Exception { EmbededTomcat embededTomcat = new EmbededTomcat(8080); embededTomcat.start(); } }
其中WEB_APP_PATH是web目录,若是是maven工程,不能指向到src/main/webapp目录,只能指向到target/jeewx目录下,不然启动会出错(目前还没找到解决办法)ide
参考连接: