如何在liferay中创建顶级servlet

时间:2014-01-06 13:05:34

标签: java servlets liferay liferay-6

我想在liferay中创建一个正在侦听诸如

之类的URL的servlet
http://localhost:8080/my-servlet

我尝试将其添加到portlet,但我有URL

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

我尝试将我的servlet描述添加到ext-web的web.xml中,但没有运气。 有没有办法添加这样的servlet?

2 个答案:

答案 0 :(得分:11)

如果要访问Liferay服务API,可以考虑使用PortalDelegateServlet:将以下内容添加到web.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>

将通过

访问您的服务

http://example.org/delegate/myservlet

在您的servlet类中,您可以执行诸如解压缩已登录用户和检查权限之类的操作:

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);
    ...

答案 1 :(得分:5)

Liferay也是“Servlet” - 应用程序 - 但是非常非常大。而Liferay需要一些servlet容器,如tomcat,jetty,jboss等。

但是,您可以简单地创建servlet项目并将其直接部署到运行liferay的servlet容器中。

编辑:并通过servlet映射到web.xml,直接访问“/*”。