将我的.war文件重命名为ROOT.war,但仍需输入全名+ / appname

时间:2016-01-15 19:32:44

标签: openshift

我在这里阅读Deploy tomcat application to root in 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 logs after restarting my application via Eclipse

1 个答案:

答案 0 :(得分:2)

好的,现在我知道怎么做了。虽然将我的.war文件重命名为ROOT.war很重要,但我在一个重要位置缺少一个重要的.jsp文件。我添加了&#34; index.jsp&#34;在我的Web应用程序的根目录。在里面我有

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

这里需要的主要内容是第二行。它会将所有调用重定向到http://app-domain.rhcloud.com/http://app-domain.rhcloud.com/main,这实际上是我需要的。我只需输入http://demo-farazdurrani.rhcloud.com/,然后将其重定向到http://demo-farazdurrani.rhcloud.com/main

第一行是可选的(我的解决方案不需要)并且正在执行此操作:需要的页面不需要参与会话。或者,如果在JSP页面中指定了此代码,则意味着会话对象将不可用于该页面。因此,无法为该页面维护会话。 (只是把它放在那里而不是我的问题的必要)。

我将向您展示我的项目结构现在如何:

Eclipse Project Director Structure

在问题的早期,我问我是否需要在web.xml中更改任何内容。不,我不是。那里一切都很好。

赞成答案和问题,如果它对你有所帮助