Jboss EAP - сервлет не загружен - PullRequest
0 голосов
/ 30 октября 2018

У меня есть файл войны, содержащий:

META-INF
|___MANIFEST.MF
WEB-INF
|___web.xml
|___classes
    |____servlet
         |____StarterServlet.class

мой web.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5">

    <display-name>WAR</display-name>

    <servlet>
        <display-name>Starter Servlet</display-name>
        <servlet-name>StarterServlet</servlet-name>
        <servlet-class>servlet.StarterServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>StarterServlet</servlet-name>
        <url-pattern>/starter</url-pattern>
    </servlet-mapping>

</web-app>

И мой код сервлета:

package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StarterServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    public void init(ServletConfig servletConfiguration) throws ServletException {

        super.init(servletConfiguration);

        System.out.println("SERVLET STARTED!");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("DOGET!");

        PrintWriter printWriter = response.getWriter();

        printWriter.println("Hello world");
    }
}

Кроме того, мое имя во время выполнения: "война", поэтому я собираюсь найти свой контекстный корень с этим URL:

http://localhost:8080/war/starter.

enter image description here

Основная проблема заключается в том, что мой сервлет не инициализируется, и я не вижу никаких следов в файлах журналов jboss, хотя моя война развернута правильно.

Где я делаю это неправильно?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Благодаря ответу @wirnse я получил решение.

Имя и имя среды выполнения должны всегда содержать расширение внедряемого файла.

Например: application.war должен иметь имя и имя среды выполнения, следующие этому шаблону:

^ [A-Za-Z] +. (Ухо | война | баночка)

myapp.war или war.war

0 голосов
/ 30 октября 2018

Если вы хотите изменить корневой контекст на http://localhost:8080/war/, вам нужно добавить jboss-web.xml в WEB-INF/jboss-web.xml с содержимым:

<jboss-web>
    <context-root>war</context-root>
</jboss-web>

Также оставьте значения по умолчанию в Name и Runtime Name при загрузке войны.

В журнале jboss вы должны увидеть сообщение с Registered web context: /war

...