Переименовал мой файл .war в ROOT.war, но все еще должен ввести полное имя + / appname

Я прочитал здесь Разверните приложение tomcat для root в openshift, переименовав .war на ROOT.war, вы сможете получить доступ к своему веб-сайту, набрав следующее: http://app-domain.rhcloud.com/ . Поэтому я переименовал его в root.war, но никаких изменений. Мне все еще нужно ввести http://app-domain.rhcloud.com/name-of-war-file

Это мой файл web.xml:

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

<display-name>Advanced Mappings Demo Application</display-name>

<jsp-config>
<jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <url-pattern>*.jspf</url-pattern>
    <page-encoding>UTF-8</page-encoding>
    <scripting-invalid>true</scripting-invalid>
    <include-prelude>/WEB-INF/jsp/base.jspf</include-prelude>
    <trim-directive-whitespaces>true</trim-directive-whitespaces>
    <default-content-type>text/html</default-content-type>
</jsp-property-group>
</jsp-config>
<session-config>
<session-timeout>30</session-timeout>
<cookie-config>
    <http-only>true</http-only>
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>         

А это мой метод onStartUp (я настроил его программно):

@Override
public void onStartup(ServletContext container) throws ServletException
{
AnnotationConfigWebApplicationContext rootContext =
        new AnnotationConfigWebApplicationContext();
rootContext.register(RootContextConfiguration.class);
container.addListener(new ContextLoaderListener(rootContext));

AnnotationConfigWebApplicationContext servletContext =
        new AnnotationConfigWebApplicationContext();
servletContext.register(WebServletContextConfiguration.class); 
ServletRegistration.Dynamic dispatcher = container.addServlet(
        "springDispatcher", new DispatcherServlet(servletContext)
);
dispatcher.setLoadOnStartup(1);
dispatcher.addMapping("/");
container.getServletRegistration("default").addMapping("/resources/*",   "*.css", "*.js", "*.png", "*.gif", "*.jpg");

}

Это журнал моего приложения при развертывании:

Журналы Openshift после перезапуска моего приложения через Eclipse


person Faraz    schedule 15.01.2016    source источник
comment
Вы назвали его ROOT.war или root.war (с учетом регистра; вы упоминаете оба варианта в своем вопросе)? Были ли ошибки развертывания?   -  person Jiri Fiala    schedule 20.01.2016
comment
@JiriFiala Спасибо, что рассмотрели мой вопрос. Я назвал его ROOT.war. Ошибок развертывания не было. Никто. Я вставил сообщения журнала в свой исходный пост. Я перезапустил свое приложение, чтобы посмотреть, есть ли какие-либо ошибки развертывания.   -  person Faraz    schedule 20.01.2016
comment
@JiriFiala Моя проблема решена! Проверь ответ хD   -  person Faraz    schedule 16.02.2016


Ответы (1)


Хорошо, теперь я знаю, как это сделать. Хотя переименовать мой файл .war в ROOT.war было важно, мне не хватало одного важного файла .jsp в важном месте. Я добавил «index.jsp» в корень своего веб-приложения. И внутри него у меня есть

<%@ page session="false" %>
<c:redirect url="/main" />

Главное, что здесь нужно, это 2-я линия. Он будет перенаправлять все вызовы с http://app-domain.rhcloud.com/ на < href="http://app-domain.rhcloud.com/main" rel="nofollow noreferrer">http://app-domain.rhcloud.com/main, который мне действительно нужен. Я просто набираю http://demo-farazdurrani.rhcloud.com/, и он перенаправляет его на http://demo-farazdurrani.rhcloud.com/main

Первая строка является необязательной (не требуется для моего решения) и делает следующее: нужна страница, которую не нужно участвовать в сеансе. Или, если этот код указан на странице JSP, это означает, что объекты сеанса не будут доступны для этой страницы. Следовательно, сеанс не может поддерживаться для этой страницы. (просто разместить это там не обязательно для моего вопроса).

Я покажу вам, как сейчас выглядит структура моего проекта:

Структура директора проекта Eclipse

Ранее в вопросе я спрашивал, нужно ли мне что-то менять в web.xml. Нет, не знаю. Там все в порядке.

Проголосуйте за ответ и вопрос, если он вам помог, спасибо

person Faraz    schedule 16.02.2016