不少java开发的朋友都是用tomcat作主要的服务器,tomcat无疑有不少优势,tomcat也是最最新的jdk API支持最好的,稳定性相对比较高。可是tomcat的弱点也很明显,tomcat毕竟不是纯java的服务器,java要和tomcat交互须要经过物理的路径或相关接口。形成tomcat的使用很是麻烦。java
相信不少人也用过ser-u的ftp服务器,这个是一个老牌可是很是稳定的服务器,也很锐意进取。这个服务器在后期的版本中,他们的控制台又原来的cs模式升级到bs模式,能够说这么进化倒是革命性的。bs模式的控制台,在升级和优化都比cs模式要方便。他们能够用bs做为控制台,可是又没有部署相关的应用服务器,就是说他们有嵌入式java服务器。web
在此文中的应用式java服务器的主要是经过java main方法来启动一个嵌入应用服务器平台,监听某个端口,来持续对本机用户或者和本机相关局域网用户提供应用服务,什么服务就视乎你部署了什么样的应用。、tomcat
嵌入式服务器的核心类服务器
- package com.shine.framework.HttpServer;
-
- import org.mortbay.jetty.Connector;
- import org.mortbay.jetty.Server;
- import org.mortbay.jetty.nio.SelectChannelConnector;
- import org.mortbay.jetty.webapp.WebAppContext;
- import org.mortbay.thread.BoundedThreadPool;
-
- public class HttpServerManager {
- private Server server;
-
-
- public void initJettyHttpServerByWar(String contextName, String warPath,
- String port) {
- initJettyHttpServerByWar(contextName, warPath, port, 100);
- }
-
-
- @SuppressWarnings("deprecation")
- public void initJettyHttpServerByWar(String contextName, String warPath,
- String port, int threadPoolNum) {
- if (server != null && server.isRunning()) {
- System.err.println("请关闭http服务器再重启");
- return;
- }
-
- try {
- server = new Server();
- BoundedThreadPool threadPool = new BoundedThreadPool();
-
- threadPool.setMaxThreads(threadPoolNum);
- server.setThreadPool(threadPool);
-
- Connector connector = new SelectChannelConnector();
-
- connector.setPort(Integer.parseInt(port));
- server.setConnectors(new Connector[] { connector });
- WebAppContext context = new WebAppContext();
-
- context.setContextPath(contextName);
-
- context.setWar(warPath);
- server.addHandler(context);
- server.setStopAtShutdown(true);
- server.setSendServerVersion(true);
-
- server.start();
- server.join();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- @SuppressWarnings("deprecation")
- public void initJettyHttpServer(String contextName, String webPath,
- String port) {
- initJettyHttpServer(contextName, webPath, port, 100);
- }
-
-
- @SuppressWarnings("deprecation")
- public void initJettyHttpServer(String contextName, String webPath,
- String port, int threadPoolNum) {
- if (server != null && server.isRunning()) {
- System.err.println("请关闭http服务器再重启");
- return;
- }
-
- try {
- server = new Server();
- BoundedThreadPool threadPool = new BoundedThreadPool();
-
- threadPool.setMaxThreads(threadPoolNum);
- server.setThreadPool(threadPool);
-
- Connector connector = new SelectChannelConnector();
-
- connector.setPort(Integer.parseInt(port));
- server.setConnectors(new Connector[] { connector });
- WebAppContext context = new WebAppContext(webPath, contextName);
- server.addHandler(context);
- server.setStopAtShutdown(true);
- server.setSendServerVersion(true);
-
- server.start();
- server.join();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void shutdownJettyHttpServer() {
- if (server == null) {
- System.err.println("http没有初始化再重启");
- return;
- }
-
- try {
- if (server.isRunning())
- server.stop();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- public void restartJettyHttpServer() {
- if (server == null) {
- System.err.println("http没有初始化再重启");
- return;
- }
-
- try {
- if (!server.isRunning())
- server.start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- }
调用类app
- package com.shine.framework.HttpServer;
-
- public class Example {
- public static void main(String args[]) {
- HttpServerManager manager = new HttpServerManager();
-
-
-
- manager.initJettyHttpServer("/ManageSystemFlex",
- "E://workspace//ManageSystemFlex//WebContent", "8080");
- }
- }
方法initJettyHttpServerByWar是调用一个war包的web应用程序;webapp
方法initJettyHttpServer是调用一个webcontent的web应用程序;优化
具体用法再深刻研究spa