我想在 liferay 中创建一个 servlet,它正在监听一个 URL,例如
http://localhost:8080/my-servlet
我试图将它添加到 portlet,但我有 URL
http://localhost:8080/my-portlet/my-servlet
我试图将我的 servlet 描述添加到 ext-web 的 web.xml 中,但没有成功。 有什么办法可以添加这样的 servlet 吗?
最佳答案
如果您想访问 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);
...
关于java - 如何在 liferay 中创建顶级 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950689/