Jetty 是一个开源的 Java HTTP(Web)服务器和 Java Servlet 容器。它提供了一个轻量级、灵活且高性能的平台,用于开发和部署 Web 应用程序。Jetty 支持多种 Java EE 规范,包括 Servlet、JSP、WebSocket 等。
Jetty 可以分为以下几个主要组件:
Jetty 需要 Java 运行时环境(JRE)或 Java 开发工具包(JDK)。确保你已经安装了 Java:
sudo apt update
sudo apt install openjdk-11-jdk
验证 Java 安装:
java -version
你可以从 Jetty 的官方网站下载最新版本的 Jetty。以下是通过命令行下载和解压的步骤:
wget https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.44.v20210927/jetty-distribution-9.4.44.v20210927.tar.gz
tar -xvzf jetty-distribution-9.4.44.v20210927.tar.gz
cd jetty-distribution-9.4.44.v20210927
进入 Jetty 目录并启动服务器:
java -jar start.jar
默认情况下,Jetty 将在 http://localhost:8080
上运行。
你可以通过编辑 etc/jetty.xml
文件来配置 Jetty 的各种参数,例如端口号、连接器类型等。
如果你遇到端口 8080 被占用的错误,可以修改 Jetty 的配置文件来更改端口号。
编辑 etc/jetty.xml
文件:
<Call name="addConnector">
<Arg>
<New class="org.eclipse.jetty.server.ServerConnector">
<Arg name="server"><Ref refid="Server" /></Arg>
<Arg name="factories">
<Array type="org.eclipse.jetty.server.ConnectionFactory">
<Item>
<New class="org.eclipse.jetty.server.HttpConnectionFactory">
<Arg name="config"><Ref refid="httpConfig" /></Arg>
</New>
</Item>
</Array>
</Arg>
<Set name="host"><Property name="jetty.host" /></Set>
<Set name="port">8081</Set> <!-- 修改端口号 -->
</New>
</Arg>
</Call>
如果 Jetty 无法启动,检查日志文件 logs/yyyy_mm_dd.stderrout.log
以获取详细的错误信息。
tail -f logs/yyyy_mm_dd.stderrout.log
根据日志中的错误信息进行相应的调整和修复。
以下是一个简单的 Jetty 服务器示例:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class SimpleJettyServer {
public static void main(String[] args) throws Exception {
Server server = new Server(8080);
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
server.setHandler(context);
context.addServlet(new ServletHolder(new HelloServlet()), "/*");
server.start();
server.join();
}
}
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html");
resp.setStatus(HttpServletResponse.SC_OK);
resp.getWriter().println("<h1>Hello from Jetty!</h1>");
}
}
编译并运行:
javac -cp lib/jetty-server-9.4.44.v20210927.jar:lib/jetty-servlet-9.4.44.v20210927.jar SimpleJettyServer.java
java -cp .:lib/jetty-server-9.4.44.v20210927.jar:lib/jetty-servlet-9.4.44.v20210927.jar SimpleJettyServer
访问 http://localhost:8080
即可看到 "Hello from Jetty!" 的输出。
希望这些信息对你有所帮助!如果有更多具体问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云