【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署

来源:互联网 发布:js传值到jsp 编辑:程序博客网 时间:2024/04/30 08:50

有些项目中,可能WEB功能并不是这个系统的核心功能,但是为了部署这个web服务,往往我们都是将工程打成WAR包,丢给WEB容器去启动,这样就有点偏离主题了,不太友好,机器上还得装上个WEB容器,配置一下,WAR包丢到指定目录,启动容器。。。。


面对这种系统,我们完全可以将WEB容器内嵌到我们系统中,使得我们的工程仍然是打包成jar包,一条java -jar命令就可以快速的将服务启动起来

1、工程目录结构



2、pom文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>web</groupId><artifactId>web</artifactId><version>1.0.0</version><packaging>jar</packaging><name>web</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project></project></properties><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.2.3</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.3.0</version></dependency><dependency><groupId>org.eclipse.jetty.aggregate</groupId><artifactId>jetty-all-server</artifactId><version>8.1.19.v20160209</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.3.2</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.7</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3.3</version></dependency><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>18.0</version></dependency><dependency><groupId>oro</groupId><artifactId>oro</artifactId><version>2.0.8</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>4.2.4.RELEASE</version></dependency><dependency><groupId>org.jmock</groupId><artifactId>jmock</artifactId><version>2.8.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.31</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.2.4.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context-support</artifactId><version>4.0.5.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>4.2.4.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.4.3</version></dependency><dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.9.4</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.2.4.RELEASE</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.4.3</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.4.3</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency></dependencies><build><sourceDirectory>src/main/java</sourceDirectory><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include><include>**/*.vm</include></includes></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><defaultLibBundleDir>lib</defaultLibBundleDir><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><addClasspath>true</addClasspath><classpathPrefix>lib</classpathPrefix><mainClass>jetty.server.JettySpringMVCStart</mainClass></manifest></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><executions><execution><id>copy</id><phase>package</phase><goals><goal>copy-dependencies</goal></goals><configuration><outputDirectory>${project.build.directory}/${groupId}/lib</outputDirectory></configuration></execution></executions></plugin></plugins><finalName>${groupId}/web-demo</finalName></build></project>

pom文件负责打包jar,并且将依赖复制到lib文件夹下


3、JettyServer的核心代码

package jetty.server;import org.apache.log4j.xml.DOMConfigurator;import org.eclipse.jetty.server.Server;import org.eclipse.jetty.server.nio.SelectChannelConnector;import org.eclipse.jetty.util.thread.QueuedThreadPool;import org.eclipse.jetty.webapp.WebAppContext;/** * ClassName:JettySpringMVCStart <br/> * Function: TODO ADD FUNCTION. <br/> * Reason: TODO ADD REASON. <br/> * Date: 2016年7月21日 下午4:46:33 <br/> *  * @author chiwei * @version * @since JDK 1.6 * @see */public class JettySpringMVCStart {public static final int PORT = 2656;// web访问的根路径http://ip:port/,相当于项目名,/即忽略项目名public static final String CONTEXT = "/";private static final String DEFAULT_WEBAPP_PATH = "src/main/webapp";public static Server createServerIn(int port) {// 创建ServerServer server = new Server();// 添加ThreadPoolQueuedThreadPool queuedThreadPool = new QueuedThreadPool();queuedThreadPool.setName("queuedTreadPool");queuedThreadPool.setMinThreads(10);queuedThreadPool.setMaxThreads(200);server.setThreadPool(queuedThreadPool);// 添加ConnectorSelectChannelConnector connector = new SelectChannelConnector();connector.setPort(port);connector.setAcceptors(4);// 同时监听read事件的线程数connector.setMaxBuffers(2048);connector.setMaxIdleTime(10000);server.addConnector(connector);WebAppContext webContext = new WebAppContext(DEFAULT_WEBAPP_PATH, CONTEXT);webContext.setDescriptor("src/main/webapp/WEB-INF/web.xml");webContext.setResourceBase(DEFAULT_WEBAPP_PATH);webContext.setClassLoader(Thread.currentThread().getContextClassLoader());server.setHandler(webContext);return server;}public static void main(String[] args) throws Exception {// TODO Auto-generated method stubDOMConfigurator.configure(Thread.currentThread().getContextClassLoader().getResource("log4j.xml"));Server server = createServerIn(PORT);server.stop();server.start();server.join();}}
web.xml里有contextloadlistener,config等等,将其和spring连接起来

其它代码和平时做web项目的一模一样

4、系统启动



-D系统属性在log4j.xml里会读取

5、系统访问








1 0
原创粉丝点击