import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.DefaultHandler;
import org.mortbay.jetty.handler.HandlerCollection;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
/**
* Start Jetty Server(Servlet container)
* Dependencies:
* jetty.jar, jetty-util.jar, servlet-api-2.5.6.jar
* (/jsp-2.1) core.jar, jsp-2.1.jar, jsp-api-2.1.jar
* @author louis
*/
public class JettyServer {
static Map<Integer, Server> portServers = new HashMap<Integer, Server>();
static Map<Integer, List<WebAppContext>> webAppContextLists = new HashMap<Integer, List<WebAppContext>>();
public static void main(String args[]) throws Exception {
//http://localhost:8088/CxfHello/HelloWorld?wsdl
deployWebApp("web", "/CxfHello", 8088);
//http://localhost:8080/web-sample1
deployWebApp("C:/temp/web-sample1.war", "/web-sample1", 8080);
//http://localhost:8080/web-sample2
deployWebApp("C:/temp/web-sample2/web", "/web-sample2", 8080);
startServer();
}
static void startServer() throws Exception {
long startTime = System.currentTimeMillis();
for (Integer port : portServers.keySet()) {
Server server = portServers.get(port);
List<WebAppContext> webAppContexts = webAppContextLists.get(port);
Handler[] handlers1 = webAppContexts.toArray(new Handler[webAppContexts.size()]);
//Add DefaultHandler
Handler[] handlers = new Handler[handlers1.length + 1];
System.arraycopy(handlers1, 0, handlers, 0, handlers1.length);
handlers[handlers.length - 1] = new DefaultHandler();
HandlerCollection handlerCollection = new HandlerCollection();
handlerCollection.setHandlers(handlers);
server.setHandler(handlerCollection);
server.start();
}
System.out.printf("Server started in %.3f seconds. %n", ((double) (System.currentTimeMillis() - startTime)) / 1000);
}
static void deployWebApp(String war, String contextPath, int port) throws Exception {
Server server = portServers.get(port);
//1) Set Connector/port
if (server == null) {
server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(port);
server.setConnectors(new Connector[] { connector });
portServers.put(port, server);
}
//2) Set Context 'Context Path' and 'War'
WebAppContext webAppContext = new WebAppContext();
webAppContext.setContextPath(contextPath);
//It can be war file's path or webapp directory
webAppContext.setWar(war);
List<WebAppContext> webAppContexts = webAppContextLists.get(port);
if (webAppContexts == null) {
webAppContexts = new ArrayList<WebAppContext>();
webAppContextLists.put(port, webAppContexts);
}
webAppContexts.add(webAppContext);
System.out.printf("[%s] is ready...%n", contextPath);
}
}
分享到:
相关推荐
5. 启动服务器:调用`Server`对象的`start()`方法,服务器就开始监听指定端口并接受连接。 6. 注册Servlet:如果需要处理Servlet,我们需要将Servlet实例注册到`ServletContextHandler`中,通过`ServletHolder`来...
它提供了Server类,是所有Jetty服务器实例的基础。 2. **jetty-util-9.2.13.v20150730.jar**:这个库包含了各种通用的工具类和实用方法,对其他Jetty模块提供支持,如线程池管理、日志处理等。 3. **jetty-...
通过修改jetty-base目录下的start.ini或web.xml文件,可以定制服务器的行为,比如设置端口号、添加部署应用等。 3. 启动与停止:使用Java命令行启动Jetty非常简单,只需指定jetty-home目录,例如: ``` java -jar...
3. **配置文件**:如`start.ini`或`jetty.xml`,用于配置Jetty服务器的行为。 4. **模块**:各个功能模块,如HTTP服务器、WebSocket、JMX监控等,可以根据需求选择加载。 5. **示例应用程序**:帮助开发者了解如何...
Jetty的配置相对简单,主要通过修改`start.ini`或`jetty.xml`文件来定制服务器行为。你可以设置端口、线程池大小、日志配置等。此外,Jetty还支持热部署,这意味着你可以在不重启服务器的情况下更新Web应用。 6. *...
server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } ``` 以上步骤就完成了一个基本的Jetty服务器配置,它会在8080端口监听TCP连接,并处理通过Servlet发送的HTTP请求。注意,`...
1. 启动 Jetty server:Jetty server 是 Jetty 的核心组件,负责处理请求和响应。 2. 加载配置文件:Jetty 通过读取配置文件来确定启动参数和组件配置。 3. 初始化组件:Jetty 初始化组件,包括 connector、handler...
new XmlConfiguration(new FileInputStream("jetty.xml")).configure(server); } catch (Exception e) { e.printStackTrace(); } try { server.start(); } catch (Exception e) { e.printStackTrace(); } ...
使用Jetty Server API是最基础的嵌入方式,通过创建Server对象,配置Connector(连接器)来监听端口,然后添加Handler(处理器)来处理请求。例如,可以创建一个简单的HTTP服务器,监听8080端口: ```java ...
Server server = new Server(Integer.parseInt(System.getProperty("jetty.port"))); WebAppContext context = new WebAppContext(); context.setWar("path/to/your/webapp"); // 替换为你的Web应用目录 context...
启动 Jetty 服务器需要使用 Server.start() 方法,代码如下: ```java server.start(); ``` 启动 Jetty 服务器后,服务器将开始监听端口号, 并等待客户端的请求。 第六步:停止 Jetty 服务器 停止 Jetty 服务器...
Jetty嵌入项目代码中示例,现我有一示例项目 e:/workspace/web-demo(称为project_home)...把${jetty_home}/start.jar复制到${project_home}/jetty目录下。 接下来在${project_home}/jetty/contexts目录下加一个文件。
server.start(); server.join(); } } ``` 在这个例子中,我们创建了一个Jetty服务器,监听8080端口,并配置了一个Servlet上下文。`ServletHolder`用于注册我们的`HelloServlet`,并指定其处理所有URL(`"/*"`)...
4. **启动Jetty**:执行解压后的目录中的start.jar或相应的启动脚本来启动Jetty服务器。 需要注意的是,虽然这个版本较旧,但理解其工作原理对于学习Jetty的基础知识仍然是有价值的。不过,为了获得最新的功能和...
- 启动Server:调用`Server.start()`启动Jetty服务,`Server.stop()`关闭服务。 4. **示例代码** ```java Server server = new Server(8080); // 创建服务器实例,端口为8080 ServletContextHandler context = ...
"C:\Program Files\Java\jre1.8.0_XX\bin\server\jvm.dll" -Djava.class.path=start.jar -Djetty.home="C:\jetty8" -Djetty.base="C:\jetty8" -jar start.jar --module=http %* ``` 2. 创建服务: ``` sc create...
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class AndroidJettyServer { public void start...
右键点击服务器,选择"Start"或"Debug",Eclipse会启动Jetty服务器并加载你的Web项目。你可以在浏览器中访问`http://localhost:8080/项目名`来查看应用。如果出现错误,Eclipse的Console视图和Error Log视图会有...
**标签"jetty start"** 暗示了这个过程主要是关于启动Jetty服务器的,这可能是一个简单的脚本,用于快速启动和停止Jetty服务,便于开发和测试。 在给定的压缩包文件`StartJetty`中,可能包含了实现上述步骤的Java源...
在源码中,你将看到如何通过`Server`实例来配置端口、线程池、SSL等参数,并通过调用`start()`方法启动服务器。这对于理解Jetty如何运行非常有帮助。 5. **性能优化** Jetty的源码揭示了其性能优化策略,比如使用...