如何使用 liferay 6 和 portlet 显示 servlet?

How to display servlet using liferay 6 and portlet?

我正在尝试显示服务。为此,我有一个部署在 liferay 中的 portlet (.war)。我在 liferay 中创建了私有站点,以便在 porlet 中查看不同的页面 (.xhtml)。 我在 web.xml 中定义了一个 url 来显示 servlet 内容。

<servlet>
    <servlet-name>metrics-admin</servlet-name>  
    <servlet-class>com.liferay.portal.kernel.servlet.PortalDelegateServlet</servlet-class>
    <init-param>
        <param-name>servlet-class</param-name>
        <param-value>com.codahale.metrics.servlets.AdminServlet</param-value>
    </init-param>
    <init-param>
        <param-name>sub-context</param-name>
        <param-value>/metric/admin/*</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>    
</servlet>

<servlet-mapping>
    <servlet-name>metrics-admin</servlet-name>
    <url-pattern>/metrics/admin/*</url-pattern>
</servlet-mapping>

但是如果我使用 postman 并尝试 GET 我得到了这个:

我得到了 "Not Found"

这样的页面

我该如何解决?

解决方案是仅添加以下代码:

<servlet>
    <servlet-name>metrics-admin</servlet-name>
    <servlet-class>com.liferay.portal.kernel.servlet.PortalDelegateServlet</servlet-class>
    <init-param>
        <param-name>servlet-class</param-name>
        <param-value>com.codahale.metrics.servlets.AdminServlet</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

如你所见,metrics-admin是servlet名称和访问方式。 正确的 URL 是

<your-url>.<your-domain>/delegate/<servlet-name>

完成 :D