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

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


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

1、工程目录结构

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署_第1张图片


2、pom文件


	4.0.0
	web
	web
	1.0.0
	jar
	web

	http://maven.apache.org

	
		UTF-8
		
	

	
		
			org.mybatis
			mybatis-spring
			1.2.3
		
		
			org.mybatis
			mybatis
			3.3.0
		
		
			org.eclipse.jetty.aggregate
			jetty-all-server
			8.1.19.v20160209
		
		
			javax.servlet
			javax.servlet-api
			3.1.0
		
		
			org.apache.commons
			commons-lang3
			3.3.2
		
		
			com.alibaba
			fastjson
			1.2.7
		
		
			org.apache.httpcomponents
			httpclient
			4.3.3
		
		
			com.google.guava
			guava
			18.0
		
		
			oro
			oro
			2.0.8
		
		
			commons-dbcp
			commons-dbcp
			1.4
		
		
			org.springframework
			spring-jdbc
			4.2.4.RELEASE
		
		
			org.jmock
			jmock
			2.8.2
		
		
			mysql
			mysql-connector-java
			5.1.31
		
		
			org.springframework
			spring-test
			4.2.4.RELEASE
		

		
			org.springframework
			spring-context-support
			4.0.5.RELEASE
		
		
			org.springframework
			spring-webmvc
			4.2.4.RELEASE
		

		
			javax.servlet
			javax.servlet-api
			3.1.0
		

		
			org.apache.maven.plugins
			maven-resources-plugin
			2.4.3
		
		
			org.apache.ant
			ant
			1.9.4
		

		
			org.springframework
			spring-aspects
			4.2.4.RELEASE
		
		
			com.fasterxml.jackson.core
			jackson-core
			2.4.3
		
		
			com.fasterxml.jackson.core
			jackson-databind
			2.4.3
		
		
			log4j
			log4j
			1.2.12
		

	



	
		src/main/java
		
			
				src/main/java
				
					**/*.xml
					**/*.properties
				
			
			
				src/main/resources
				
					**/*.xml
					**/*.properties
					**/*.vm
				
			
		
		
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					lib
					1.7
					1.7
					UTF-8
				
			
			
				org.apache.maven.plugins
				maven-jar-plugin
				
					
						
							true
							lib
							jetty.server.JettySpringMVCStart
						
					
				
			
			
				org.apache.maven.plugins
				maven-dependency-plugin
				
					
						copy
						package
						
							copy-dependencies
						
						
							
								${project.build.directory}/${groupId}/lib
							
						
					
				
			
		
		${groupId}/web-demo
	



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

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署_第2张图片

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 
* Function: TODO ADD FUNCTION.
* Reason: TODO ADD REASON.
* Date: 2016年7月21日 下午4:46:33
* * @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) { // 创建Server Server server = new Server(); // 添加ThreadPool QueuedThreadPool queuedThreadPool = new QueuedThreadPool(); queuedThreadPool.setName("queuedTreadPool"); queuedThreadPool.setMinThreads(10); queuedThreadPool.setMaxThreads(200); server.setThreadPool(queuedThreadPool); // 添加Connector SelectChannelConnector 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 stub DOMConfigurator.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、系统访问

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署_第3张图片

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署_第4张图片

【JAVA】内嵌JettyServer结合springMVC、mybatis实现轻量化系统部署_第5张图片





你可能感兴趣的:(Java,Jetty)