Как создать сервлет в Liferay портал

Я хотел создать сервлет в liferay, который прослушивает URL-адрес, такой как

http://localhost:8080/my-servlet

Я попытался добавить его в портлет, но у меня есть URL

http://localhost:8080/my-portlet/my-servlet

Я попытался добавить описание сервлета в интернет.xml ext-web, но не повезло. Есть ли способ добавить такой сервлет ?

3 ответов


Liferay также "сервлет" - приложение, но очень-очень большое. И Liferay нужен некоторый контейнер сервлета как tomcat, jetty, jboss etc.

однако вы можете просто создать проект сервлета и развернуть его непосредственно в контейнер сервлета, где работает liferay.

edit: и поставить в интернет.xml с помощью сервлета-отображение прямого доступа, например "/*".


Если вы хотите получить доступ к API службы Liferay, вы можете рассмотреть возможность использования PortalDelegateServlet: добавление следующего в ваш веб.XML-код:

<servlet>
    <servlet-name>myServlet</servlet-name>
    <servlet-class>com.liferay.portal.kernel.servlet.PortalDelegateServlet</servlet-class>
    <init-param>
        <param-name>servlet-class</param-name>
        <param-value>org.example.MyServlet</param-value>
    </init-param>
    <init-param>
        <param-name>sub-context</param-name>
        <param-value>myservlet</param-value>
    </init-param>
</servlet>

сделает ваш servelt доступным через

http://example.org/delegate/myservlet

в вашем классе сервлетов вы затем делаете такие вещи, как извлечение зарегистрированного пользователя и проверка разрешений:

package org.example;

public class MyServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    User user = PortalUtil.getUser(request);
    PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(user);
    ...

следуйте этому образцу, чтобы узнать, как создать путь сервлета в плагине liferay:

https://github.com/liferay/liferay-plugins/tree/master/hooks/sample-servlet-filter-hook