我正在嘗試讓一個簡單的嵌入式 tomcat10.1.0-M11示例正常作業,但是localhost refused to connect當我轉到http://localhost:8080/aa. 還沒有 StackOverflow 標簽embedded-tomcat-10。
這是我的代碼:
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
public class App {
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("temp");
tomcat.setPort(8080);
String contextPath = "";
String docBase = new File(".").getAbsolutePath();
Context context = tomcat.addContext(contextPath, docBase);
class SampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("<html><title>Welcome</title><body>");
writer.println("<h1>Have a Great Day!</h1>");
writer.println("</body></html>");
}
}
String servletName = "SampleServlet";
String urlPattern = "/aa";
tomcat.addServlet(contextPath, servletName, new SampleServlet());
context.addServletMappingDecoded(urlPattern, servletName);
tomcat.start();
tomcat.getServer().await();
}
}
依賴項
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>3.0-alpha-1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>10.1.0-M11</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>10.1.0-M11</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper</artifactId>
<version>10.1.0-M11</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jasper-el</artifactId>
<version>10.1.0-M11</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>10.1.0-M11</version>
</dependency>
</dependencies>
更新
我瀏覽了每一個版本,我發現這個錯誤是在版本中引入的,9.0.0.M4從那以后就再也沒有解決過。任何較新的版本都會使這個示例變得無用。
uj5u.com熱心網友回復:
我添加了 2 個解決方案,您可以選擇任何人,因此您的最終主要功能將如下所示:
public static void main(String[] args) throws LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir("temp");
// Solution 1
//tomcat.setPort(8080);
//tomcat.getConnector();
// Solution 2, make server listen on 2 ports
Connector connector1 = tomcat.getConnector();
connector1.setPort(8080);
Connector connector2 = new Connector();
connector2.setPort(8090);
String contextPath = "";
String docBase = new File(".").getAbsolutePath();
Context context = tomcat.addContext(contextPath, docBase);
class SampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
PrintWriter writer = resp.getWriter();
writer.println("<html><title>Welcome</title><body>");
writer.println("<h1>Have a Great Day!</h1>");
writer.println("</body></html>");
}
}
String servletName = "SampleServlet";
String urlPattern = "/aa";
tomcat.addServlet(contextPath, servletName, new SampleServlet());
context.addServletMappingDecoded(urlPattern, servletName);
tomcat.start();
tomcat.getService().addConnector(connector1);
tomcat.getService().addConnector(connector2);
tomcat.getServer().await();
}
uj5u.com熱心網友回復:
如this question中所述,您需要添加一個連接器,可以這樣完成:
...
tomcat.setPort(8080);
tomcat.getConnector();
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448829.html
下一篇:SQL逗號分隔值比較
