Short: У меня есть проект, который обеспечивает артефакт войны, который включает сервлет с аннотациями, но не web.xml. Если я пытаюсь использовать войну в причале, я всегда получаю только список каталогов военного контента, но не выполнение сервлета.Встраиваемый Jetty не найден Аннотированный сервлет
Любая идея?
Длинная история: Мои сервлеты выглядеть следующим образом
package swa;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(asyncSupported = false, urlPatterns={"/*"})
public class ServletX extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Set response content type
response.setContentType("text/html");
// Actual logic goes here.
PrintWriter out = response.getWriter();
out.println("<h1>Hi there..</h1>");
}
}
Так ничего особенного я думаю. Когда я использую mvn jetty:run
, все в порядке. После обеспечения этого проект упакован в военный архив.
Этот военный архив используется в рамках другого проекта, который должен установить причал в коде. Вот как это делается:
String jettyPort = properties.getProperty("jetty.port", "8080");
Server server = new Server();
ServerConnector httpConnector = new ServerConnector(server, new HttpConnectionFactory());
httpConnector.setPort(Integer.parseInt(jettyPort));
httpConnector.setAcceptQueueSize(2);
httpConnector.setHost("0.0.0.0");
httpConnector.setIdleTimeout(30000);
server.setConnectors(new Connector[] { httpConnector });
WebAppContext wacHandler = new WebAppContext();
wacHandler.setContextPath("/admin");
wacHandler.setWar("swa-0.0.1-SNAPSHOT.war");
wacHandler.setConfigurationDiscovered(true);
server.setHandler(wacHandler);
server.start();
При выполнении этого проекта журналы сообщают мне, что война найдена. Но если я открою url http://localhost:8080/admin
, я вижу только содержимое военного контента (вместо «Привет там»).
Может ли кто-нибудь указать мне на мой отказ?
Можно ли это сделать через jetty xml? –
@JoseMartinez Вопрос был о встроенном причале, использование jetty xml не очень подходит в этой ситуации. Теперь, если вы используете диспетчерский дистрибутив, этот список конфигураций управляется для вас на основе ваших настроенных модулей (см. Документацию jetty.home, jetty.base и start.ini) –
@JoakimErdfelt Возможно ли это сделать без военного файла ? – niklabaz