2014-01-06 8 views
7

erstellen Ich wollte ein Servlet in liferay erstellen, die auf eine URL hören wieWie ein Top-Level-Servlet in liferay

http://localhost:8080/my-servlet 

Ich habe versucht, es zu einem Portlet hinzufügen, aber die ich habe die URL

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

Ich habe versucht, meine Servlet-Beschreibung zu der web.xml von ext-web hinzufügen, aber kein Glück. Gibt es eine Möglichkeit, ein solches Servlet hinzuzufügen?

+0

Können Sie Web-Projekt erstellen und auf Liveray Tomcat bereitstellen? –

+0

Wird dies die oberste Ebene sein oder wird es der URL mit einem eigenen Namen vorangestellt? – Breiti

+0

Es wird Präfix mit Projektname –

Antwort

5

Liferay ist auch "Servlets" -Anwendung - aber ein sehr, sehr groß. Und Liferay benötigt einige Servlet-Container wie Tomcat, Jetty, Jboss etc.

Sie können jedoch einfach Servlet-Projekt erstellen und es direkt in Servlet-Container, wo Liveray läuft, bereitstellen.

edit: und per servlet-mapping einen direkten Zugriff wie "/ *" auf web.xml setzen.

+1

Das stimmt. Manchmal sind die Lösungen wirklich einfach: portal-service.jar kann immer noch verwendet werden ... :) – Breiti

10

Wenn Sie Liferay Service API zugreifen möchten, können Sie prüfen, PortalDelegateServlet verwenden: Hinzufügen Sie folgendes zu Ihrem 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> 

Ihre servelt zugänglich durch

http://example.org/delegate/myservlet

machen

in Ihrer Servlet-Klasse, dann tun Sie Dinge wie extrahieren Sie den angemeldeten Benutzer und prüfen Sie Berechtigungen:

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

klingt fantastisch! Danke für den Hinweis – Breiti

+0

, wie "nicht gefundene Seite" zu verhindern, wenn Zugriff auf URL? – cheloncio