嵌入式java web_Java嵌入式web服务器(附带源代码)

本文介绍了如何使用Java的Jetty库创建一个嵌入式的Web服务器,可以监听特定端口并提供Web服务。通过示例代码展示了如何启动服务器,包括从WAR包和WebContent目录加载应用,并提供了启动、停止和重启服务器的方法。
摘要由CSDN通过智能技术生成

很多java开发的朋友都是用tomcat做主要的服务器,tomcat无疑有很多优点,tomcat也是最最新的jdk API支持最好的,稳定性相对比较高。但是tomcat的弱点也很明显,tomcat毕竟不是纯java的服务器,java要和tomcat交互需要通过物理的路径或相关接口。造成tomcat的使用非常麻烦。

相信很多人也用过ser-u的ftp服务器,这个是一个老牌但是非常稳定的服务器,也很锐意进取。这个服务器在后期的版本中,他们的控制台又原来的cs模式升级到bs模式,可以说这么进化却是革命性的。bs模式的控制台,在升级和优化都比cs模式要方便。他们可以用bs作为控制台,但是又没有部署相关的应用服务器,就是说他们有嵌入式java服务器。

在此文中的应用式java服务器的主要是通过java main方法来启动一个嵌入应用服务器平台,监听某个端口,来持续对本机用户或者和本机相关局域网用户提供应用服务,什么服务就视乎你部署了什么样的应用。、

嵌入式服务器的核心类

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;

/**

* HttpServerManager

*

* 相关的包

*

*

* @author viruscodecn@gmail.com

* @project JavaFramework 1.0 2011-03-23

*/

public class HttpServerManager {

private Server server;

/**

* 初始化服务器导入war,连接数默认为100

*

* @param contextName

* @param warPath

* @param port

*/

public void initJettyHttpServerByWar(String contextName, String warPath,

String port) {

initJettyHttpServerByWar(contextName, warPath, port, 100);

}

/**

* 初始化服务器导入war

*

* @param contextName

* @param warPath

* @param port

* @param threadPoolNum

*/

@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);

// 启动的war包

context.setWar(warPath);

server.addHandler(context);

server.setStopAtShutdown(true);

server.setSendServerVersion(true);

server.start();

server.join();

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 初始化服务器通过项目路径,线程池默认为100

*

* @param contextName

* @param webPath

* @param port

*/

@SuppressWarnings("deprecation")

public void initJettyHttpServer(String contextName, String webPath,

String port) {

initJettyHttpServer(contextName, webPath, port, 100);

}

/**

* 初始化服务器通过项目路径

*

* @param contextName

* @param webPath

* @param port

*/

@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();

}

}

}

调用类

package com.shine.framework.HttpServer;

public class Example {

public static void main(String args[]) {

HttpServerManager manager = new HttpServerManager();

// manager.initJettyHttpServerByWar("/ManageSystemFlex",

// "C://Users//123//Desktop//ManageSystemFlex.war", "8080");

manager.initJettyHttpServer("/ManageSystemFlex",

"E://workspace//ManageSystemFlex//WebContent", "8080");

}

}

方法initJettyHttpServerByWar是调用一个war包的web应用程序;

方法initJettyHttpServer是调用一个webcontent的web应用程序;

具体用法再深入研究

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值