从EAR内部的WAR内部更改应用程序上下文

时间:2015-01-22 14:40:41

标签: java-ee jboss websphere

是否有机会缩短访问我的servlet的URL? 当前部署的URL为server:port/WebApp/myservlet。 我想将其缩短为server:port/myservlet

servlet位于EAR存档内的WAR存档内。

WebApp.war / WEB-INF

中的web.xml内容
<display-name>WebApp</display-name>
<servlet>
    <description></description>
    <display-name>MyServlet</display-name>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>com.company.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>

这里的Servlet代码:

@WebServlet("/*")
public class MyServlet extends HttpServlet implements Servlet {

    public MyServlet() {
        super();
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // some magic here
    }
}

P.S。:我需要它在JBoss和Websphere上工作。

编辑: 我道歉,我忘了提到我无法使用application.xml更改上下文。

1 个答案:

答案 0 :(得分:1)

您需要将应用程序上下文根目录从/WebApp更改为/,而不是servlet映射。最好的方法是在application.xml文件中定义它,如下所示:

<application>
    <display-name>MyApplication</display-name>
    <module>    
        <web>
            <web-uri>WebApp.war</web-uri>
            <context-root>/</context-root>
        </web>
    </module>
</application>

<强>更新
如果您没有application.xml,那么您需要专有描述符 JBoss - jboss-web.xml请参阅here

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

WebSphere - ibm-web-ext.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-ext
    xmlns="http://websphere.ibm.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://websphere.ibm.com/xml/ns/javaee http://websphere.ibm.com/xml/ns/javaee/ibm-web-ext_1_1.xsd"
    version="1.1">
    <context-root uri="/"/>
</web-ext>